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. 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. 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. 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. 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. 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. | 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. 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. (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. (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. 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. 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. 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. 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. • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. δ ( 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. 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. 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. 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. 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. 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. 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. 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. 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. é 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. 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. 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. 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. 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. 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. 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?