• Nenhum resultado encontrado

EXEMPLO DAS GRAMÁTICAS

No documento Universidade Norte do Paraná (páginas 26-36)

Gramatica Tipo 0 ou GEF – Gramatica com Estrutura de frase

Qual a menor palavra ou cadeia que podemos encontra nessa gramatica? G1 = ({S,A,B,C,D,E}, {a}, P,S)

P = {1. S →ACaB 5. aD → Da 2. Ca → aaC 6. AD → AC 3. CB → DB 7. aE → Ea 4. CB → E 8. AE → ʎ

Em G1 é onde define-se quais os símbolos terminais que são os símbolos que estão em maiúsculos, e o símbolo não terminal o que está em minúsculo onde temos somente um (a), o P que é onde define as regras de produção e o S é onde se inicia a leitura, sendo assim para descobrirmos a menor palavra deve seguir conforme a regra definida por P:

S → S substitui por ACaB ACaB → Ca substitui por aaC

AaaCB → CB substitui por E A menor palavra encontrada é aa AaaE →aE substituído por Ea

AaEa → aE substitui por Ea AEaa → AE substitui por ʎ aa

Gramatica Tipo 1 ou GSC – Gramatica Sensível ao Contexto Qual a linguagem gerada por esta gramatica?

S → aSBC bB → bb S → aBC bC → bc CB → aB cC → cc aB →ab

27 Para saber qual a linguagem deve-se fazer a derivação das sentenças conforme cada regra

S → irá substituir o S por aSBC aSBC → irá substituir o S por aSBC aaSBCBC → substituiu o S por aBC

aaaBCBCBC → irá substituir o aB por ab aaabCBCBC → irá substituir o CB por BC aaabBCCBC → irá substituir o CB por BC aaabBCBCC → irá substituir o bB por bb aaabbCBCC → irá substituir o CB por BC aaabbBCCC → irá substituir o bB por bb aaabbbCCC → irá substituir o bC por bc aaabbbcCC → irá substituir o cC por cc aaabbbccC → irá substituir o cC por cc aaabbbccc

A linguagem gerada por essa gramatica é L (G) = a^nb^nc^n | n>=1, ou seja, para a mesma quantidade de ‘a’ temos que ter para ‘b’ e ‘c’

Gramática Tipo 2 ou GLC – Gramatica Livre de Contexto Qual a linguagem gerada por esta gramatica?

S → aB B → b S → bA B → bS A → a B → aBB A → aS

A → bAA

Para saber qual a linguagem deve-se fazer a derivação das sentenças conforme cada regra

S → S substitui por aB S → S substitui por S → S substitui por aB aB → B substitui por b bA → A substitui por a aB → B substitui por bS ab ba abS → S substitui por bA

abbA → A substitui por a S → S substitui por bA abba

bA → A substitui por aS baS → S substitui por bA babA → A substitui por a baba

A linguagem gerada por esta gramatica é L(G)= {a,b}* |{ |w|a = |w|b}, ou seja para a mesma quantidade de a temos que ter para b não importa a ordem.

28

S1

Gramatica Tipo 3 ou GR – Gramatica Regular

A linguagem a(ba)* é gerada pelas seguintes Gramáticas Regulares: 1. Linear a Direita G=({S,A}, {a,b}, P, S)

S → aA S → S substitui por aA A → baA | ʎ aA → A substitui por baA

abaA → A substitui por baA ababaA → A substitui por baA abababaA → A substitui por ʎ abababa

Conforme a regra, a linguagem descreve que inicialmente temos que ter um “a” e em seguida segue a ordem “ba” quantas vezes quisermos, a Gramatica Regular linear a direita é quando o símbolo terminal somente pode estar do lado direito da regra.

2. Linear a Esquerda G= ({S}, {a,b}, P, S)

S → Sba S → S substitui por Sba S → a Sba → S substitui por Sba

Sbaba → S substitui por a ababa

Como pedido na linguagem a(ba)*, a diferença entre o linear a direita com o linear a esquerda é que no linear a esquerda o símbolo terminal fica a esquerda. 4.2 EXEMPLO DOS AUTÔMATOS

Autômato Finito Determinístico

Descreva a função de transição do autômato: (c) (a) (b) (c) (b) S0 S2

29 δ (S0,a) = S0 (S0 gerar um ‘a’ ou vários nele mesmo, e voltar para S0) δ (S0,b) = S1 (De S0 para S1 gerar um ‘b’)

δ (S1,c) = S1 (S1 gerar um ‘c’ ou vários para ele mesmo e finalizar) δ (S0,c) = S2 (De S0 para S2 gera um ‘c’)

δ (S2,b) = S2 (S2 gera uma ‘b’ ou vários nele mesmo e finaliza)

A linguagem para o autômato é a*(bc*+cb*) | a>=0, b>=0, c>=0| , a linguagem gerada pelo autômato trais 2 caminhos, onde no primeiro é gerado quantos ‘a’ quiser, pelo fato que acima do S0 ter uma flecha voltada para ele mesmo significa repetição, gerar um ‘b’ para S1 e quantos ‘c’ quiser e finalizar em S1, ou gerar somente um ‘b’ saindo de S0 para S1 e finalizar, no segundo caminho também pode-se gerar quantos ‘a’ quiser em S0 e após gerar um ‘c’ para S2 e no S2 pode-se gerar um ‘b‘ quantas vezes quiser e finalizar, o autômato pode finalizar em S1 ou S2 pelo fato de terem 2 círculos indicando finalização

Autômato Finito Não-Determinístico

Construa a AFND para a seguinte linguagem bcc*(b+a)*

(b) (c) (b,a)

(c) (b,a)

Conforme pede na linguagem pode-se gerar um ‘b’ e um ‘c’, sendo essa sequência obrigatória, no S2 tem a opção de fazer um loop em ‘c’ ou simplesmente finalizar, até essa parte tem-se a linguagem ‘bcc*’ com ‘c*’, pois tem a opção de ser um, nenhum, ou mais de um ‘c’, o entre parêntese é uma opção ou seja você tem a opção de finalizar seu autômato nessa parte ou seguir em frente, se escolher não finalizar de S2 para S3 tem-se a opção de escolher entre ‘b’ ou ‘a’, podendo finalizando em S3 ou gerar um loop entre ‘a’ e ‘b’ antes da finalização.

Autômato com Pilha

Conforme o autômato abaixo verifique se as seguintes cadeias são aceitas ou não pelo autômato, considere que a base da pilha seja o símbolo B.

30 a) aaabb b) aabb <b,A>/ʎ <a,B>/A <b,A>/ʎ <a,A>/AA <ʎ,B>/ʎ

