Folha 2. Autómatos e respectivas linguagens 1. Identifique os AFD gerados a partir das seguintes expressões regulares : a) s+ b) s? , que corresponde a s + ∅ c) (s + t) (s + t) d) (s + t)* 2. Determine os AFD que aceitam as seguintes linguagens geradas sobre o alfabeto V = { 0, 1 }. a) O conjunto das frases que terminam por 00. b) O conjunto das frases que possuem uma subfrase formada por uma sequência de três zeros. c) O conjunto das frases cujos blocos de 5 símbolos consecutivos possuem, pelo menos, um zero. d) O conjunto das frases cujo penúltimo símbolo seja zero. 3. Considere o alfabeto V = { 0, 1 }. a) Determine o AFD que aceite a linguagem formada pelo conjunto das frases que possuem a subfrase 1 0 0 1 e terminam com 0. b) Verifique se a frase 1 0 1 0 0 1 1 0 1 0 é aceite pelo AFD. Justifique através da apresentação da sequência dos estados atingidos. 4. Considere o alfabeto V = { F, T }. a) Determine o AFD que aceite a linguagem, sobre V, formada pelo conjunto das frases que se iniciam com a subfrase T F F T , depois do sexto símbolo (inclusive) contenham a sub-frase T T F e terminem com o símbolo F . b) Verifique se a frase T F F T F T T F T F é aceite pelo AFD construído na alínea anterior (apresente a sequência de estados atingidos por cada uma delas) 2 Autómatos e respectivas linguagens 5. Considere o alfabeto V = { 0, 1, 2 }. a) Determine o AFD que aceite a linguagem formada pelo conjunto das frases que se iniciam com a subfrase 0 1 2 , depois contenham a subfrase 2 1 0 2 1 e terminem com o símbolo 1 . b) Verifique se a frase 0 1 2 0 2 1 0 2 1 0 2 1 é aceite pelo AFD construído na alínea anterior (apresente a sequência de estados atingidos por cada uma delas) 6. Considere-se o alfabeto V = { digito, sinal, ponto }. O conjunto de números decimais é gerado pela seguinte expressão regular : (sinal + digito) (digito)* ponto digito (digito)* Identifique o AFD que reconhece a linguagem definida por esta expressão regular. 7. Considere a seguinte expressão regular : (a) (a + b)* b. a) Identifique o AFD que permite reconhecer as sequências definidas pela expressão regular. b) Verifique se o reconhecedor aceita as seguintes entradas como fazendo parte da linguagem definida pela expressão regular : (i) a (ii) b (iii) a b b (iv) a b a 8. Considere a linguagem definida pela seguinte expressão regular : a (b + c) + b (c + ε) a) Indique quais as sequências pertencentes à linguagem indicada : (i) a b c c c b c (ii) a c c c b b c (iii) a b b b b b c (iv) a c b b) Identifique um AFD que modele o reconhecedor da linguagem indicada. De seguida, apresente o AFD equivalente. 9. Identifique a expressão regular que define os números reais de vírgula fixa, mas sem zeros supérfluos à esquerda ou à direita da vírgula. Por exemplo, a linguagem inclui os números 0,0 e 123,01 mas não aceita 0.00 nem 010.0. Indique o AFD que reconheça essa linguagem. 10. Considere a seguinte expressão regular : a (ab* + ba*) b* Converta a expressão regular num AFD. 11. Considere a seguinte expressão regular : (a + b)* + cd (a + b)* Identifique o AFD que modela um reconhecedor da linguagem gerada pela expressão regular. Folha prática 2 Autómatos e respectivas linguagens 3 12. Considere o seguinte protocolo de transmissão de mensagens binárias entre 2 computadores. O início e o fim da transmissão é marcado pelos caracteres, respectivamente, 00 e 11. As mensagens são obrigatoriamente iniciadas por 3 bits, indicativos do seu comprimento. Entre 2 mensagens há um separador constituído pelo padrão 101. Em todas as transmissões há, no mínimo, uma mensagem a transmitir. Um exemplo de transmissão válida de mensagens é dado por : init size msg sep size msg end 00 010 11 101 001 1 11 a) Escreva a gramática descritora da transmissão de mensagens. b) Converta a gramática numa expressão regular. c) Converta a expressão regular num AFD. d) Codifique o reconhecedor na linguagem de programação C. 13. Determine uma gramática regular geradora da linguagem aceite pelo autómato A = (Q, T, M, q0, H) onde Q = { q0, q1, q2, q3 } T = { a, b } H = { q0 } M q0 q1 q2 q3 e M é tal que a q2 q3 q0 q1 b q1 q0 q3 q2 14. Considere a seguinte tabela de transição de um autómato de pilha : q γ s q' γ’ q1 q2 ε ε ε 1 q2 q2 ε γ1 q2 γ1 1 q2 γ1 γ1 q2 γ2 1 q2 γ2 γ1 q2 ε 2 q2 γ2 q2 γ1 2 q2 γ1 γ2 q2 γ2 2 q2 γ2 γ2 q2 q2 ε γ1 3 3 q3 q3 ε γ1 q2 γ2 3 q3 γ2 q3 γ2 2 q3 ε q3 γ1 1 q3 ε Simule o comportamento do autómato de pilha apresentado perante as seguintes situações : a) 1 2 1 1 3 1 1 2 1 b) 1 1 2 1 1 3 1 1 2 1 Folha prática 2 4 Autómatos e respectivas linguagens c) 1 2 1 3 1 2 1 1 d) 1 2 1 1 3 1 1 2 1 1 e) 1 1 2 2 2 2 1 1 15. O autómato de pilha pode ser usado no cálculo de expressões representadas em notação pósfixada. Na notação pós-fixada são apresentados em primeiro lugar os dois operandos e depois o operador : por exemplo, 2 3 * representa 2 × 3. Na notação pós-fixada não há parêntesis, porque a posição dos operadores determina a ordem no cálculo das expressões : por exemplo, 2 3 4 * + representa a expressão 3 × 4 + 2 e 2 3 4 + representa ( 3 + 4 ) × 2. Identifique um autómato de pilha que determina se a expressão de entrada é apresentada segundo a notação pós-fixada. Sugestão : Considere a entrada terminada sempre por um símbolo especial, $. No final do reconhecimento, a pilha do autómato de pilha deve conter um número (o valor da expressão). 16. Identifique um autómato de pilha que reconheça uma linguagem de parêntesis, cujo alfabeto é V = { (, ), [, ], <, > }. 17. Pretende determinar-se um autómato de pilha, A, tal que : L(A) = { an bn : n = 1, 2, ... } Folha prática 2