Expansão Marítima- Descobrimentos Portugueses século XV
Fundamentos da Teoria da Computação Segunda Lista de Exercícios - Aula sobre dúvidas
1. Fundamentos da Teoria da Computação
Segunda Lista de Exercícios - Aula sobre dúvidas
Sérgio Mariano Dias1
1
Mestrando em Ciência da Computação
Departamento de Ciência da Computação
Universidade Federal de Minas Gerais
07/05/2009
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 1 / 49
2. Exercício no
1 - Construa AFNs para as seguintes
linguagens, com o menor número de estados e de
transições que conseguir:
a) {w ∈ {a, b, c}∗ | w tem pelo menos uma ocorrência de aba ou de
bcb ou de cac}.
aba
bcb
cac
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 2 / 49
3. Exercício no
1 - Construa AFNs para as seguintes
linguagens, com o menor número de estados e de
transições que conseguir:
b) O conjunto das palavras de {a, b, c}∗, de três ou mais símbolos, em
que o último símbolo seja diferente do primeiro.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 3 / 49
4. Exercício no
1 - Construa AFNs para as seguintes
linguagens, com o menor número de estados e de
transições que conseguir:
c) O conjunto das palavras de {a, b, c}∗ em que o último símbolo tenha
ocorrido antes no mínimo uma vez.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 4 / 49
5. Exercício no
1 - Construa AFNs para as seguintes
linguagens, com o menor número de estados e de
transições que conseguir:
d) O conjunto das palavras de {a, b, c}∗ em que o último símbolo tenha
ocorrido antes no máximo duas vezes.
Estados iniciais: q7, q0, q1, q8, q3, q4, q9, q5, q6
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 5 / 49
6. Exercício no
2 - Seja o AFNλ M:
Construa um AFD equivalente usando o método visto em aula (subset
construction).
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 6 / 49
9. Exercício no
3 - Obtenha um AFN K com um único estado
inicial, equivalente ao AFN da questão anterior, que
contenha todos os estados e transições lá contidos. Em
seguida, obtenha uma gramática regular para L(K) usando
o método visto em aula.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 9 / 49
10. Exercício no
3
q4=A, q0=B, q1=C, q2=D, q3=E
A → λ|1B|0C|0D|1E
B → λ|1B|0C
C → 0B|0D
D → 0D|1E
E → λ|1D|0E
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 10 / 49
11. Exercício no
4 - Seja o AFNλ M:
a) Construa um AFN N, equivalente a M, usando o método visto em aula.
b) A partir do AFN N, construa uma expressão regular que denote a
linguagem reconhecida.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 11 / 49
12. Exercício no
4 - a) Construa um AFN N, equivalente a M,
usando o método visto em aula.
I = fλ(A) = {A, B, C, D, E}
δ (A, a) = fλ(δ(A, a)) =⇒ fλ(A) =⇒ {A, B, C, D, E}
δ (B, b) = fλ(δ(B, b)) =⇒ fλ(B) =⇒ {B, D, E}
δ (C, c) = fλ(δ(C, c)) =⇒ fλ(C) =⇒ {C, D, E}
δ (D, d) = fλ(δ(D, d)) =⇒ fλ(D) =⇒ {D, E}
δ (E, a) = fλ(δ(E, a)) =⇒ fλ(E) =⇒ {E}
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 12 / 49
13. Exercício no
4 - a) Construa um AFN N, equivalente a M,
usando o método visto em aula.
Todos os estados são iniciais I = fλ(A) = {A, B, C, D, E}
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 13 / 49
14. Exercício no
4 - b) - Criando novo estado inicial e final.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 14 / 49
15. Exercício no
4 - b) - Removendo o estado B.
P1 = λ + (b+)
P2 = a + ab+
P3 = λ + (b+)
P4 = a + ab+
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 15 / 49
16. Exercício no
4 - b) - Removendo o estado A.
P1 = (λ + b+) + a∗(a + ab+)
P2 = (a + ab+) + a∗(λ + b+)
P3 = λ + a+
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 16 / 49
17. Exercício no
4 - b) - Removendo o estado C.
P1 = [(λ + b+) + (a∗(a + ab+))] + [(λ + a+)c+]
P2 = [(a + ab+) + a∗(λ + b+)] + [(λ + a+)c+]
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 17 / 49
18. Exercício no
4 - b) - Removendo o estado D.
P1 = [(λ + b+) + (a∗(a + ab+))] + [(λ + a+)c+]
P2 = {[(a + ab+) + a∗(λ + b+)] + [(λ + a+)c+]d∗} + {[(a + ab+) +
a∗(λ + b+)] + [(λ + a+)c+]d+a∗}
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 18 / 49
19. Exercício no
4 - b) - Removendo o estado E.
P1 = [(λ + b+) + (a∗(a + ab+))] + [(λ + a+)c+]
P2 = {[(a + ab+) + a∗(λ + b+)] + [(λ + a+)c+]d∗} + {[(a + ab+) +
a∗(λ + b+)] + [(λ + a+)c+]d+a∗}
ER = P1a∗P2
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 19 / 49
20. Exercício no
5 - Prove que os seguintes conjuntos não são
linguagens regulares, usando o lema do bombeamento:
Lema do bombeamento - LB
Seja L uma linguagem regular. Então existe uma constante K > 0 tal que
para qualquer palavra Z ∈ L com |Z| > K existem u, v, w que satisfazem as
seguintes condições:
Z = uvw;
|uv| ≤ K;
v = λ e
uvi
w ∈ L, ∀i ≥ 0
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 20 / 49
21. Exercício no
5 - Prove que os seguintes conjuntos não são
linguagens regulares, usando o lema do bombeamento:
a) L = {x1n
| n ≥ 0, x ∈ {0, 1}∗ e |x| = n}
Suponha que L seja regular. Seja k a constante a constante referida no
LB, e seja Z = 0k
1k
. Como |Z| > k, o lema diz que existem u, v, w de
forma que as seguintes condições se verificam: Z = uvw; |uv| ≤ k; v = λ
e uvi
w ∈ L, ∀i ≥ 0.
Nesse caso v só tem 0, pois Z = uvw = 0k
1k
e |uv| < k e v possui pelo
menos um 0 porque v = λ.
Isso implica que uv2
w = 0k+|v|
1k
/∈ L. Desta forma, a suposição é falsa.
Portanto, L não é regular.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 21 / 49
22. Exercício no
5 - Prove que os seguintes conjuntos não são
linguagens regulares, usando o lema do bombeamento:
b) {10n
1n
| n ≥ 1}.
Suponha que L seja regular. Seja k a constante a constante referida no
LB, e seja Z = 10k
1k
. Como |Z| > k, o lema diz que existem u, v, w de
forma que as seguintes condições se verificam: Z = uvw; |uv| ≤ k; v = λ
e uvi
w ∈ L, ∀i ≥ 0.
Z = uvw = 10k
1k
e |uv| < k.
caso 1: v só tem 0
uv2
w = 10k+|v|
1k
/∈ L
caso 2: v começa com 1 (u = λ)
uv2
w /∈ L (repete o padrão de v)
Logo, pelo caso 1 e 2 L não é regular.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 22 / 49
23. Exercício no
6 - Prove que os seguintes conjuntos não são
linguagens regulares, usando propriedades de fecho:
a) X = {0m
1n
| m = n}.
¬X ∩ {0}∗
{1}∗
= {0n
1n
|n ≥ 0}
L = {0n
1n
|n ≥ 0} não é regular1
.
Pelas propriedades de fecho:
se X fosse regular, ¬X séria;
sendo ¬X regular interseção com {0}∗
{1}∗
é regular;
L = {0n
1n
|n ≥ 0} séria regular.
1
página 105, exemplo 71 do livro texto.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 23 / 49
24. Exercício no
6 - Prove que os seguintes conjuntos não são
linguagens regulares, usando propriedades de fecho:
b) X = {w ∈ {0, 1}∗ | o número de 0s em w é par e o de 1s é primo}.
X ∩ 1∗
= {1n
|n é primo }
L = {1n
|n é primo } não é regular2
.
Pelas propriedades de fecho:
se X fosse regular, interseção com {1}∗
é regular;
L = {1n
|n é primo } séria regular.
2
Página 106, exemplo 73 do livro texto.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 24 / 49
25. Exercício no
7 - Sejam as linguagens
L1 = {0, 1}∗
{1}{0, 1} e
L2 = {w ∈ {0, 1}∗
| η(w) mod 3 = 0}, sendo η(w) o
número representado por w na base dois.
a) Prove que L1 − L2 é regular usando propriedades de fecho.
L1 − L2 = L1 ∩ ¬L2
L1 é regular
L2 é regular
Fechado sobre o complemento e interseção
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 25 / 49
26. Exercício no
7 - b) Construa um autômato finito para L1 − L2.
L1 − L2 = L1 ∩ ¬L2
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 26 / 49
27. Exercício no
7 - b) - Removendo não determinismo de L1.
subset 0 1
{ 3} { 3} { 3,4}
{ 4} { 5} { 5}
{ 5} { } { }
{ 3,4} { 3,5} { 3,4,5}
{ 3,5} { 3} { 3,4 }
{ 3,4,5} { 3,5} { 3,4,5 }
Faça o produto do novo L1 (AFD) com ¬L2, mesmo procedimento
aplicado no exercício 8 da lista 1.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 27 / 49
28. Exercício no
8 - Seja L uma linguagem regular sobre um
alfabeto Σ1. Prove que o conjunto das palavras sobre Σ2
(que pode ser igual ou não a Σ1) que têm como sufixo
alguma palavra de L é regular.
( ∗
2 L) ∩ ∗
2
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 28 / 49
29. Exercício no
9 - Encontre expressões regulares para as
seguintes linguagens.
a) {w ∈ {a, b}∗ | |w| ∈ {0, 1, 3}}.
λ + (a + b) + [(a + b)(a + b)(a + b)]
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 29 / 49
30. Exercício no
9 - Encontre expressões regulares para as
seguintes linguagens.
b) {w ∈ {a, b}∗ | w contém um, dois ou três bs}.
(a∗
ba∗
) + (a∗
ba∗
ba∗
) + (a∗
ba∗
ba∗
ba∗
)
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 30 / 49
31. Exercício no
9 - Encontre expressões regulares para as
seguintes linguagens.
c){w ∈ {a, b, c}∗ | o número de as mais o de bs em w é par}.
λ + c∗
+ [(c∗
ac∗
ac∗
) + (c∗
ac∗
bc∗
) + (c∗
bc∗
ac∗
) + (c∗
bc∗
bc∗
)]∗
{c + [(a + b)c∗
(a + b)]}∗
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 31 / 49
32. Exercício no
9 - Encontre expressões regulares para as
seguintes linguagens.
d){w ∈ {0, 1}∗ | w contém o símbolo N(w) mod 3 = 0}.
Não pode ser 000. . . ;
x0 = 2n(x)3
x1 = 2n(x) + 1
r = 2n(x)mod3 = 2r/3
r = 2n(x) + 1mod3 = (2r + 1)/3
3
pag 63 e 64 do livro texto.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 32 / 49
33. Exercício no
9 - d)- Criando novo estado inicial e final.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 33 / 49
34. Exercício no
9 - d)- Removendo o estado 2.
P1 = 01∗0
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 34 / 49
35. Exercício no
9 - d)- Removendo o estado 0.
P1 = (01∗0) + 10∗1
P2 = 10∗
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 35 / 49
36. Exercício no
9 - d)- Removendo o estado −1.
P1 = (01∗0) + 10∗1
P2 = 10∗
P3 = 0∗1
ER = P3P1∗P2 = 0∗1[(01∗0) + 10∗1]∗10∗
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 36 / 49
37. Exercício no
10 - Obtenha expressões regulares que
denotem as linguagens sobre {0, 1} a seguir, a partir de
AFs que reconheçam as mesmas, usando o método visto
em aula. Não simplifique as ERs.
a) O conjunto das palavras que começam com 1, terminam com 1 e têm
algum 0.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 37 / 49
38. Exercício no
10 - a) O conjunto das palavras que começam
com 1, terminam com 1 e têm algum 0.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 38 / 49
39. Exercício no
10 - a) - Removendo o estado q0.
P1 = 1
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 39 / 49
40. Exercício no
10 - a) - Removendo o estado q1.
P1 = 11∗0
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 40 / 49
41. Exercício no
10 - a) - Removendo o estado q2.
P1 = 1+0
P2 = 0 + 11∗0
P3 = 11∗
ER = P1P2∗P3 = 1+0(0 + 1+0)∗1+
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 41 / 49
42. Exercício no
10 - Obtenha expressões regulares que
denotem as linguagens sobre {0, 1} a seguir, a partir de
AFs que reconheçam as mesmas, usando o método visto
em aula. Não simplifique as ERs.
b) O conjunto das palavras que não contém a subpalavra 0101.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 42 / 49
43. Exercício no
10 - b) O conjunto das palavras que não
contém a subpalavra 0101.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 43 / 49
44. Exercício no
10 - b) - Removendo o estado q3.
P1 = 00
P2 = 0 + 1
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 44 / 49
45. Exercício no
10 - b) - Removendo o estado q2.
P1 = 11
P2 = 0 + 100
P3 = λ + [1(0 + λ)]
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 45 / 49
46. Exercício no
10 - b) - Removendo o estado q1.
P1 = 1 + [0(0 + 100)]∗11
P2 = λ + [0(0 + 100)]∗{λ + [1(0 + λ)]}
ER = P1∗P2
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 46 / 49
47. Exercício no
11 - Mostre que os seguintes problemas são
decidíveis, se G1 e G2 são gramáticas regulares quaisquer:
a)L(G1) = ∅?
Seja M um AF que aceite L(G1).
L(G1) = {} se e somente se não existe um caminho do estado inicial de
M para um estado final de M.
Determinar se existe um caminho em um grafo é sabidamente decidível.
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 47 / 49
48. Exercício no
11 - Mostre que os seguintes problemas são
decidíveis, se G1 e G2 são gramáticas regulares quaisquer:
b)L(G1) ⊆ L(G2)?
L(G1) ⊆ L(G2) ↔ L(G1) ∩ ¬L(G2) =
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 48 / 49
49. Obrigado pela atenção e boa prova.
contato:
sergiomariano@gmail.com
mariano@dcc.ufmg.br
Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 49 / 49