A leitura é um pouco diferente dos demais autômatos, no autômato com pilha a primeira leitura ‘a’ (<a,B>/A) indica o símbolo que está lendo na cadeia, ‘B’ indica o símbolo que está lendo na pilha, e ‘A’ o que irá substituir na pilha pelo símbolo lido.

a)Primeiro vamos ler a linguagem aaabb, conforme primeira regra de S, lemos ‘a’ da cadeia, lemos o que está na pilha ‘B’, pois conforme informado no início a pilha se inicia com ‘B’, e substituímos por A, agora vamos para a segunda letra aaabb, seguindo na segunda regra de S, lemos ‘a’, lemos a pilha ‘A’, e substituímos por ‘AA’, indo para a terceira letra temos aaabb e como na pilha o ultimo que entra é o primeiro a ser lido, lemos ‘a’, lemos ‘A’ da pilha, e substituímos por ‘AA’, indo para a quarta letra temos aaabb, seguimos de S para R, lemos ‘b’, lemos ‘A’ da pilha e substituímos por vazio, agora lemos o ultimo símbolo aaabb ‘b’, e utilizando a última regra de R, lemos ‘b, lemos ‘A’ da pilha e substituímos por vazio, chegamos ao final da cadeia e na pilha ainda contém um símbolo ou seja essa cadeia não é aceita pelo autômato só seria aceita se finaliza-se a leitura e a pilha estivesse vazia

b)Primeiro vamos ler a linguagem aabb, conforme primeira regra de S, lemos ‘a’ da cadeia, lemos o que está na pilha ‘B’, e substituímos por A, agora vamos para a segunda letra aabb, seguindo na segunda regra de S, lemos ‘a’, lemos a pilha ‘A’, e substituímos por ‘AA’, indo para a terceira letra temos aabb e como na pilha o ultimo que entra é o primeiro a ser lido, lemos ‘b’, lemos ‘A’ da pilha e substituímos por vazio, agora lemos o ultimo símbolo aabb ‘b’, e utilizando a última regra de R, lemos ‘b, lemos

B A A A A A A A A A S R

31 ‘A’ da pilha e substituímos por vazio, chegamos ao final da cadeia e na pilha está vazia ou seja essa cadeia é aceita pelo autômato com pilha.

Máquina de Turing

Construa uma máquina de Turing que receba como entrada um número binário e devolva o quadruplo do mesmo

Entrada 0010 = 2 Saída1000 = 8 (0,0,D) (1,1,D) (>,>,D) (β,0,D) (β,0,E) (0,0,E) (1,1,E)

