O Exercício de Autômatos
Por: Marcus Vinicius • 9/4/2019 • Exam • 1.240 Palavras (5 Páginas) • 341 Visualizações
Página 1 de 5
Lista de Exercícios 3
- Mostre três cadeias de tamanho maior ou igual a quatro que podem ser geradas pela
gramática livre de contexto abaixo:
G1 = ({S,J,P,D,E}, {1,2,.}, P1, S),
onde P1 é o conjunto de produções:
[pic 1]
- Diga se a gramática livre de contexto G2 gera as cadeias abaixo. Construa uma de- rivação e uma árvore de derivação para as cadeias que a gramática puder gerar.
G2 = ({S,T}, {a,b}, P2, S),
onde P2 é o conjunto de produções:
[pic 2]
- ε
- aba
- baa
- abba
- aabb
- Uma gramática é dita ambígua sse (se e somente se) for possível criar duas árvores de derivação para uma mesma cadeia terminal. Prove que a gramática livre de con- texto G4 definida abaixo1 é uma gramática ambígua. ().
[pic 3]
- Na gramática livre de contexto abaixo, considere que os não-terminais são os nomes entre os símbolos “<” e “>” e que, nas produções, ao invés da seta (→), são usados a seqüência de símbolos: dois-pointos, dois-pontos, igual (::=). Essa é a formatação conhecida como notação BNF. Com base na gramática abaixo G6, dada nessa no- tação, resolva as questões:
[pic 4]
- Dê um exemplo de derivação de uma cadeia na gramática acima que use ao menos um
. - Mostre uma árvore de derivação para a cadeia.
- Prove que a gramática acima é ambígua.
[pic 5]
1 A partir de agora daremos apenas as produções da gramática. Em geral, as letras maiúsculas serão não- terminais e o não-terminal no lado esquerdo (cabeça) da primeira produção será o não-terminal de início.
- Abaixo, mostramos um exemplo de AP não-determinístico para reconhecer palavras na forma w.wr, ou seja, palavras cuja segunda metade (wr) é o reverso da primeira metade (w). Para cada cadeia abaixo, encontre alguma computação que comprove que ela é aceita pelo autômato.
[pic 6]
- aa
- abba
- bbbb
- O Autômato com Pilha abaixo reconhece as cadeias sobre o alfabeto {a, b} que têm a mesma quantidade de a’s e de b’s. Mostre, nesse autômato, uma computação de aceitação para cada uma das cadeias dadas (todas são aceitas):
[pic 7]
- ba
- aabb
- baba
- bbabaa
- Converta as gramáticas das questões 2 e 3 para Autômatos com Pilha equivalentes.
- Considerando que a Máquina de Turing dada a seguir tem {a,b,c} como alfabeto de entrada e que usa L para representar “esquerda” (left) e R para representar “di- reita” (right), resolva as questões:
- Mostre a computação da cadeia “aabc”. Diga se a cadeia é ou não reconhe- cida e justifique.
- Mostre a computação da cadeia “aabbcc”. Diga se a cadeia é ou não reco- nhecida e justifique.
- Cite um exemplo de cadeia reconhecida e um exemplo de cadeia não reco- nhecida pela MT dada. (Não pode citar as cadeias anteriores).
- Descreva informalmente a linguagem que ela reconhece.
[pic 8]
- Considerando a Máquina de Turing abaixo, que tem {a,b} como alfabeto de en- trada, responda:
- Mostre o estado e a fita a cada passo do processo de reconhecimento da ca- deia “bab”. Ao final, diga se a palavra é ou não reconhecida e justifique.
- Dê dois exemplos de cadeias da linguagem dessa MT e dois exemplos de ca- deias que não são da linguagem dessa MT.
[pic 9]
- Sobre os diferentes modelos computacionais que estudamos, responda:
- Quais os nomes dos modelos.
- Qual o mais poderoso dos modelos? Como são chamadas as linguagens que podem ser representadas com esse modelo?
- Qual o menos poderoso? Como são chamadas as linguagens que podem ser representadas com esse modelo?
- O que é um problema de decisão? O que esse tipo de problema tem a ver com o conceito formal de linguagens?
- Quando um problema de decisão é classificado como decidível?
- Prove que é decidível o problema de testar se um número representado na forma decimal (dígitos de 0 a 9) é par. Prove isso de maneira clara, construindo uma Má- quina de Turing.
- Crie uma gramática livre de contexto em notação BNF para gerar uma seqüência de expressões numéricas separadas por ponto-e-vírgula. Considere que os números da expressão tenham um só dígito de 0 a 9. As operações permitidas serão apenas adição (+) e multiplicação (*). Exemplos de cadeias que a sua gramática deve gerar são: “3”, “1+2*3;7+9”, “2+1;3;4+3+2;2;5*1”.
- Construa uma gramática livre de contexto, usando a notação BNF, para especificar a sintaxe da linguagem de programação descrita informalmente abaixo:
- Um programa é composto de um ou mais procedimentos.
- Cada procedimento é definido assim:
- Inicia com a palavra “proc”
- Depois vem um identificador
- Depois vem um bloco
- Um identificador pode ser qualquer palavra formada apenas por letras
(uma ou mais).
- Assuma que as letras podem ir apenas de ‘a’ a ‘d’.
- Um bloco
- Inicia com “[[“
- Depois vem uma seqüência de comandos, possivelmente vazia
- Termina com “]]”
- Um comando é definido assim:
- Ou a palavra “var” seguida de um identificador seguido de “;” (representa uma declaração de variável).
- Ou um identificador seguido de “<-” seguido de uma expres- são seguida de “;” (representa uma atribuição).
- Ou um identificador seguido da cadeia “();” (representa uma chamada de procedimento).
- Uma expressão é definida assim:
- Uma expressão seguida de “*” seguida de outra expressão.
- Ou “-“ seguido de uma expressão
- Ou simplesmente a cadeia “41”.
- Ou simplesmente um identificador.
- Dê um exemplo de cadeia que possa ser gerada pela gramática que você deu como resposta para a questão anterior. A cadeia deve usar ao menos um comando. Mostre também uma árvore de derivação para a cadeia.
- Dê uma explicação razoável (um esboço de uma prova matemática) para justificar que os seguintes problemas são decidíveis:
- Testar se um dado AFD M aceita a cadeia vazia.
- Testar se um dado AFN M aceita a cadeia vazia.
- Testar se um dado AFD M aceita uma cadeia qualquer w.
- Testar se uma dada expressão regular R gera uma cadeia dada w.
- Testar se um dado AFD M representa a linguagem vazia (ou seja, testar se M
não aceita nenhuma cadeia).
- Testar se uma dada GLC G representa a linguagem vazia (ou seja, testar se G
não gera nenhuma cadeia).
...
Disponível apenas no TrabalhosGratuitos.com