Você está na página 1de 49

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


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


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


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


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
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


Exercício no 2

subset 0 1
{1,3} {2,3} {1,4}
{1,4} {2,4} {1,3}
{2,3} {1,3} {4}
{2,4} {1,3,4} {3}
subset 0 1 {3,4} {3,4} {3,4}
{1} {2} {1} {4} {4} {3}
{2} {1,3} {} {3} {3} {4}
{3} {3} {4} {1,3,4} {2,3,4} {1,3,4}
{4} {4} {3} {2,3,4} {1,3,4} {3,4}

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 7 / 49


Exercício no 2

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 8 / 49


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


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


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


Exercício no 4 - a) Construa um AFN N, equivalente a M,
usando o método visto em aula.

I 0 = f λ(A) = {A, B , C , D , E }

δ 0 (A, a) = f λ(δ(A, a)) =⇒ f λ(A) =⇒ {A, B , C , D , E }


δ 0 (B , b) = f λ(δ(B , b)) =⇒ f λ(B ) =⇒ {B , D , E }
δ 0 (C , c ) = f λ(δ(C , c )) =⇒ f λ(C ) =⇒ {C , D , E }
δ 0 (D , d ) = f λ(δ(D , d )) =⇒ f λ(D ) =⇒ {D , E }
δ 0 (E , a) = f λ(δ(E , a)) =⇒ f λ(E ) =⇒ {E }

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 12 / 49


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 0 = f λ(A) = {A, B , C , D , E }

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 13 / 49


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


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
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


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


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


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


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 6= λ e
uv i w ∈ L, ∀i ≥ 0

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 20 / 49


Exercício no 5 - Prove que os seguintes conjuntos não são
linguagens regulares, usando o lema do bombeamento:

a) L = {x 1n | 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 6= λ
e uv i 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 6= λ.
Isso implica que uv 2 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


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 6= λ
e uv i w ∈ L, ∀i ≥ 0.
Z = uvw = 10k 1k e |uv | < k .
caso 1: v só tem 0
uv 2 w = 10k +|v | 1k ∈
/L
caso 2: v começa com 1 (u = λ)
uv 2 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


Exercício no 6 - Prove que os seguintes conjuntos não são
linguagens regulares, usando propriedades de fecho:

a) X = {0m 1n | m 6= 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
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
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
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


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


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.

P∗ P∗
( 2 L) ∩ 2

Sérgio Mariano Dias (UFMG) Fundamentos da Teoria da Computação 07/05/2009 28 / 49


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


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


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


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
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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

Você também pode gostar