Conceitos básicos de Linguagem; Linguagens regulares;
Expressões regulares;


  1. Dentro da Teoria da Computação, as Ling...
a) (0+1)* == (0*+1*)
  b) (0+1)* == (0*1*)*

12. Escreva uma expressão regular para as seguintes linguagens:

  a) String ...
4- Linguagens geradas por gramáticas regulares;
      5- Linguagens aceitas por AFN;
Quais das alternativas estão corretas...
B → bB|Ba|λ
     Qual a linguagem que essa gramática gera?

  5. A partir da gramática regular construa a expressão regula...
10.0, 10.22, -1.0 (constantes double)
  123.456e-7, 0.12E3 (double em notação científica).

14. Assinale V quando julgar v...
B. L2 = 0*1* = { 0   n   1   m   | n,m ³ 0 }

      C. L3 = ( 0 1 )+ = { (0 1)       n   |n> 0}



  20. Construa uma Gram...
| xy Є L } também é uma linguagem regular.

  11. Mostre que: Se L é uma linguagem regular, então FIM(L) = { y
      | xy ...
5. Mostre que existe um algoritmo para determinar se L1 _ L2,
       para qualquer linguagem regular L1 e L2.

    6. Most...
(q0,0)=(q1)
 (q1,1)=(q1)
 (q1,0)=(q2)
 (q2,0)=(q2)

7. Explique qual a linguagem que o AFD reconhece.

8. Dado o alfabeto ...
(não levando em consideração anos bissextos) no formato
      americano mês/dia, onde mês e dia são representados com
    ...
12. Especifique um AFND para reconhecer o conjunto de palavras
      abc, abd e aacd sobre o alfabeto {a,b,c,d}. Após, con...
que aceitam as linguagens:
 L (M1) = {x Є {0,1}* | | x |0 mod 3 = | x |1 mod 3}
 L (M2) = {x Є {0,1}* | | x | não contém d...
a) L = { 0m1n | m >0, n > 0}
 b) L = { 0m1n | m > 0, n > 2}
 c) L = { 0m1n | m > 0, n > 3}


4. Descreva com as suas palav...
a) (11 + (10)(101)* + 00)*01
b) L = {00, 010, 1001,10011}*


7. Para os autômatos abaixo, determine as expressões regulare...
•    Quando chega a um andar,              o elevador abre
           automaticamente a porta e, ao fim de algum tempo, fe...
b         c
                 q0        q1        q2

                 a         b          c

 5. Minimize o AFD:

  (q0,a...
4. Dada a expressão regular a (b+a*)b*, construa um AFD, e um
   AFD-minimo, se possível.

5. Quais os requisitos para a m...
d)




7. Considera a linguagem de {a, b} definida pela expressão
   regular seguinte:

     (a + b)(aa + bb)*(b + a) + (b...
valor inteiro ímpar}




Funções de transição estendidas. Algoritmo de conversão AFN-
   >AFD.


  1. Se possível converta...
f)




g)




2. Construa um autômato não-determinístico que reconheça
   qualquer linguagem do alfabeto ∑ = {0, 1} das pa...
Converta, pela construção dos subconjuntos, o autômato num
      autômato determinístico.

   4. Seja A o autômato nito de...
8. Dado o AFN abaixo, transforme-o em um AFD equivalente.
   M = {Q,∑ ,Δ, q0, F}, onde:
   Q = {A,B,C,D}
    ∑= {a, b}
   ...
13.      O que é função estendida?
  14.      Dê a formalização da função estendida.


Máquinas de Mealy e de Moore.

  1....
a)




b)




3. “Toda Máquina de Moore pode ser simulada por uma Máquina
de Mealy, para entradas não vazias”, e “Toda Máq...
6. Seja a seguinte Máquina de Moore abaixo, construa uma
   Máquina de Mealy eqüivalente.




7. Qual a principal diferenç...
como projetista-chefe do projeto deve especificar (desenhar) o
     diagrama de uma máquina estados finitos (FSM) que real...
a) elimine os símbolos inúteis
    b) elimine λ produções
    c) elimine produções unitárias

  3. Tenha a gramática livre...
B =>Ac

  h) S =>aAd | A | λ
  A=>Bc | c
  B =>Ac | SS

2. Descreva as seguintes gramáticas em Forma Normal de
   Greiba...
quantidade de a's duas vezes mais que a quantidade de b's.
     a) Obtenha a forma normal de chomsky
     b) Obtenha a for...
a){anbn} n maior ou igual a 1.
        b){0m1n+m} m,n maior que 1.
        c){anbmcj} n diferente de m ou m diferente j.
 ...
δ ( q0, 1 , Z0 ) = { ( q0 , X Z0 )}

 δ ( q0, 1 , X ) = { ( q0 , X X ) }

 δ ( q0, β , Z0 ) = { ( q0 , e ) }

 δ ( q0, 0, ...
GLC que gere apenas a linguagem das fbf.

    10. Dar gramaticas livres de contexto para as seguintes
     linguagens:
   ...
b){0n+m1m} m,n maior que 1.
   c){anbmcj} n diferente de m ou m diferente j.
   d){0n1m} m igual ou maior que n que é maio...
Justifique cuidadosamente suas respostas! Utilize o Lema do
     Bombeamento convenientemente, quando for o caso.
     (a)...
10.        F(n)=n², onde n é maior ou igual a 1.

11.     Tenha na fita o formato $$$, em que entre os $ existem
   {0,1}*...
20.       Seja a expressão booleana (EB) definida indutivamente
     como segue:
     i) v e f são EB;
     ii) Se p e q s...
anterior.

  28.     Descreva uma MT que decida a linguagem {w Є {0,1} *|
     w contém o mesmo número de1’s que 0’s}

  2...