A máquina de Turing tem sua leitura parecida com a leitura do Autômato com Pilha, mas a máquina indica também a direção na leitura.

Começamos lendo o primeiro símbolo 0010, conforme a regra (0,0,D) lemos o símbolo ‘0‘, gravamos o ‘0’ na fita e vamos para a direita na cadeia, 0010, agora lemos o segundo símbolo ‘0’ e conforme a regra de S0 lemos ‘0’, gravamos ‘0’ na fita e vamos para a direita, seguindo 0010 (1,1,D), lemos ‘1’, gravamos ‘1’ na fita e vamos para a direita, seguindo 0010, lemos ‘0 ’, gravamos ‘0’ na fita e vamos para a direita, indo para a direita chegamos em um vazio, na regra de S0 para S1 o β significa vazio, então utilizando essa regra, lemos o vazio, adicionamos um ‘0’ na fita e seguimos para a direita, indo para a direita chegamos em outro vazio de S1 para S2 com a mesma regra, então lemos o vazio, adicionamos um ‘0’ na fita e agora voltamos para a

B A A A A

32 esquerda, e seguimos na regra voltando para a esquerda, lê o ‘0’, grava ‘0’ na fita e vai para esquerda, até que chegue no inicio em (>,>,D), o símbolo > significa o início da cadeia, se a máquina foi até o final e voltou para o início, quer dizer que ela fez a conferencia da palavra e finalizou no símbolo >, agora observe a saída 001000, a entrada inicial era 0010 que é 2 em binário e sua saída seria o quadruplo desse número que seria 1000, ou seja a máquina conseguiu gerar a saída esperada.

0 0 1 0 = 8 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0

33 5 CONSIDERAÇÕES FINAIS

O desenvolvimento do presente trabalho além de possibilitar uma análise de como é o funcionamento dos Sistemas Reconhecedores e Geradores, permitiu também um estudo mais aprofundado no que diz respeito à averiguação de que as principais gramáticas disponíveis são as Gramáticas de Chomsky, ou seja, gramáticas em Teoria da Computação consideradas como dispositivos formais na permissão de uma geração sistemática de todas as frases de uma linguagem. Chomsky apresentou também uma classificação das linguagens estruturadas em frase, de modo que houvesse a possibilidade de realizar a organização em níveis de complexidade crescente partindo do nível 0 até o nível 3, classificação esta, cuja qual ficou conhecida como Hierarquia de Chomsky.

A primeira classificação da Hierarquia é a Gramatica com estrutura de frase, isto é, recursivamente enumerável (GEF) ou tipo 0. Esta, por sua vez, admite qualquer regra de produção, já que se trata de uma gramatica irrestrita e que podem ser aceitas por uma máquina de Turing. A segunda gramática é a Gramática sensível ao contexto ou tipo 1 (GSC), na qual também é aceita por uma máquina de Turing, mas com fita limitada, e requer que a cadeia do lado esquerdo seja igual ao da cadeia do lado esquerdo. Por outro lado, a Gramática livre de contexto ou tipo 2 (GLC), é dita livre de contexto se as suas produções compreenderem exclusivamente um símbolo não-terminal em seu lado esquerdo, e podem ser aceitas por um autômato com Pilha. E finalmente, a Gramática regular ou tipo 3 (GR), que é uma Linguagem regular, pertencente às gramáticas regulares, podem se dividir em quatro tipos sendo 2 delas mais importantes a Gramatica linear à Direita e a Gramática linear a Esquerda e são aceitas por Autômatos Finitos.

. Portanto, conforme analisado para cada classe das linguagens da hierarquia de Chomsky, encontra-se uma classe de máquina reconhecedora e para cada máquina existe uma linguagem.

Sobre os sistemas Reconhecedores, os Autômatos, existe os Autômatos Finitos onde se transporta de estado para estado conforme é repassado em sua entrada, este ainda pode ser do tipo autômato Finito Determinístico ou Autômato Finito Não-Determinístico. O Autômato com Pilha, sendo ele uma amplificação dos Autômatos finitos onde o mesmo adiciona uma memória organizada como uma pilha tendo a

34 principal característica a questão de o ultimo símbolo gravado ser, portanto, o primeiro a ser lido. E então, a Máquina de Turing que também é conhecida como máquina universal. Esta máquina é um Reconhecedor de extrema importância pois ela é capaz de alterar símbolos em uma fita de acordo com uma série de regras para guardar devidas informações.

