120 likes | 217 Views
Computabilidade e Linguagens Formais. Problemas Notas baseadas em John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. “Introduction to automata theory, languages and computation” . 2nd ed, Addison-Wesley, 2001. Gabriel David / Cristina Ribeiro. Problema 1.
E N D
Computabilidade e Linguagens Formais Problemas Notas baseadas em John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. “Introduction to automata theory, languages and computation”. 2nd ed, Addison-Wesley, 2001. Gabriel David / Cristina Ribeiro
Problema 1 • Considere a linguagem S* em que S= {aa, b}. Quantas palavras de comprimento 4, 5e 6 contém esta linguagem? • O que pode concluir em geral? • Resposta • 4: aaaa, aabb, baab, bbaa, bbbb (5) • 5: aaaab, aabaa, baaaa, aabbb, baabb, bbaab, bbbaa, bbbbb (8) • 6: aaaaaa, aaaabb, aabaab, aabbaa, aabbbb, baabaa, baaaab, baabbb, bbaaaa, bbaabb, bbbaab, bbbbaa, bbbbbb (13)
Problema 2 • (i) Seja S={ab, bb} e T={ab, bb, bbbb}. Mostre que S*=T*. • (ii) Seja S={ab, bb} e T={ab, bb, bbb}. Mostre que S*T*, mas que S* T*. • (iii) Que princípio ilustram estes resultados? • Resposta • (i) S* T*. Se w S* então é constituído por uma sequência de ocorrências de ab e de bb. Ora quer ab quer bb pertencem a T e portanto w T*. • T* S*. Se w T* então é constituído por uma sequência de ocorrências de ab, bb e bbbb. Ora quer ab quer bb pertencem a S e bbbb corresponde a repetir bb que está em S e portanto w S*.
Problema 2 (cont.) • (ii) S* T*. Se w S* então é constituído por uma sequência de ocorrências de ab e de bb. Ora quer ab quer bb pertencem a T e portanto w T*. • S*T*, porque, por exemplo bbb T* mas não a S*, uma vez que as cadeias só com b’s em S* tem que ter comprimento par pois são construídas à custa de repetições de bb. • (iii) o princípio ilustrado é o de que S T S* T*.
Problema 3 • Suponha que numa certa linguagem L se podem sempre concatenar duas palavras e obter uma palavra em L, desde que as duas sejam diferentes, isto é, dadas w1, w2 L, w1w2, então w1w2 L, embora w1w1 não pertença. Mostre que isto não pode acontecer. • Resposta • Se w1, w2 L então w1w2 L e w1w2w1 L e, fazendo x1= w1w2w1 e x2=w2, w1w2w1w2 L. Mas então, fazendo agora x1= w1w2, também x1x1 L, contrariando a hipótese.
Problema 4 • Apesar de alguma semelhanças, as expressões regulares não são polinómios algébricos. Quais das seguintes igualdades são verdadeiras? Justifique. • (i) (a+b)* = (a+b)* + (a+b)* • (ii) (a+b)* = (a+b)* b (a+b)* • (iii) (a+b)* = (a+b)* + a* • (iv) (a+b)* = (a+b)* (a+b)* • (v) (a+b)* = a(a+b)* + b(a+b)* • (vi) (a+b)* = (a+b)*ab(a+b)*+b*a* • Resposta • falsas são (ii), porque exige sempre um b, e (v) porque falta o caso vazio (acrescentar ); na (vi) trata-se primeiro os casos em que existe um ab e com b*a* todos os outros
Problema 5 • Considere a expressão regular e simplifique-a • E = (a+b)*a(a+b)*(a+)(a+b)*a(a+b)* • Resposta • Aplicar a propriedade distributiva • E = (a+b)*a(a+b)*(a)(a+b)*a(a+b)* + (a+b)*a(a+b)*()(a+b)*a(a+b)* • Reconhecer: 1ª operando exige 3 a’s, enquanto que o segundo exige apenas 2, o que inclui o caso dos 3. • Simplifica para: E= (a+b)*a(a+b)*a(a+b)*
Problema 6 • Considere o autómato da figura. Obtenha uma expressão regular que defina a mesma linguagem usando • (i) o método da construção de caminhos • (ii) o método da redução de nós 2 a,b a a Start 4 1 b a b b 3
Problema 6 (cont.) 2 • Rij(k) = Rij(k-1) + Rik(k-1) (Rkk(k-1))*Rkj(k-1) a,b a a Start R12(1)=a+()*a = a 4 1 b a b b 3
Problema 6 (cont.) 2 • Rij(k) = Rij(k-1) + Rik(k-1) (Rkk(k-1))*Rkj(k-1) a,b a a Start 4 1 b a b b 3 R12(2)=a+a()* = a R13(2)=b+a()*a = b+aa R32(2)=b+b()*a = b+ba R12(3)=a+(b+aa)(+ba)*(b+ba) = a+(b+aa)(ba)*(b+ba)
Problema 6 (cont) 2 • Rij(k) = Rij(k-1) + Rik(k-1) (Rkk(k-1))*Rkj(k-1) a,b a a Start 4 1 b a b b 3 R14(4)=aa+(b+aa)(ba)*(b+ba)+(aa+(b+aa)(ba)*(b+ba))(+a+b)*(+a+b)= aa+(b+aa)(ba)*(b+ba)+(aa+(b+aa)(ba)*(b+ba))(a+b)*
Problema 6 (cont) 2 • Eliminar 2 e depois 3 a,b a a Start 4 1 b a b b a,b 3 aa Start 4 1 a,b ba aa+(b+aa)(ba)*(b+ba) b+aa b+ba Start 4 1 3 R= [aa+(b+aa)(ba)*(b+ba)](a+b)* = = [aa+b(ba)*b+b(ba)*ba +aa(ba)*b + aa(ba)*ba](a+b)*= = (aa+bb)(a+b)*