a) L1 = { aibjck | 5≥ i ≥ 0 ; 3≥ j ≥ 1 ; 4 ≥ k ≥ 2 }

  b) L2 = { aibjck | i=j ou j=k, i, j, k ≥ 0 }

  c) L3 = { aibjck |...
3. Constrói e codifique as máquinas de Turing que aceitem cada
     uma das seguintes linguagens.
     (a) {0n1m | n ≥ m}
...
é   classificada   como


     regular. Justifique sua resposta.


        •                        .

        •          ...
escolher, por exemplo, mostrar uma linguagem r.e. que não é
recursiva, além de outras duas escolhas. Não vale usar a
lingu...
S → aAA
     A → aS|bS|a
em PDA que aceite a linguagem por pilha vazia.

22. Converta o PDA em uma gramática livre de cont...
representa, como ela se estrutura, e discuta sua natureza dual
    máquina-linguagem (ou máquina-gramática). OBS: Um desen...
int g(int x)
    {
       /* invoca um procedimento (função) que recebe x e não
    retorna nada */
       p(x);
       /*...
João
                                      An
                      Maria           a

                              Rui

...
a)   Decidíveis (solucionáveis)
     b)   Semi-decidíveis (Parcialmente solucionáveis) (computáveis)
     c)   Indecidívei...
Upcoming SlideShare
Loading in...5
×

Teoria Lista Exercicios 1.0

27,875

Published on

Alguns exercicios de Teoria da Computação:D

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
27,875
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
574
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Teoria Lista Exercicios 1.0"

  1. 1. Conceitos básicos de Linguagem; Linguagens regulares; Expressões regulares; 1. Dentro da Teoria da Computação, as Linguagens Formais constituem um importante tópico. Explique o significado da palavra FORMAIS como adjetivo de Linguagens. 2. Considere o conjunto S = { a b }. Seja a linguagem L = S*. Perguntas: a. quantas palavras de comprimento dois tem essa linguagem? b. quantas palavras de comprimento três tem essa linguagem? c. quantas palavras de comprimento n tem essa linguagem? 3. Sejam: L = {x xxx xxxxx xxxxxxx ...}, a = xxx e b = x. A concatenação das palavras a e b pertence à linguagem L? Por quê? 4. Em qualquer linguagem, qual é o comprimento(Λ)? 5. Defina função reverso. Dê um exemplo. 6. Defina Linguagem Palíndromo. 7. Defina Fechamento de Kleene como conceito de definição de uma linguagem a partir de um conjunto de cadeias. Dê um exemplo. 8. Descreva informalmente as linguagens definidas pelas seguintes expressões regulares: a) (0+1)((0+1)(0+1))*; b) 0*1*. 9. Escreva expressões regulares para as seguintes linguagens: a) O conjunto de todas as cadeias binárias que terminam em 00. b) O conjunto de todas as cadeias sobre o alfabeto {a, b} com comprimento ímpar e com exactamente 2 b’s. 10. Descreva informalmente (por palavras) as linguagens representadas pelas seguintes expressões: a) 0(0+1)*0 b) (01)* c) (0+1)*0(0+1)(0+1) d) 0*10*10*10* e) (0+1)*111(0+1)* 11. Diga se são verdadeiras ou falsas as seguintes afirmações:
  2. 2. a) (0+1)* == (0*+1*) b) (0+1)* == (0*1*)* 12. Escreva uma expressão regular para as seguintes linguagens: a) String em a, b, c, d em que o primeiro “b” é precedido de um “a”; b) Todas as strings que contêm as cinco vogais por ordem alfabética consecutiva. 13. As quantias monetárias são expressas de diferentes formas. Escreva as expressões regulares que permitam fazer o seu reconhecimento das moedas apresentadas na tabela 2.1. Tabela 2.1: Representação de moedas MOEDA EXEMPLO Euro €12,23; €1,00; €2,35; €23,50 EUR Libra £12.50; £22.12; £22.99 Dólar $25.13; $5.00; $0.30; Escudo 12$50; 25$00; 150$00; 0$50 14. Determine V para verdadeiro, F para falso: a) Linguagens é o meio de reconhecimento de palavras. b) Linguagens são formadas por, geradores e reconhecedores. c) Em uma linguagem palavras são um conjunto finito de caracteres. d) Uma gramática fornece as regras para as cadeias de caracteres pertencentes as linguagens 15. Represente com expressões regulares os seguintes enunciados: e) Para o alfabeto {0,1}, onde w contém 01 imediatamente após 10 . f) Para o alfabeto {a,b}, onde w não contem baa. g) Para o alfabeto {0,1}, quantidade de 1's é maior que 0's. h) Para o alfabeto {a,b,c}, onde quantidade de a's é maior que a quantidade de c's + b's. 16. Defina a representação de cada uma das expressões regulares: i) (0+1*)0(1+0)* j) 10*+(0+10) k) ab+ (a+b) l) (a+ b)+(a*b+) 17. Linguagens regulares são: 1- Linguagens aceitas por GR; 2- Linguagens expressas por gramáticas regulares; 3- Linguagens do tipo 3;
  3. 3. 4- Linguagens geradas por gramáticas regulares; 5- Linguagens aceitas por AFN; Quais das alternativas estão corretas, senão, por quê? 18. Qua(l)(is) linguagens podem ser descritas por expressões regulares? 19. Quais os componentes de uma Linguagem formal? 20. Defina os operadores das expressões regulares, e como funcionam cada. 21. O que é alfabeto? 21. Defina o conceito de cadeia. 22. Defina o conceito de linguagem e mostre um exemplo. 23. O que é fechamento de um alfabeto? 24. Como se pode descrever uma linguagem formal? 25. Fale sobre aplicações de LFA. 26. Defina o conceito de subpalavra. 27. Prove que se uma cadeia x é prefixo de uma cadeia y e y também é prefixo de x, então x e y são iguais. 28. Prove que se uma cadeia x é prefixo de uma cadeia y e y é prefixo de uma cadeia z, então x é prefixo de z. 29. Dados L1={a, ab} e L2={λ, a, ba}, linguagens sobre {a, b}, determine: a) L1 U L2 b) L1 ∩ L2 c) L1 – L2 d) L2 – L1 e) L1*L2 f) L2*L1 g) L1² = L1*L1 h) L2² = L2*L2 i) L1 Conceitos de Gramáticas; Gramáticas Regulares 1. Para que servem as gramáticas na teoria da computação? Como funcionam? 2. Dê os formalismos de uma gramática regular. 3. Construa uma Gramática regular linear à direita que gere a linguagem denotada pela expressão regula aa*(ba)*. 4. Seja a gramática regular: S → aS|Ba|a
  4. 4. B → bB|Ba|λ Qual a linguagem que essa gramática gera? 5. A partir da gramática regular construa a expressão regular: a) S→1A|0B|A0 A→ 1A|λ B → 0B b) S → S10|10A A → 1A|λ 6. Construa uma GR que gere strings no alfabeto {a,b} que contenham a seqüência ababb e não contenha a seqüência baba. 7. Construa uma gramática linear à esquerda que contenha, no alfabeto {1,0}, a string 1010. 8. (HU69) Escreva uma gramática regular que gere a seguinte linguagem: L = { w | w ∈ ∑ {0, 1}*, e w não tem dois 1’s consecutivos} 9. 6. Seja ∑ = {0, 1}. Construa uma gramática regular que gere a linguagem: L = { w | número de ocorrências de 01 é igual ao número de ocorrências de 10 }. As ocorrências podem ser sobrepostas. Exemplo: 101 ∈ L (1 ocorrência de cada), mas 1010 ∉ L (1 ocorrência de 01 e duas de 10). 10. Escreva uma gramática regular que gere identificadores de C. Ignore o fato que palavras reservadas não podem ser identificadores. 11. Escreva uma gramática regular que gere identificadores com 1 a 6 caracteres e que comecem por I, J, K, L, M ou N (como as variáveis inteiras de FORTRAN). 12. Escreva uma gramática regular que gere comentários que iniciam por /* e terminam por */, sem */ intervenientes, a menos que figurem entre aspas. 13. Escreva uma gramática regular que gere constantes numéricas da linguagem C. Exemplos de constantes numéricas: 1, 1, -2 (inteiras decimais) 02, 04, -012 (inteiras octais) 0X10, 0x12, 0x1A (inteiras hexadecimais) 1L, 02L, 0x12L (constantes long)
  5. 5. 10.0, 10.22, -1.0 (constantes double) 123.456e-7, 0.12E3 (double em notação científica). 14. Assinale V quando julgar verdadeira, ou F quando julgar falsa cada uma das seguintes afirmações: a. ( ) Sobre uma linguagem L(G), gerada por uma gramática G, podemos dizer que L(G) = {α ∈T*|S =>α } b. ( ) A geração direta acontece pela aplicação de uma regra do conjunto P, transformando uma forma sentencial em outra. c. ( ) Qualquer cadeia que se possa gerar a partir do símbolo de partida de uma gramática é uma forma sentencial desta gramática. d. ( ) Toda sentença de uma gramática pode ser gerada diretamente a partir do símbolo de partida. e. ( ) Toda sentença é uma forma sentencial e toda forma sentencial é uma sentença. 15. Gere as gramáticas para a(ba)*: A. Gramatica Linear a Direita. B. Gramatica Linear à Esquerda. 16. Faça as gramáticas quaram todas as palavras de (a+b)*(aa + bb); A. Gramatica Linear a Direita. B. Gramatica Linear à Esquerda. 17. Escreva uma gramática regular (também chamada linear à esquerda) que gere o conjunto de todos os strings binários que representam números divisíveis por 5. 18. Uma gramática linear à direita é uma gramática livre de contexto em que cada produção deve ser da forma A->Ba, ou A->b, onde a e b são símbolos terminais e A e B são não- terminais. Gramáticas lineares à direita são também equivalentes a DFAs. Explique como converter um DFA em uma gramática linear à direita equivalente. Você pode usar um exemplo para ilustrar o procedimento. 19. Construir gramáticas regulares para as linguagens regulares sobre o alfabeto S {0,1}dadas a seguir: A. L1 = 0+1+ = { 0 n 1 m | n,m > 0 }
  6. 6. B. L2 = 0*1* = { 0 n 1 m | n,m ³ 0 } C. L3 = ( 0 1 )+ = { (0 1) n |n> 0} 20. Construa uma Gramática regular linear à direita que gere a linguagem denotada pela expressão regula aa*(ba)*. Conexão entre expressões regulares e linguagens regulares a) As expressões regulares têm a capacidade de: a) Gerar linguagens regulares; b) Reconhecer Linguagens regulares; c) Denotar as linguagens regulares; Quais dessas alternativas estão corretas? Explique o que está incorreto. b) Qual a importância das expressões regulares para as linguagens regulares? c) Prove que a linguagem {{an bn } n maior igual a 1} não é regular . d) Como provar que uma linguagem está na classe das linguagens regulares. e) Seja a expressão regular (1+10)*. Que linguagem define? f) Seja a expressão regular (0+1)*011). Que linguagem define? g) Qual é a linguagem representada pela expressão regular: a) (1+01+001)*(λ+0+00) b) ((0+1)(0+1))*+((0+1)(0+1)(0+1))* h) Seja Σ = {0,1}. Encontre uma expressão regular para as linguagens: a. L(r) = {w Є Σ* : w tem pelo menos um par de zeros consecutivos}. b. L (r) = {wЄ Σ* : w não tem qualquer par de zeros consecutivos}. 10. Mostre que: Se L é uma linguagem regular, então INIC(L) = { x
  7. 7. | xy Є L } também é uma linguagem regular. 11. Mostre que: Se L é uma linguagem regular, então FIM(L) = { y | xy Є L } também é uma linguagem regular. 12. Mostre que: Se L é uma linguagem regular, então L’ = {a2a1a4a3a6a5. . .anan-1 | a1a2a3. . .an Є L} também é uma linguagem regular. 13. Prove que as linguagens a seguir não são linguagens regulares: a) La = { 0n1n | n ³ 0 } b) Lb = { 0n | n ³ 0 é um número primo} c) Lc = {x xr | x Є {0,1}* e xr é a cadeia reversa de x } d) Ld = { x x | x Є {0,1}* } e) Le = { x Є {0,1}* | | x | 0 = | x | 1 } Propriedades das linguagens regulares e Lema do Bombeamento 1. Use as propriedades das linguagens regulares para a linguagem sobre {a,b} onde a quantidade de a's é maior que de 1's: a) Fechamento b) União c) §§§Concatenação d) intersecção e) Complementação f) Diferença g) Reversão h) Homoformismo 2. Mostra que se L e M são regulares, L M é regular. 3. Seja a linguagem L = {uuRv / u, v Є {a, b}+}. Mostre que esta linguagem embora claramente não seja regular, não pode ser provada pelo lema do bombeamento. 4. Quais das seguintes igualdades são verdadeiras para todas as linguagens regulares e todos os homomorfismos? Justifique. a) h(L1 U L2) = h(L1) U h(L2) b) h(L1 ∩ L2) = h(L1) ∩ h(L2) c) h(Ln) = h(L)n d) h(L*) = h(L)* e) h(LR) = h(L)R f) h(L1 − L2) = h(L1) − h(L2)
  8. 8. 5. Mostre que existe um algoritmo para determinar se L1 _ L2, para qualquer linguagem regular L1 e L2. 6. Mostre que existe um algoritmo para determinar se a intersecção e união de duas linguagens regulares é finita, vazia ou infinita. 7. Seja ∑ = {0, 1}. Mostre que é possível aplicar o lema do bombeamento para as seguintes linguagens regulares. a) L = {w Є ∑* / 0110 é um prefixo de w} b) L = {w Є ∑*/ 0110 é um sufixo de w} c) L = {w Є ∑*/ w = u111v para algum u, v Є ∑*} 8. Mostre que as linguagens sobre _ = {a, b}, definidas a seguir, n˜ao s˜ao regulares. a) L = {w Є ∑* / Na(w) = Nb(w)} b) L = {w Є ∑* / Na(w) ≠ Nb(w)} c) L = {w Є ∑* / u = v para algum prefixo u ≠ λ e sufixo v de w}. d) L = {ambn/ m > n} e) L = {ambn/ m ≠ n} f) L = {anban+1/ n ≥ 1} g) L = {ambn/ 1 ≤ m ≤ n ≤ 2m} h) L = {am+1bn+1/ 2 ≤ n ≤ m ≤ 3n} Autômatos Finitos Determinísticos 1. Formalize um AFD. 2. Qual a funcionalidade dos AFD's. 3. Descreva um AFD e suas propriedades. 4. Qual está correto? • Um AFD Gera uma linguagem regular; • Um AFD é o único formalismo que pode representar uma linguagem regular; • Uma Gramática gera uma linguagem, uma expressão denota uma linguagem e um AFD reconhece a linguagem; 5. Um AFD tem o poder de reconhecer somente as linguagens regulares: Dê sua opinião, se aceita ou não, e explique o por quê de seu posicionamento. 6. Tenha o AFD: (q0,1)=(q0)
  9. 9. (q0,0)=(q1) (q1,1)=(q1) (q1,0)=(q2) (q2,0)=(q2) 7. Explique qual a linguagem que o AFD reconhece. 8. Dado o alfabeto ∑= {a,b}, construa AFDs para as seguintes linguagens: a) {b(ab)nb | n>0} b) { banba | n ≥ 0} c) {ambn | m+n é par} d) {abmba(ab)n | m, n ≥0} 9. Seja ∑= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, construa AFD’s para as seguintes linguagens: a) {x Є ∑* | a seqüência descrita por x corresponda a um valor inteiro par} b) {x Є ∑* | a seqüência descrita por x corresponda a um valor inteiro c) divisível por 5} d) {x Є ∑* | a seqüência descrita por x corresponda a um valor inteiro ímpar} 9. Desenvolva autômatos que reconheçam as seguintes linguagens: a) {w Є{a, b}* | aabb é subpalavra de w} b) {w Є{a, b}* | o sufixo de w é aa} c) {w Є{a, b}* | w uma quantidade ímpar de a e de b} d) {w Є{a, b}* | w possui uma quantidade par de a e ímpar de b ou uma quantidade ímpar de a e par de b} e) {w Є ∑{a, b}* | o quinto símbolo da direita para a esquerda de w é a} 10. Elabore um autômato finito determinístico que aceita a linguagem sobre o alfabeto {0,1} tal que as palavras apresentem a seqüência 01 em qualquer posição, ou seja, L = {x01y | x,y Є{0,1}*} 11. Construa um autômato finito determinístico sobre o alfabeto {0.1} que aceite todas as palavras terminadas em 00. 12. Construa AFDs (Autômatos Finitos Determinísticos) que reconheçam as linguagens abaixo: a) L1 = {w | w Є {0,1}* e w começa por 1 e termina por 0} b) L2 = {w | w Є {0,1}+} c) L3 = {w | w Є {0,1}* e |w| ≤ 3} 13. Descreva um AFD capaz de reconhecer somente datas válidas
  10. 10. (não levando em consideração anos bissextos) no formato americano mês/dia, onde mês e dia são representados com dois dígitos. Autômatos Finitos não-Determinísticos e Autômatos com transições vazias 1. Formalize um AFN. 2. Qual a diferença do AFN e o AFD. 3. Qual a funcionalidade do AFN. 4. Formalize o AFN-λ. 5. Qual dos AF's tem maior capacidade computacional. 6. Segundo a afirmação: • Os AFN, AFN-λ e AFD tem o mesmo poder computacional, as linguagens reconhecidas por um AFD pode ser reconhecida por AFN e AFN-λ. Prove a afirmação usando o lema do bombeamento. 7. Construa um AFN que reconheça as cadeias que possuam abb como sub-string. 8. Tenha uma GR: S → 1A|0B A → 1A|λ B → 0B|λ Construa um AFN 9. Dado um AFN: (q0,1)=(q1,q0) (q0,0)=(q0) (q1,1)=(q1,q2) (q1,0)=(q2) (q2,0)=(q2) Construa um AFN-λ que reconheça a mesma linguagem que o AFN reconhece 10. Construa autômatos finitos não-determinísticos (AFND) que reconheçam as seguintes linguagens sobre Σ= {0,1}: a) L1 = {w | w Є ∑* e w começa por 1 e termina por 0} b) L2 = {w00 | w Є ∑*} c) L3 = {x01y | x,y Є {0,1}*} 11. Mostre um AFND que aceita o conjunto de palavras sobre o alfabeto {0,1,...,9} tal que o dígito final já tenha aparecido antes na palavra.
  11. 11. 12. Especifique um AFND para reconhecer o conjunto de palavras abc, abd e aacd sobre o alfabeto {a,b,c,d}. Após, converta o AFND para o AFD correspondente. 13.Represente graficamente e através da tabela de transições, os AFN capazes de reconhecer as seguintes linguagens: a) String em a,b,c,d em que o primeiro “b” é precedido de um “a”; b) Todas as strings que contêm as cinco vogais por ordem alfabética consecutivas. 14. Represente graficamente e através da tabela de transições, os AF capazes de reconhecer as seguintes expressões regulares e indique se são Determinísticos ou Não Determinísticos: a) aa*|bb* b) (a*|b*)* c) (a|b)*abb(a|b)* d) a(a|b)* 15. Represente um AFND capaz de reconhecer números reais no seguinte formato: ‘inteiro’,‘inteiro’. O número real a reconhecer deverá ter sempre uma vírgula e uma casa decimal, não sendo obrigatória a existência de uma parte inteira. 16. Considere a expressão regular α = (a + b)*a(a + b)n, para algum n >1. Justifique a seguinte afirmação: Existe um autômato finito não-determinístico A com n + 2 estados tal que L(A) = L(α). 17. Construa AFNDs que reconheçam as linguagens geradas pelas ERs abaixo, dando também a sua Especificação Formal Completa. a) (b*ab*ab*ab*)* b) b*aaab* c) (ab + ba)* (aa + bb)* d) ab (abb* + baa*)* ba e) (ab)*(ba)* U aa* f) (ab U aab)* a* g) (ba U b)* U (bb U a)* Reconhecimento de linguagens regulares por Autômatos Finitos 1. Sejam os autômatos finitos:
  12. 12. que aceitam as linguagens: L (M1) = {x Є {0,1}* | | x |0 mod 3 = | x |1 mod 3} L (M2) = {x Є {0,1}* | | x | não contém dois 1’s consecutivos} Utilizando as propriedades das linguagens regulares, pede-se para construir um autômato finito M, a partir de M1 e M2, que aceite a linguagem L, dada por: L = {x Є {0,1}* | | x |0 mod 3 = | x |1 mod 3 e x deve conter dois 1’s consecutivos} 2. Considere os autômatos finitos M1 e M2 a seguir: Utilizando as propriedades das linguagens regulares, e a partir de M1 e M2, construa os autômatos finitos descritos a seguir: a) M3 tal que L(M3) = L(M1)* b) M4 tal que L(M4) = L(M1) . L(M2) c) M5 tal que L(M5) = L(M1) ∪ L(M2) d) M6 tal que L(M6) = (complemento ( L(M1) ) ∪ L(M2) )* e) M7 tal que L(M7) = L(M1) ∩ L(M2) 3. Construa um autômato finito que reconhece as sentenças das linguagens abaixo sobre o alfabeto ∑= {0,1}.
  13. 13. a) L = { 0m1n | m >0, n > 0} b) L = { 0m1n | m > 0, n > 2} c) L = { 0m1n | m > 0, n > 3} 4. Descreva com as suas palavras a linguagem aceita por cada um dos autômatos a seguir: 5. Determine os AF equivalentes as gramáticas regulares abaixo: a) G=({ S, A, B }, { a, b }, P, S) P = { S => aA|bB|λ, A => aA|bB, B => bB|b } b) G=({ S, A, B, C }, { 0, 1, 2 }, P, S) P => { S => 0S|1A|2B|0|0C , A => 1S|1 , B => 2S|2 , C => 0S|0 } 6. Construa autômatos não deterministas com lamba movimentos para as linguagens:
  14. 14. a) (11 + (10)(101)* + 00)*01 b) L = {00, 010, 1001,10011}* 7. Para os autômatos abaixo, determine as expressões regulares das linguagens. O estado inicial de cada autômato é A e os finais estão em negrito. a) Q/ ∑ 0 1 A A B B C B C A B b) Q/ ∑ 0 1 A B C B A C C B A 8. Escreva um autômato finito que aceita a linguagem de todos os strings de 0's e 1's nas quais em qualquer substring de cinco símbolos (consecutivos) ocorrem pelo menos dois 0's. 9. Escreva um autômato finito que aceita a linguagem de todos os strings de 0's e 1's que começam ou terminam (ou ambos) com 01. 10.Considere a linguagem composta pelas cadeias no alfabeto {a, b} que contém a cadeia aaa ou a cadeia bb. Ou seja, a linguagem L = { x y z | x, z Є {a, b}* e ( y=aaa ou y=bb ) }. Construa um afnd M que aceite L. 11.Usando as propriedades das linguagens regulares, construa um autômato finito que reconheça a linguagem L = {an |n Є N e n não é múltiplo de 3 e é múltiplo de 5}. 12.Considere a seguinte descrição de um elevador: • O aparelho movimenta-se entre três andares, podendo estar nos pisos 0, 1 ou 2. • Em cada andar há um botão de chamada único. • Dentro do elevador há três botões a indicar o destino pretendido. • Os botões não têm memória. • Uma vez em movimento, o elevador desloca-se até atingir o destino, ignorando quaisquer outros pedidos, internos ou externos, os quais deverão ser repetidos quando o elevador estiver em condições de os receber.
  15. 15. • Quando chega a um andar, o elevador abre automaticamente a porta e, ao fim de algum tempo, fecha- a também automaticamente. • Chamar um elevador que se encontra no próprio andar também abre a porta. • O elevador com a porta aberta não se desloca. Entradas predefinidas: A, B, C – chamada do andar 0, 1 ou 2, respectivamente; 0, 1, 2 – botão de destino interior ao elevador para o andar indicado. Apresente um autómato que descreva o funcionamento do elevador. Indique o significado de cada estado. Construir uma 1ª versão mais simples, com transições demoradas, e uma 2ª versão mais detalhada, com transições (quase)instantâneas. Equivalência entre Autômatos; Redução de número de estados de autômatos finitos 1. Dado um AFD : (q0,1)=(q1) (q0,0)=(q0) (q1,1)=(q1) (q1,0)=(q2) (q2,0)=(q2) construa um AFN que reconheça a mesma linguagem que o AFD reconhece. 2. Dado um AFN: (q0,1)=(q1,q0) (q0,0)=(q0) (q1,1)=(q1,q2) (q1,0)=(q2) (q2,0)=(q2) Construa um AFN-λ que reconheça a mesma linguagem que o AFN reconhece. 3. Construa um AFD que reconheça a linguagem das cadeias que não possuem 1101 como sub-string: a) Construa um AFN equivalente. b) Construa um AFN-λ equivalente c) Construa um AFD que aceite as cadeias 1101. 4. Encontre um AFN - λ equivalente ao AFD:
  16. 16. b c q0 q1 q2 a b c 5. Minimize o AFD: (q0,a)=(q1) (q0,b)=(q0) (q1,a)=(q2) (q1,b)=(q0) (q2,a)=(q3) (q2,b)=(q2) (q3,a)=(q3) 6. Tenha um AFD obtenha o AFD minimo para a mesma linguagem do AFD inicial: a) (q0,0)=(q1) (q0,1)=(q0) (q1,0)=(q1) (q1,1)=(q2) (q2,0)=(q2) (q2,1)=(q3) b) (q0,a)=(q1) (q0,b)=(q0) (q1,a)=(q1) (q1,b)=(q2) (q2,a)=(q2) c) (q0,1)=(q1) (q0,0)=(q0) (q1,1)=(q1) (q1,0)=(q2) (q2,0)=(q2) 1. Construa um AFD que reconheça as cadeias de comprimento ímpares e, se possível, construa um AFD- minimo para a mesma linguagem. 2. Construa um AFD que reconheça (a + b)+ b*(a+b)* e construa um AFD-minimo, se possível. 3. Construa um AFD que reconheça (b)+ a*(aa+b)* e construa um AFD-minimo, se possível
  17. 17. 4. Dada a expressão regular a (b+a*)b*, construa um AFD, e um AFD-minimo, se possível. 5. Quais os requisitos para a minimização de um AFD. 6. Minimize os seguintes autômatos: a) b) c)
  18. 18. d) 7. Considera a linguagem de {a, b} definida pela expressão regular seguinte: (a + b)(aa + bb)*(b + a) + (b + a)(aa + bb)* (1) a) Descreve informalmente essa linguagem; b) Constrói um autômato nito determinístico mínimo que a reconheça. Indique as palavras que levam o autômato do estado inicial a cada um dos estados. 8. Seja ∑= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, construa AFD’s mínimos para as seguintes linguagens: a) {x Є ∑* | a seqüência descrita por x corresponda a um valor inteiro par} b) {x Є ∑* | a seqüência descrita por x corresponda a um valor inteiro divisível por 5} c) {x Є ∑* | a seqüência descrita por x corresponda a um
  19. 19. valor inteiro ímpar} Funções de transição estendidas. Algoritmo de conversão AFN- >AFD. 1. Se possível converta os seguintes AFN para AFD. a) b) c) d) e)
  20. 20. f) g) 2. Construa um autômato não-determinístico que reconheça qualquer linguagem do alfabeto ∑ = {0, 1} das palavras com um 1 na terceira posição a contar do fim e depois converta-a para um AFD. 3. Considere o autômato nito não-determinístico representados pelo seguinte diagrama:
  21. 21. Converta, pela construção dos subconjuntos, o autômato num autômato determinístico. 4. Seja A o autômato nito de alfabeto {a, b, c} representado pelo diagrama seguinte. a) Qual é a linguagem reconhecida pelo autômato A? Porquê? b) Usando o método da construção de subconjuntos, determineum autômato determinístico que seja equivalente a A. 5. Seja o autômato finito não determinístico (AFND) M = < {q0, q1, q2}, {0,1}, d, q0, {q2} >, com o mapeamento d dado por: d(q0,0) = {q1,q2} d(q0,1) = {q0} d(q1,0) = {q0,q1} d(q1,1) = { } d(q2,0) = {q0,q2} d(q2,1) = {q1} Pede-se: a) Encontre um autômato finito determinístico equivalente ao AFND M dado. b) Descreva L(M) por uma expressão regular. 6. Seja o autômato finito não determinístico (AFND) M = < {q0, q1, q2,{0,1}, d, q0, {q2} >, com o mapeamento d dado por: d(q0,0) = {q1,q2} d(q0,1) = {q0} d(q1,0) = {q0,q1} d(q1,1) = { } d(q2,0) = {q0,q2} d(q2,1) = {q1} Pede-se: a) Encontre um autômato finito determinístico equivalente ao AFND M dado. b) Descreva L(M) por uma expressão regular. 7. Converta em AFD.
  22. 22. 8. Dado o AFN abaixo, transforme-o em um AFD equivalente. M = {Q,∑ ,Δ, q0, F}, onde: Q = {A,B,C,D} ∑= {a, b} Δ= {(A, ,B), (A, ,D), (B, a,B), (B, b,C), (D, 'aba',C)} q0 = A F = {C} 9. Dado o AFN abaixo: M = {Q,∑ ,Δ,q0, F}, onde: Q = {q0, q1} ∑ = {0, 1} Δ = {(q0, 0, q0), (q0, 0, q1), (q0, 1, q1), (q1, 1, q0), (q1, 1, q1)} q0 = q0 F = {q1} a) Construa seu diagrama de transição de estados. b) Transforme-o em um AFD. 10. Projete um AFN que reconheça expressões aritméticas de comprimento arbitrário, que envolva apenas inteiros positivos, separados pelos sinais de adição (+), subtração (-), multiplicação (*) e divisão (/). Não considere expressões peripatetizadas. Depois converta-o para um AFD. 11. Projete um AFN que aceite a linguagem que consiste das cadeias sobre o alfabeto ∑ = {w, x, y, z} nas quais o padrão xy é sempre seguido por um w e o padrão yx é sempre seguido por um z. E converta-o para um AFD. 12. Converta o AFN em um AFD equivalente:
  23. 23. 13. O que é função estendida? 14. Dê a formalização da função estendida. Máquinas de Mealy e de Moore. 1. Construa o diagrama de estados de uma máquina de estados finitos (FSM que realize o controle de um elevador. O elevador deverá respeitar a seguinte especificação: • Se o elevador está parado e o andar requisitado é igual ao andar corrente , então o elevador continua parado. • Se o elevador está parado e o andar requisitado é menor que o andar corrente, então o elevador deve descer para o andar desejado. • Se o elevador está parado e o andar requisitado é maior que o andar corrente, então o elevador deve subir para o andar desejado. Sendo assim: a) Desenhe o diagrama da máquina de estados que realiza esta operação. b) Esta máquina é Moore ou Mealy ? Por quê ? 2. Para cada autômato abaixo, verifique se é uma Máquina de Mealy ou de Moore:
  24. 24. a) b) 3. “Toda Máquina de Moore pode ser simulada por uma Máquina de Mealy, para entradas não vazias”, e “Toda Máquina de Mealy pode ser simulada por uma Máquina de Moore”. Encontre as máquinas de Mealy e Moore equivalentes as máquinas do exercício anterior. 4. Construa uma Máquina de Mealy que reconheça uma palavra w, |w| ≥ 1, tal que w = x+ e produza uma seqüência de saída v = (ab) + , em que |v| = 2|w|. 5. Considere a seguinte Máquina de Moore e verifique sua equivalência com a Máquina de Mealy do exercício anterior.
  25. 25. 6. Seja a seguinte Máquina de Moore abaixo, construa uma Máquina de Mealy eqüivalente. 7. Qual a principal diferença entre uma Máquina de Moore e uma Máquina de Mealy ? 8. Descreva o processo de construção de uma Máquina de Mealy a partir de uma Máquina de Moore, e de uma Máquina de Moore a partir de uma Máquina de Mealy. 9. Construa máquinas de Mealy e de Moore para o problema abaixo: Máquina de atraso de 3 unidades. A máquina recebe uma seqüência formada por cadeias de 0’s e 1’s e emite a mesma saída com 3 unidades de atraso. Para os três primeiros instantes de tempo emita uma seqüência de três 0’s. 10. Construa máquinas de Mealy e de Moore para o problema abaixo: Máquina de atraso de 4 unidades. A máquina recebe uma seqüência formada por cadeias de 2’s e 1’s e emite a mesma saída com 4 unidades de atraso. Para os três primeiros instantes de tempo emita a seqüência '122'. 11. Construa uma Máquina de Mealy que reconheça uma palavra w, |w| ≥ 2, tal que w = x+ e produza uma seqüência de saída v = (ab)* , em que |v| = 3|w|. 12. Construa uma Máquina de Mealy que reconheça uma palavra w, |w| > 0, tal que w = x* e produza uma seqüência de saída v = (ab)* , em que |v| = 2|w|. 13. Qual a característica comum entre as Máquinas de Moore e Mealy? Comente sobre ela, em particular, relacionando-a à não necessidade de existência de estado final na definição dessas máquinas. 14. A empresa de refrigerantes X deseja projetar um circuito que realize o controle de venda de 1 lata de refrigerante na sua máquina de refrigerantes. Para isto o empresa o contratou, você
  26. 26. como projetista-chefe do projeto deve especificar (desenhar) o diagrama de uma máquina estados finitos (FSM) que realize o controle da entrada de moedas na máquina. Se entrar o valor correto a latinha deve sair da máquina, caso contrário, deve voltar para o estado inicial e devolver as moedas. Sabe-se que o preço do refrigerante é um real, e também que a máquina somente aceita moedas de 1 real, 50 centavos e 25 centavos. Porém, a máquina pode aceitar qualquer seqüencia de moedas. Sendo assim: a) Desenhe o diagrama da máquina de estados que realiza esta operação. b) Esta máquina é Moore ou Mealy ? Por quê ? 15. Qual a diferença entre máquinas de estado Moore e Mealy? 16. O que diz a Lei de Moore? 17. Escreva uma maquina que avalia a seguinte expressão: X = (A + B) * (C * D) + E * F 18. Dê a formalização das máquinas de moore e mealy. 19. Como transfomar uma máquina de mealy em uma máquina de moore? Gramática livre de contexto e Métodos para simplificar GLC 1. Construa as gramáticas livres de contexto: a){anbn}n maior ou igual a 1 b){anbmcp}m,n,p diferentes de 0. c) Que gere um palíndromo no alfabeto {a,b}. d)Que gere parênteses balanceados. e){0m1n+m}, em que m,n maiores que 1. f) 0*1(0+1)* g){anbm}n > 2 e m > 1 h){0n1m}n maior ou igual 0 e m > 0 i) {0n1m2x}m maior ou igual 0 e n, x > 0. j) 0(0+1)*0 k)(01)* l) (0+1)*0(0+1)(0+1) m)0*10*10*10* n)(0+1)*111(0+1)* 2. Depois de gerar as gramaticas da questão anterior use os Métodos de simplificação das GLC para:
  27. 27. a) elimine os símbolos inúteis b) elimine λ produções c) elimine produções unitárias 3. Tenha a gramática livre de contexto: S → ASB| λ A → aAS|a B → SbS|A|bb 4. Elabore uma GLC que gere: a) 01*(0+1*). b) (0+1)((0+1)(0+1))*; c) 0*1*. Formas Normais para GLC: Chomsky e Greibach 1. Descreva as seguintes gramáticas em Forma Normal de Greibach: a) S =>AB | SCB A =>aA | C B =>bB | b C=>cC | λ b) S =>aAd | A A =>Bc | λ B =>Ac | a c) S =>A | B | ABS A =>aA | λ B =>aBAb | λ d) S =>AB | CSB A =>aB | C B =>bbB | b e) S => | ABa | AbA A =>Aa | Ƴ B =>Bb | BC C =>CB | CA | bB f) S =>AB | BCS A =>aA | C B =>bbB | b C =>cC | λ g) S =>aAd | A | λ A=>Bc | c
  28. 28. B =>Ac h) S =>aAd | A | λ A=>Bc | c B =>Ac | SS 2. Descreva as seguintes gramáticas em Forma Normal de Greibach: a) S =>AB | SCB | SB | bB | b A =>aA | a | cC | c B =>bB | b C =>cC | c b) S =>aAd | ad | Bc A =>Bc B =>Ac | a | c c) S =>ABS | BS | AS | AB | aA | a | aBAb | aAb | aBb | ab A =>aA | a B =>aBAb | aAb | aBb | ab d) S =>AB A =>aB B =>bbB | b e) S =>AbA | bA | Ab | b | Aa | a A =>Aa | a f) S =>AB | BCS | BS | bbB | b A =>aA | a | cC | c B =>bbB | b C =>cC | c g) S =>aAd | Bc | c A =>Bc | c B =>Ac h) S =>aAd | Bc | c A =>Bc | c B =>Ac | SS | aAd | Bc | c 3. Tenha a gramática livre de contexto: S → ASB| λ A → aAS|a B → SbS|A|bb a) Coloque a gramática na forma normal de chomsky. b) Coloque a gramática na forma normal de greibach. 4. Tenha a GLC que gere a linguagem das palavras que contem a
  29. 29. quantidade de a's duas vezes mais que a quantidade de b's. a) Obtenha a forma normal de chomsky b) Obtenha a forma normal de greibach 5. Elabore uma GLC que gere 01*(0+1*): a) Obtenha a forma normal de chomsky b) Obtenha a forma normal de greibach 6. Converta a seguinte GLC na forma normal de greibach: S → SSS|RS|0 R → RR|SR|1 Autômato de pilha determinístico; Autômato de pilha não- determinístico 1. Assinale V quando julgar verdadeira, ou F quando julgar falsa cada uma das seguintes afirmações. ( ) Autômatos com Pilha só mais poderosos do que AFND's que, por sua vez, só mais poderosos que AFD's. ( ) O símbolo base da pilha de um AP deve ser um elemento do alfabeto S. . ( ) A configuração de um AP em um dado momento pode ser descrita por uma tripla <s, x, a > onde s é o estado corrente, x é a cadeia da fita que falta ser processada e a é o conteúdo da pilha, com o topo no início de a . ( ) Considerando a definição de AP estudada, pode-se afirmar que para uma cadeia ser reconhecida por um AP, o processamento da mesma deve encerrar com um estado final ativo. ( ) Autômato com Pilha é um formalismo que pode ser aplicado no projeto sintético de linguagens computacionais. 2. Fale sobre o poder computacional dos Autômatos com Pilha. 3. Descreva a função de transição dos Autômatos com Pilha. 4. Considerando a definição de Autômato com Pilha estudada, o que deve acontecer para que uma cadeia seja reconhecida? 5. Construa Autômatos de Pilha determinístico que reconheça: a){anbn} n maior ou igual a 1. b){0n+m1m} m,n maior que 1. c){anbmcj} n diferente de m ou m diferente j. d) parênteses balanceados. e) fórmulas de lógica com os operadores =>, <=>, ^, v, ~ f) um valor em real com até 4 caráteres antes da vírgula e 'R$'. Ex. R$ 2000,00 6. Construa Autômatos de pilha não-determinísticos para:
  30. 30. a){anbn} n maior ou igual a 1. b){0m1n+m} m,n maior que 1. c){anbmcj} n diferente de m ou m diferente j. d){0n1m} m igual ou maior que n que é maior que 1. e) uma data. Ex.:20/10/1986 7. Construa Autômatos de pilha a partir das seguintes expressões: a) 0*1* b) 00*11* c) (00)*(11)* d) ((00)*(11)*)* 8. Encontre Autômatos a Pilha que reconheçam por estados finais os seguintes conjuntos: a) L1 = { w ∈ { 0, 1 }* | w contém o mesmo número de 0’s e 1’s } b) L2 = { an bm| n ≤ m ≤ 2*n e n, m > 0 } c) L3 = L(G) onde G = ( { S , A } , { a, b } , P, S ) onde P = { S => a A A , A =>b S | a S | a } 9. Realize as modificações necessárias para transformar os Autômatos a Pilha do exercício anterior para fazer o reconhecimento das sentenças por pilha vazia. 10. Considere a gramática livre de contexto G = ( N, ∑ , P, S ) com produções escritas na Forma Normal de Greibach, onde N={S,A,B} ∑={a,b} P = { S => a B S | a B | b A S | b A A => bAA| a B => aBB | b} Encontre um autômato a pilha M, tal que N ( M ) =L( G ). Autômato de pilha e Linguagem livre de contexto (LLC) 1. Dar a gramática livre de contexto que gere a linguagem N ( M ), onde M é dado por: M = ( Q, ∑ , δ, β , q0, Z0, F ) onde Q = { q0 , q1 },∑ = { 0 , 1 }, δ = { Z0 , X }e δ por:
  31. 31. δ ( q0, 1 , Z0 ) = { ( q0 , X Z0 )} δ ( q0, 1 , X ) = { ( q0 , X X ) } δ ( q0, β , Z0 ) = { ( q0 , e ) } δ ( q0, 0, X ) = { ( q1 , X ) } δ ( q1, 0 , Z0 ) = { ( q0 , Z0 ) } δ ( q1, 1 , X ) = { ( q1 , e ) } 2. Construa um autômato a pilha que reconhece as sentenças das linguagens: a) L1 = { w ∈ { a, b}* | nº(a) = 3*nº(b) ou nº(b) = 3*nº(a) } b) L2 = { w ∈ { a, b, c}* | nº(a) + nº(b) = nº(c) e w não contém dois a’s consecutivos } c) L3 = { 0i 1j 2k | i = j ou j = k , i, j, k >0 } d) L4 = { 0i 1j | i * j é um número par , i, j >0 } 3. Se L1 é uma linguagem livre de contexto então L2 = { w | wR ∈ L1 } é umalinguagem livre de contexto ? (wR representa w invertido) 4. Se L1 e L2 são linguagens livres de contexto sobre ∑, então L1 ∈L2 é livre de contexo? Justifique. 5. Se L é uma linguagem livre de contexto então Init(L) = { x | para algum y, xy ∈L } é uma linguagem livre de contexto ? 6. Mostre que toda a linguagem livre de contexto sobre um alfabeto de um único símbolo é regular. 7. Mostre que se L = { x c y | x, y ∈ {0, 1}* e |x|>|y| } é livre de contexto. 8. Mostre que se L é livre de contexto então L* também é livre de contexto. 9. Para as formulas bem formadas (fbf's) da logica construa uma
  32. 32. GLC que gere apenas a linguagem das fbf. 10. Dar gramaticas livres de contexto para as seguintes linguagens: a) palíndromas sobre o alfabeto {a, b}, b) o conjunto das palavras formadas por parenteses balanceadas, por exemplo (()), ()(), (()()), . . . c) as palavras sobre {a, b, ;, ", ., (, ), } das expressões regulares sobre {a, b}. 11. Considere a GLC G=(V,T,P,S) V={S,A,B} T={0,1} P={S =>A1B, A => 0A | e, B => 0B | 1B | e} Qual a linguagem gerada? Essa linguagem é regular ou livre de contexto? Justifique sua resposta. 12. Construa uma GLC capaz de gerar todo o conjunto de Expressões Regulares válidas sobre o alfabeto {0,1}. Dica: utilize "e" para indicar a palavra vazia da expressão regular. 13. Desenvolva Gramáticas Livre de Contexto (GLC) que geram as seguintes linguagens: a) L = {a,b, c}* b) L = {w | w e {a,b}, com a's sempre no meio da palavra} c) L = {aib2i | i ≥ 1} d) L = {aibjck | i ≥ j ou j ≥ k} 14. Construa Autômatos com Pilha (AP) que reconheçam as seguintes linguagens: a) L = {aib2i | i ≥ 1} b) L = {anbmcn+m | n,m ≥ 0} c) L = {ambn | m ≥ n} Propriedades das linguagens livres de contexto e Lema do Bombeamento 1. Use o lema do bombeamento para provar que as linguagens não são livres de contexto: a){anbmcj} onde n<m<j b){anbncj} onde j é menor que n. c){0n1m} onde m=n². 2. Aplique as propriedades para as linguagens: a){anbn} n maior ou igual a 1.
  33. 33. b){0n+m1m} m,n maior que 1. c){anbmcj} n diferente de m ou m diferente j. d){0n1m} m igual ou maior que n que é maior que 1. 3. Cite as principais propriedades das linguagens livre de contexto. 4. Verifique quais as linguagens abaixo são livres de contexto. As que achar que são livres de contexto, prove que são. a) O conjunto de palavras com mesmo número de 0’s e 1’s b) {x | x ∈ (0+1)* e x = xR} c) {apbq | p < q e p, q ≥ 0} d) {ww | w (a+b)*} e) Linguagem das sentenças bem formadas da lógica proposicional 5. Prove quais as propriedades são válidas para as linguagens livres de contexto: Fechamento sobre união, interseção, complemento, concatenação, fecho. 6. Para os problemas de decisão abaixo, determine quais são decidíveis e quais são indecidíveis. Para os decidíveis proponha um algoritmo abstrato para resolver o problema. a) Dado duas linguagens livres de contexto L1 e L2, elas são equivalentes? b) Dado uma linguagem livre de contexto L e w uma palavra qualquer do alfabeto de L, w ∈ L? c) Seja L uma linguagem livre de contexto, L é vazia? L é finita? L é infinita? d) Seja G uma gramática livre de contexto. G é ambígua? e) Seja L1 e L2 linguagens recursivamente enumeráveis, L1 é equivalente à L2? 7. As linguagens livres de contexto são recursivamente enumeráveis? São recursivas? Justifique. 8. Mostre que as linguagens abaixo não são livres de contexto: a)L = {am bn cm dn | m, n ≥ 0} b)L = {an | n é um quadrado perfeito} c)L = {am bn | m = n2 } d) L = { ww | w ∈ {a, b}* } 9. Quais linguagens abaixo são regulares e quais não são?
  34. 34. Justifique cuidadosamente suas respostas! Utilize o Lema do Bombeamento convenientemente, quando for o caso. (a) {(011)2i : i ≥ 1} (b) {aibj : i ≥ j } Máquinas de Turing e Maquinas de Turing Desterministicas 1. Desenvolva Máquinas de Turing, determinísticas ou não, que aceitam as linguagens: a) L3={w | w tem o mesmo número de símbolos de a e b} b) L4={ w | o décimo símbolo da direita para esquerda é a} c) L5={waw | w é palavra de {a,b}* } e) L6={ww | w é palavra de {a,b}* } f) L7={ wwr | w é palavra de {a,b}* } g) L8 = {www | w é palavra de S*} h) L9 = {w | w = a1 b2 a3b4… an-1bn e n é um número natural par} i) L10 = {w | w = anbn ou bnan} j) L11 = {w | w = aibjck, onde i=j ou j=k} 2. Construa uma MT que reconheça a linguagem L = {wwRw | w ∈ {0,1}*} 3. Formalize a máquina de turing. 4. Construa a maquina de turing para: a) {anbncn} n que é maior ou igual 1. b) linguagem de palíndromos em {a,b}. c) Linguagens que comparam se um número é par ou ímpar. d) F(n)=2n, onde n é maior ou igual a 1. e) tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a divisão. f) tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a multiplicação. 5. Projete uma MT que faz uma da cópia de uma cadeia de entrada na ordem inversa àdireita dessa após um espaço em branco. 6. Construa uma máquina de Turing determinística que aceite a linguagem {xx | x Є{ a, b }* }. 7. Construa uma máquina de Turing determinística que aceite a linguagem {xy | x,y Є { a, b }* e y=2x }. 8. Defina Máquina de turing determinística. 9. Construa uma máquina de Turing determinística que aceite a linguagem {xyw | x,y,w Є{ 1,0 }* e y=2x, w=y/x }.
  35. 35. 10. F(n)=n², onde n é maior ou igual a 1. 11. Tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a Fatorial. 12. Desenvolva Máquinas de Turing que processem as funções: a) Subtração, definida por: m - n, se m > n zero, caso contrário b) Fatorial de n, para n Є N 13. Como, sem perda de generalidade, pode-se supor que a função programa de uma Máquina de Turing seja total? 14. Construir uma Máquina de Turing que compute a soma de dois números naturais escritos em forma binária (Sugestão: Use uma Máquina de Turing com mais de uma fita). Usar um exemplo para mostrar que a Máquina funciona! 15. Construa uma máquina de Turing que calcule a função g: N => N, definida por (resto da divisão inteira de n por 3). 16. Construa uma MT para comparar dois números x, y em representação unária e indicar: x > y responde 1 x < y responde 0 Construa uma TM para computar o quadrado de n. Fita de entrada: ...A111...11B.... (n 1’s) 17. Projete uma TM para calcular o fatorial de n. 18. Projete uma TM de cópia binária que se comporta como indicado no exemplo: Fita inicial : .....A121220...B..... Fita final : .....A121220...B121220... Usar o alfabeto {0,1,2,A,B,x} (8 estados são suficientes!) 19. Projete uma máquina de Turing para reverter uma cadeia de caracteres de 1’s e 2’s.
  36. 36. 20. Seja a expressão booleana (EB) definida indutivamente como segue: i) v e f são EB; ii) Se p e q são EB, então p e q e p ou q também são EB. Assuma que o conetivo e tem prioridade sobre o ou: a) Construa uma Máquina de Turing sobre ∑ = { v, f, e, ou } tal que: ACEITA(M) = { EB | EB é v } REJEITA(M) = { EB | EB é f } LOOP(M) = { W | W não é EB} 21. Projete uma máquina de Turing D que inidica se m divide ou não n, através de seu estado interno. Fita de entrada : ...01m01n0... (m>0, n≥ 0). D eventualmente pára com exatamente a mesma configuração da fita de entrada . 22. Use D da questão anterior como submáquina, projete uma máquina de Turing P que tem como fita de entrada ...01k0... (k≥ 2) e indica através de seu estado interno se k é primo. 23. Uma operação comum em programas de MT´s envolve o “deslocamento”. Projete uma MT que tem uma sub-rotina para efetuar essa operação, durante o reconhecimento da linguagem L = {anbncn |n ≥ 1}, onde a cada símbolo processado é apagado e todos os demais símbolos à direita são deslocados uma casa para esquerda. Por exemplo, se a cadeia de entrada for “aaabbbccc” após o processamento do 1º “a” teremos a cadeia de entrada resultante: “aabbbcccΔ”. 24. Projete uma MT que faz uma da cópia de uma cadeia de entrada na ordem inversa à direita dessa após um espaço em branco. Por exemplo, se entrada “aabbccc” temos como saída “aabbccΔccbbaa”. 25. Descreva uma máquina de Turing com o seguinte comportamento: no inicio a fita tem um input com k 1’s consecutivos. Queremos que a computação acabe sempre e que no final a fita só contenha k+1 1’s consecutivos, estando a cabeça de leitura em cima do 1 mais à esquerda (esta MT calcula a função sucessor suc(k) = k+1). 26. Descreva uma MT que calcule x+y, onde x;y pertencem aos naturais são os inputs. O input da TM é dado por x 1’s consecutivos, seguido de um símbolo branco B, seguido de y 1’s consecutivos. O resultado deve ser calculado em notação unária. 27. Descreva uma MT que calcule max(x;y), onde x;y pertencem aos naturais são os inputs. Os inputs e outputs devem ser dados/obtidos segundo as regras do exercício
  37. 37. anterior. 28. Descreva uma MT que decida a linguagem {w Є {0,1} *| w contém o mesmo número de1’s que 0’s} 29. Descreva uma MT que calcule a função sucessor para inputs definidos em binário sobre {0,1}*. O resultado também deve ser escrito em binário. 30. Descreva uma MT que decida a linguagem A = 0k | k= 2n para n Є N. Máquina de Turing não determinística; outros modelos de Máquina de Turing 1. Dado um alfabeto ∑, construa uma MTND que aceite a linguagem L = $G$w$, onde G é a representação de uma GLC e w é uma sentença sobre ∑. Defina a representação de G de forma conveniente. ($ não está em ∑; você também pode usar símbolos fora de ∑ para representar G). 2. Construa uma MTND que reconheça a linguagem (sobre ∑={0,1,#}), L = { w1#w2#...#wn | wi = i na base 2, para algum i}. 3. Construa uma MT que reconheça a linguagem L = {wwRw | w ∑{0,1}*} 4. Projete uma maquina de turing não-determinística que aceite: a) X>y retorne true, senão false. b) O fatorial de x. 5. Projete uma máquina de turing com duas fitas que: a) retorne se uma cadeia é maior que a outra. b) retorne a soma das cadeias 6. Projete uma máquina de turing com três fitas que: a) retorne a divisão de duas cadeias b) retorne o fatorial de duas cadeias 7. projete uma máquina de turing com múltiplas fitas que retorne o exponencial de uma cadeia. 8. Para cada uma das linguagens abaixo, forneça 3 exemplos de cadeias que pertençam a elas, e contrua as máquinas de turing não deterministicas para cada uma delas:
  38. 38. a) L1 = { aibjck | 5≥ i ≥ 0 ; 3≥ j ≥ 1 ; 4 ≥ k ≥ 2 } b) L2 = { aibjck | i=j ou j=k, i, j, k ≥ 0 } c) L3 = { aibjck | i=j=3 e k≥ 0, ou j=k=4 e i ≥ 0 } d) L4 = { aibj | i=2j , " i, j≥ 0 } e) L5 = { aibj | 0 ≥ i ≥ 5 e 0 ≥ j ≥ 10 } 9. Projete uma máquina de Turing com múltiplas fitas para efetuar: a) Soma de dois números naturais b) Multiplicação de dois números naturais d) divisão de dois números naturais e) exponencial de dois números naturais f) verificar parenteses balanceados g) verificar se uma equação química está balanceada h) verificar um endereço válido de e-mail i) um valor em reais. Ex.: R$ 200,00 Codificação de Máquinas de Turing 1. Construa maquina de turing e sua codificação: a) {anbncn} n que é maior ou igual 1. b) linguagem de palíndromos em {a,b}. c) Linguagens que comparam se um número é par ou ímpar. d) F(n)=2n, onde n é maior ou igual a 1. e) tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a divisão. f) tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a multiplicação. g) Tenha na fita o formato $$$, em que entre os $ existem {0,1}*, faça a Fatorial. 2. Construa e codifique máquinas de Turing que aceite as linguagens: a) La = { 0n 1n 2n | N >0 } b) Lb = { i ( + i ) n |n>0} c) Lc = { w c y |w , y Є { 0, 1 } * e w Є y } d) Ld = { x Є { 0, 1 } * | x contém o mesmo número de 0’s e 1’s } e) Le = { 0 i 1 j 2 k | i = j ou j = k , com i, j, k > 0}
  39. 39. 3. Constrói e codifique as máquinas de Turing que aceitem cada uma das seguintes linguagens. (a) {0n1m | n ≥ m} (b) {anbncn | n ≥ 0} (c) {1p01q01n | p + q = n} (d) as palavras de {a, b} com mais a's que b's (e) {an2| n ≥ 1} (f) {a2n| n ≥ 1} (g) {ap | p primo} (h) {wwr | w Є {a, b}*} (i) {w@w | w Є {a, b}*} (j) {ww | w Є {a, b}*} (k) {xcnxR | x Є {a, b}*, |x| = n} (l) {0n1m2k3l | n, m, k, l ≥ 0, n = 3k e m = l} (m) {aibjck | i, j, k ≥ 0 j = 2i e k = i} Hierarquia das Linguagens Formais e Linguagens recursivas; A hierarquia de Chomsky; e introdução às linguagens recursivas; Linguagens recursivamente enumeráveis; Gramáticas não-restritas; e Gramáticas sensíveis ao contexto 1. Segundo a hierarquia: a) linguagem tipo3 b) Linguagem Recursivamente enumerável c) Linguagens livres de contexto d) Linguagem sensíveis ao contexto 2. Defina linguagens recursivas 3. Dê exemplos de linguagens recursivas. 4. Seja L uma linguagem recursiva. A linguagem L' formada pelas strings revertidas de L é recursiva? Justifique . 5. Quando uma linguagem é recusiva? 6. Quando uma linguagem é recussivamente enumerável? 7. “Uma linguagem L ⊆ A∗ é recursiva se e só se existe uma máquina de turing T que reconhece L e é tal que a configuração inicial de qualquer palavra U pertencente a L.” Esta afirmação está correta? Justifique. 8. Classifique as linguagens abaixo no nível mais restrito possível. Por exemplo a linguagem
  40. 40. é classificada como regular. Justifique sua resposta. • . • . • • • 9. Marque (V) ou (F) justificando. ( )Todo subconjunto de um linguagem recursiva é uma linguagem recursiva. ( )A união de linguagens recursivamente enumeráveis é r.e. ( )A interseção de linguagens r.e. é r.e. ( )O conjunto das linguagens r.e. cujo complemento também é linguagem r.e. é o conjunto das linguagens recursivas. ( )Todas as classes de linguagens da hierarquia de Chomsky, exceto a classe das não-r.e., possuem a mesma cardinalidade. 10. Se L é recursiva, então: {w | wR L } é recursiva? Recursivamente enumerável? Justifique detalhadamente sua resposta. 11. Se L1 e L2 são recursivos então: a) L1 ∪ L2 é recursiva? b) L1 ∩ L2 é recursiva? c) L¯ 1 é recursiva? d) L1 - L2 é recursiva? e) L* é recursiva? 12. Descreva a Hierarquia de Chomsky, tanto do ponto de vista das gramáticas quanto dos autômatos. Não se esqueça de lembrar que com relação aos autômatos temos tanto versões determinísticas quanto não-determinísticas. Depois escolha 3 tipos (distintos) de linguagens na hierarquia. Para cada tipo escolhido mostre um exemplo de linguagem que pertença a ele e não pertença ao tipo imediatamente mais restrito. Você pode
  41. 41. escolher, por exemplo, mostrar uma linguagem r.e. que não é recursiva, além de outras duas escolhas. Não vale usar a linguagem da questão 3. 13. Seja L uma linguagem recursiva sobre {0, 1} e L’ = {w’ | w Є L tq |w| = |w’| e todas as posições onde ocorre 1 em w também ocorre 1 em w’}. L’ é recursiva? L’ é recursivamente enumerável? 14. Escreva uma gramática sensível ao contexto que gere as sentenças sobre å= {a, b, c} que possuem um número igual de a’s, b’s e c’s. 15. Escreva uma gramática sensível ao contexto que gere a linguagem ∑= {0, 1}. 16. L = { ww | w Є ∑* }, isto é sentenças cuja primeira metade é igual a segunda. 17. Construa uma GSC (Gramática Sensível ao Contexto) G | a) L(G) = { an bn cm | n ≥ 0, m ≥ 0 ∧ n ≠ m } b) L(G) = { an bm cp dq| n,m,p,q ≥ 0 ∧ n > p ∧ q < m } c) L(G) = { x | x Є ( a, b,c)* ∧ #a’s ≠ #b’s ≠ #c’s} d) L(G) = { x | x Є (a)* (b, c,d)+ ∧ #a’s > #c´s ∧ #b’s < #d’s } 18. Use o algoritmo que mostra que as linguagens sensíveis ao contexto são recursivas, e determine se as cadeias abaixo pertencem à linguagem gerada por G. (Qual é o tipo de G?) G=({S, A}, {a, b}, {S→aAS, S→a, A→SbA, A→ba, A→SS}, S): a) abaa b) abbb c) baaba 19. Transforme a seguinte gramática em uma gramática na forma normal de Chomsky . G=({S, M, N}, {x, y, z}, {S → MzSzN, S → λ, M → xM, M → x, N → yN, N → z}, S); 20. Converta a gramática S → 0S1|A A → 1A0|S|λ em PDA que aceite a linguagem por pilha vazia. 21. Converta a gramática
  42. 42. S → aAA A → aS|bS|a em PDA que aceite a linguagem por pilha vazia. 22. Converta o PDA em uma gramática livre de contexto. a) (q0,a)=(q0,?,A) (q0,a)=(q0,λ,A) (q0,b)=(q0,A,λ) (q0,λ)=(q1,λ,λ) b)(q0,()=(q0,?,A) (q0,()=(q0,λ,A) (q0,))=(q0,A,λ) (q0,λ)=(q1,λ,λ) 23. Para as formulas bem formadas da logica faça: a) Construa uma GLC que gere apenas a linguagem das fbf. b)Construa um PDA que aceite apenas a linguagem das fbf. 24. Se L1 ⊆ Σ* e L2 ⊆ Σ* são linguagens, o quociente de L1 por L2 à direita é definido como: L1/ L2 = {w| w ∈ Σ* : ∃ u ∈ L2 tal que wu ∈ L1}; Mostre que se L1 é livre de contexto e R é regular, então L1/R é livre de contexto (lembre-se das propriedades de fechamento; 25. Mostre que se L é livre de contexto então L ∈ P. 26. Prove que, se A ⊆ B, e A é não enumerável, então B é não enumerável. 27. Mostre que o conjunto dos números reais no intervalo [0, 1] é não enumerável. 28. Dada uma linguagem sensível ao contexto específica (LS), é possível construir um autômato finito, um PDA, um autômato limitado linearmente, e uma máquina de Turing que a reconheça? Responda considerando cada máquina individualmente. 29. É possível construir um autômato finito que seja capaz de reconhecer uma linguagem recursivamente enumerável? 30. Segundo a hierarquia de Chomsky, de que tipo podemos afirmar que é a gramática definida por: G = ( {0,1}, {A, B, C, S}, S , P ), com P = {S=>1AA , SA=>0A01 , S=>Ƴ , A=>Ƴ , S=>1S}? 31. O que é a Hierarquia de Chomsky? Esclareça o que ela
  43. 43. representa, como ela se estrutura, e discuta sua natureza dual máquina-linguagem (ou máquina-gramática). OBS: Um desenho apenas, sem comentários, não basta! 32. Seja L a linguagem recursivamente enumerável reconhecida pela máquina de Turing TL. Em termos do comportamento de TL, diga o que acontece no caso de TL receber como entrada uma cadeia w1 Є L, e no caso de receber a cadeia w2 Є Lb, onde Lb é o complemento de L (isto é, L Є Lb = ∑*). 33. Para cada uma das linguagens abaixo, forneça 3 exemplos de cadeias que pertençam a elas, e discuta qual poderia ser a máquina mais simples – entre as que aparecem na Hierarquia de Chomsky – que pode ser usada como um reconhecedor delas: a) L1 = { aibjck | 5 ≥ i ≥ 0 ; 3 ≥ j ≥ 1 ; 4 ≥ k ≥ 2 } b) L2 = { aibjck | i=j ou j=k, i, j, k ≥ 0 } c) L3 = { aibjck | i=j=3 e k≥ 0, ou j=k=4 e i ≥ 0 } d) L4 = { aibj | i=2j ,  i, j ≥ 0 } e) L5 = { aibj | 0 ≤ i ≤ 5 e 0 ≤ j ≤ 10 } Computabilidade, Complexidade e Decibilidade 1. Considere o problema de determinar se um AFD e uma expressão regular são equivalentes. Expresse esse problema como uma linguagem e mostre que ele é decidível. 2. Considere o seguinte problema de decisão: dada uma linguagem arbitrária L sobre um alfabeto Σ definida por uma gramática de estrutura de frase G = (V, Σ, R, S), e uma cadeia arbitrária w *, w pertence a L? Este problema é decidível? Justifique. 3. Prove que o problema seguinte é indecidível: dados dois programas e uma entrada, determinar se os dois programas produzem a mesma saída para a entrada dada. Sugestão: considere os dois programas seguintes e tire partido do facto do problema da terminação ser indecidível. int f(int x) { /* retorna sempre 0 independentemente do valor de x */ return 0; }
  44. 44. int g(int x) { /* invoca um procedimento (função) que recebe x e não retorna nada */ p(x); /* retorna sempre 0 independentemente do valor de x */ return 0;} 4. Escolha uma enumeração de ∆*. Para essa enumeração, descreva algoritmos que permitam: a) dado um natural i, determinar a cadeia xi de ∆* correspondente. b) dada uma cadeia x em Σ*, determinar o natural i tal que x = xi. c) dada uma cadeia xi em ∆*, determinar se xi é ou não a representação de uma mT. 5. O conjunto das funções computáveis é fechado por minimização ilimitada. 6. Existem mais funções computáveis do que não-computáveis Problema da Parada; Classes de problemas P e NP 1. Diz-se que um problema de decisão L pertence à classe P (polinomial) se existe uma máquina de Turing determinística (em última instância, um algoritmo) que aceita todas as entradas de L num número de passos polinomial no tamanho da entrada e rejeita todas as entradas que não são de L num número finito de passos (sem entrar em ciclo infinito). Com base nesta definição, mostre que os seguintes problemas pertencem à classe P: a) verificar se um número binário é maior do que outro (por exemplo, a máquina de Turing deve aceitar a cadeia 100>11, mas deve rejeitar a cadeia 100>100) ; b) verificar se um número binário é divisível por outro; (** trabalhoso) c) verificar se um número binário é primo (*** extremamente difícil, resolvido em 2002). 2. Considere o seguinte problema (problema dos convidados): Dado um conjunto P de pessoas e um conjunto I de incompatibilidades entre pares de pessoas em P, existe alguma maneira de dispor essas pessoas numa mesa redonda de forma a que não fiquem lado a lado duas pessoas incompatíveis? Por exemplo, dados P = {João, Maria, Ana, Rui} e I = {(João, Rui), (Maria, Ana)}, uma disposição possível é:
  45. 45. João An Maria a Rui Se, adicionalmente, o João for incompatível com a Ana, não existe nenhuma disposição possível. a) Diz-se que um problema de decisão pertence à classe NP (de algoritmo não determinístico de verificação em tempo polinomial), se pode ser resolvido em tempo polinomial por uma máquina de Turing não determinística, ou, equivalentemente, se uma solução pode ser verificada em tempo polinomial por uma máquina de Turing determinística (em última instância, um algoritmo determinístico de tempo polinomial). Mostre que este problema pertence à classe NP. b) Diz-se que um problema de decisão P1 é redutível a outro problema de decisão P2 em tempo polinomial se é possível converter em tempo polinomial os dados de entrada de uma instância de P1 a dados de entrada de uma instância equivalente de P2. Mostre que este problema é redutível em tempo polinomial ao problema do circuito (ou ciclo) Hamiltoniano, e vice-versa. Recorde-se que um circuito Hamiltoniano num grafo não dirigido é um circuito simples (sem vértices duplicados) que passa em todos os vértices. Que pode concluir acerca da dificuldade relativa de resolução dos dois problemas (problema do circuito Hamiltoniano e problema dos convidados)? c) Diz-se que um problema de decisão é NP-completo se qualquer problema pertencente à classe NP pode ser reduzido àquele em tempo polinomial. Sabendo que o problema do circuito Hamiltoniano é NP- completo, que pode concluir acerca do problema dos convidados? d) Ainda ninguém conseguiu encontrar um algoritmo capaz de resolver em tempo polinomial qualquer dos problemas NP- completos conhecidos. Consegue resolver o problema dos convidados em tempo polinomial no número de pessoas (para qualquer conjunto de pessoas e incompatibilidades)? 3. Carcterize o problema da parada. 4. Qual a relação entre as seguintes classes de problemas:
  46. 46. a) Decidíveis (solucionáveis) b) Semi-decidíveis (Parcialmente solucionáveis) (computáveis) c) Indecidíveis (Não-solucionáveis) e) Completamente indecidíveis (insolucionáveis) Decidibilidade e Teorema da incompletude de Gödel 1. O que diz o primeiro teorema de Godel? 2. O que diz o segundo teorema de Godel? 3. O que se entende por incompletude? 4. Fale sobre o teorema da imcopletude de Godel. 5. Como podemos provar o teorema da incopletude de Godel? 6. O que é um problema indecidível? 7. Provar que os problemas abaixo são indecidíveis e semi- decidíveis. a) O problema de determinar se dois programas são equivalentes. b) O problema da parada da palavra vazia. Princípio de Redução. 1. Em que consiste o princípio da redução? 2. Em que áreas de ciência é usado o principio da redução? 3. Como o princípio da redução pode ser útil?

×