Portanto, conclui-se que, pelas pesquisas, os Sistemas Geradores são os dispositivos formais providos de mecanismos que permitem a geração sistemática das sentenças de uma linguagem, sendo os principais sistemas geradores as Gramaticas podendo se destacar as Gramaticas de Chomsky, e os Sistemas Reconhecedores, por sua vez, os dispositivos formais que nos possibilitam averiguar se uma sentença de uma linguagem pertence ou não a uma determinada linguagem, dispositivos este que podem ser chamados de Autômatos.

Nesse sentido, a teoria da computacional é muito importante nos últimos tempos pelo simples fato de estarmos a cada dia mais conectados com a tecnologia e com isso a necessidade de entender como determinar quais problemas podem ser computados ou não em um dado modelo de computação, uma vez que com a teoria computacional, com o foco nesses sistemas reconhecedores e geradores abordados é possível estudar modelos de computação genéricos que analisam quais problemas jamais poderão ser resolvidos por um computador seja qual for a velocidade ou memória deste.

35 REFERÊNCIAS

BRAGA, Luis Felipe. Hierarquia de Chomsky. 2006. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Discuss%C3%A3o:Hierarquia_de_Choms ky&action=edit&redlink=1>. Acesso em: 28 set. 2017

BROOKHEAR, J. G., Teoria da Computação, Linguagem Formal, Automato e Complexidade, Benjamin/Cummings, California, E.U.A., 1989. 278 p.

DELAMARO, Márcio Eduardo. Linguagens Formais e Autômatos. UEM, 1998. DIVERIO, T. A.; MENEZES, P. B. Teoria da Computação: Máquinas Universais e Computabilidade, Série Livros Didáticos Número 5, Instituto de Informática, da UFRGS, Editora Sagra Luzzatto, 1a edição, 1999.

HARRISON, M. A., Introdução a Teoria Formal da Linguagem, Addison-Wesley, 1978

HOPCROFT, J. E . & ULLMAN, J. D. Formal Languages and Their Relations to Automata – Addison-Wesley, 1969

HOPCROFT, John E.; ULLMAN, Jeffrey D.; MOTWANI, Rajeev. Introdução a Teoria de Autômatos, Linguagens e computação. 2. ed. Rio de Janeiro: Campus, 2002. 157 p

MENEZES, Paulo Blauth. Linguagens Formais e Autômatos: séries Livros Didáticos. 4.ed. Porto Alegre, 2001. 158p.

NETO, João José. A Teoria da Computação e o profissional de informática. Revista de Computação e Tecnologia. RECET, São Paulo, v.1, n.1, p. 2-7, out 2009. PAPADIMITRIOU, Harry R. Lewis Christos H. Elementos de Teoria da Computação. 2. ed. Porto Alegre: Artes Médicas Sul Ltda, 2000. 332 p.

PESSOA, Julie. Autômatos Finitos não Determinísticos (AFN) e Determinísticos (AFD). PET NEWS, [S.l.], 13 nov. 2012. Jornal PETNews, p. 1. Disponível em: <http://www.dsc.ufcg.edu.br/~pet/jornal/junho2014/materias/recapitulando.html>. Acesso em: 28 set. 2018.

PRADO, Simone G. D., Fundamentação da Teoria da Computação e Linguagens Formais – Apostila, Faculdade de Ciências, 2010.

PRICE, Ana Maria de Alencar; TOSCANI, Simão Sirineo. Implementação de Linguagens de programação: Compiladores.2. ed. Porto Alegre: Sagra Luzzato, 2013. 157 p. (Livros Didádicos).

RAMOS, Marcus Vinícius Midena. Ensino de linguagens formais e autômatos em cursos superiores de computação. Revista de Computação e Tecnologia. RECET, São Paulo, v.1, n.1, 2-13, out 2009.

36 SILVA, Romulo César, WATANABE, R.; CARRELLI, I. M. Autômato defense 2.0: reedição de um jogo educacional para apoio em linguagens formais e Autômatos, In: XXI Simpósio Brasileiro de Informática da Educação, Joao Pessoa – PB, 2010.

SIMEONE, Fernando. Hierarquia de Chomsky. 2015. Disponível em: <https://pt.slideshare.net/fernandosimeone/hierarquia-de-chomsky>. Acesso em: 09 ago. 2018.

Teoria da Computação. 2009. Disponível em:

<https://www.fabriciobreve.com/material/tc/Texto1.pdf>. Acesso em: 08 ago. 2018. VELOSO, Paulo A. S. Máquinas e Linguagens: Uma introdução à teoria de autômatos. Rio de Janeiro: Escola de Computação, 1979. 330 p.

No documento Universidade Norte do Paraná (páginas 26-36)

Documentos relacionados