Buscar

SolucoesCompleta TC 1

Prévia do material em texto

Apeˆndice A
Soluc¸o˜es de Alguns dos Exerc´ıcios
Propostos
A.1 Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 1
2. Demonstre que para quaisquer cadeias w e u e para todo n ≥ 0 temos que
(2b) |wn| = n|w|,
Resposta: Provaremos por induc¸a˜o em n.
Base da Induc¸a˜o: |w0| = |λ| = 0 = 0|w|.
Hipo´teses indutiva: Suponha que |wk| = k|w|.
Passo indutivo: |wk+1| = |wwk| = |w|+ |wk| = |w|+ k|w| = (k + 1)|w|.
(2d) (wu)R = uRwR.
Resposta: Provaremos por induc¸a˜o em |u|.
Base da Induc¸a˜o: (wλ)R = wR = λRwR.
Hipo´teses indutiva: Suponha que (wu)R = uRwR para todo u tal que |u| = k.
Passo indutivo: Para todo s´ımbolo a do alfabeto de u, (w(ua))R = ((wu)a)R = a(wu)R =
auRwR = (ua)RwR.
5. Mostre que para qualquer n,m ≥ 0 e linguagem L temos que
(5a) (Ln)m = Lnm,
Resposta: Provaremos por induc¸a˜o em m.
Base da Induc¸a˜o: (Ln)0 = {λ} = L0 = Ln0.
Hipo´teses indutiva: Suponha que (Ln)k = Lnk.
Passo indutivo: (Ln)k+1 = (Ln)kLn = LnkLn = Lnk+n = Ln(k+1)
(5c) (LR)n = (Ln)R,
279
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
Resposta: Provaremos por induc¸a˜o em n.
Base da Induc¸a˜o: (LR)0 = {λ} = {λ}R = (L0)R.
Hipo´teses indutiva: Suponha que (LR)k = (Lk)R.
Passo indutivo: (LR)k+1 = (LR)kLR = (Lk)RLR = (LLk)R = (Lk+1)R
(5e) LP = ((L)R)S)R.
Resposta: Se L = ∅ enta˜o trivialmente LP = ((L)R)S)R. Provaremos por induc¸a˜o no
tamanho da cadeia w que w ∈ LP se e somente se w ∈ ((L)R)S)R quando L 6= ∅.
Base da Induc¸a˜o: λ ∈ LP pois λ e´ prefixo de qualquer cadeia. Por outro lado, λ ∈ L)R)S pois
λ e´ sufixo de qualquer cadeia, e portanto, λ ∈ ((L)R)S)R.
Hipo´teses indutiva: Suponha que para todo w tal que |w| = k, w ∈ LP se e somente se
w ∈ ((L)R)S)R.
Passo indutivo: wa ∈ LP se e somente se existe uma cadeia u ∈ Σ∗ tal que wau ∈ L, e isso
so ocorre se e somente existe uma cadeia u ∈ Σ∗ tal que (wau)R = uRawR ∈ LR (veja
exerc´ıcio (2d)), o qual e´ verdade se e somente se awR ∈ (LR)S . Portanto, wa ∈ LP se e
somente se (awR)R ∈ ((LR)S)R, isto e´, se e somente se, wa ∈ ((LR)S)R.
7. Sejam L1 e L2 duas linguagens tais que L1 ⊆ L2. Demonstre que
(7b) LR1 ⊆ LR2 ,
Resposta: Se w ∈ LR1 enta˜o wR ∈ L1. Como por hipo´tese L1 ⊆ L2, enta˜o wR ∈ L2.
Logo, w ∈ LR2 .
(7d) Para toda linguagem L, L1 ◦ L ⊆ L2 ◦ L.
Resposta: Se w ∈ L1 ◦ L enta˜o existe u ∈ L1 e v ∈ L tais que w = uv. Como por
hipo´tese, L1 ⊆ L2, enta˜o u ∈ L2. Logo, w = uv ∈ L2 ◦ L.
9. Descreva de maneira gene´rica em que situac¸o˜es LP = (LS)R.
Resposta: Pelo exerc´ıcio 5c isso so´ ocorrera´ quando L = LR isto e´ quando L for um
subconjunto dos pal´ındromos.
A.2 Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
1. Construir um autoˆmato para reconhecer somente a sequ¨eˆncia 10110.
Resposta: Um afd que reconhece somente a cadeia 10110 e´ ilustrada na figura A.24.
3. Construir um autoˆmato finito determin´ıstico que reconhec¸a qualquer cadeia contendo um
nu´mero qualquer de co´pias de 001, seguido por 1 e nenhuma outra cadeia. Isto e´ o afd
deve reconhecer a linguagem:
{w1 ∈ {0, 1}∗ / w = 001n para algum n ≥ 0}
As cadeias reconhecidas por este autoˆmato sa˜o do tipo: 1, 0011, 0010011, 0010010011, etc.
280
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
1 0 1 1 0
0 1 0 0 1 1,0
1,0
q q q q q
q
0 1 2 3 4 5
6
q
Figura A.1: afd para o exerc´ıcio 1.
00q q q0 1 2
1
0
3
11
0,1
qq
4
0,1
Figura A.2: afd para o exerc´ıcio 3.
Resposta: Um afd que reconhece esta linguagem e´ ilustrada na figura A.2.
4. Para cada um dos seguintes casos, construir um afd que com os s´ımbolos de entrada
a, b, c, d reconhec¸a a descric¸a˜o das cadeias dadas e na˜o outras.
(4b) Qualquer cadeia terminando com um a.
Resposta: Um afd que reconhece esta linguagem e´ ilustrado na figura A.3.
(4c) Qualquer cadeia consistindo de um nu´mero par de co´pias de abb.
Resposta: Um afd que reconhece esta linguagem e´ ilustrado na figura A.4.
(4d) Qualquer cadeia em {a, bcd}∗. Isto e´ a linguagem
{λ, a, bcd, aa, abcd, bcdbcd, bcda, aaa, aabcd, . . .}.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
281
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
0 qq 1
b,c,d
b,c,d
a
a
Figura A.3: afd para o exerc´ıcio (4b).
q q
30
q q
1 2
a b
c,d
b
b
b a
a
a
b,c,d b,c,d
c,d
a
c,dc,d
a
q
4
q
5
Figura A.4: afd para o exerc´ıcio (4c).
Resposta: O afd da figura A.5 reconhece a linguagem {a, bcd}∗.
(4e) Qualquer cadeia contendo exatamente uma u´nica co´pia da cadeia abbb.
Resposta: Um afd que reconhece esta linguagem e´ ilustrado na figura A.6.
5. Desenhe afd’s que reconhec¸am os subconjuntos de {a, b}∗ consistindo de
(5a) Todas as cadeias com exatamente um a.
Resposta: O afd na figura A.7 reconhece esta linguagem.
(5c) Todas as cadeias com mais do que treˆs a’s.
Resposta: O afd da figura A.8 reconhece esta linguagem.
6. Dar uma afd que aceite os nu´meros, no sistema bina´rio, que:
(6a) Sa˜o mu´ltiplos de 4.
282
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
q
3
0
q q
1 2
a
b c
d
c,d
a,b,d
a,b,c
a,b,c,d
Figura A.5: afd para o exerc´ıcio (4d).
Resposta: Antes de mostrar o afd que reconhece esta linguagens, devemos analisar
que linguagem e´ esta.
Valor em Decimal Valor em bina´rio
0 0
4 100
8 1000
12 1100
16 10000
20 10100
...
...
Claramente, um nu´mero diferente de zero em bina´rio e´ mu´ltiplo de 4 se seus dois
u´ltimos d´ıgitos sa˜o 00.
Nos consideraremos zeros a` esquerda como na˜o significativos, e portanto 0000100 e 100
devem ser aceitos, pois ambos representam o nu´mero 4. A cadeia vazia, por questa˜o
de simplicidade sera´ tambe´m considerada como zero. Assim, sobre este entendimento,
um afd que reconhece esta linguagem e´ o afd da figura A.9.
(6b) Sa˜o mu´ltiplos de 3.
Resposta: Para desenhar este afd primeiro necessitamos entender a linguagem
dos nu´meros bina´rios e dentre eles analisar quais sa˜o mu´ltiplos de 3. Um nu´mero e´
mu´ltiplo de 3 se o resto da divisa˜o dele por 3 e´ 0. Enta˜o a tabela a seguir mostra os
nu´meros em decimal, bina´rio e seu resto (em decimal) da divisa˜o dele por 3.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
283
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q q 30 q
q
1 2
a b
c,d
b
b
a
ab,c,d b,c,d
c,d
a
c,d
c,d
b
a
a
q
4
q
5
a,b,c,d
q
6
Figura A.6: afd para o exerc´ıcio (4d).
Valor em Decimal Valor em Bina´rio Resto da Divisa˜o por 3
0 0 0
1 1 1
2 10 2
3 11 0
4 100 1
5 101 2
6 110 0
7 111 1
8 1000 2
9 1001 0
10 1010 1
11 1011 2
12 1100 0
13 1101 1
14 1110 2
15 1111 0
...
...
...
Novamente consideramos que zeros a` esquerda na˜o sa˜o significativos e que a cadeia
vazia e´ considerada como zero.
Assim seria natural termos treˆs estados. Um para quando o resto for 0 (q0), outro
para quando for 1 (q1) e um u´ltimo para quando o resto for 2 (q2). Como, resto zero
significa que o nu´mero e´ mu´ltiplo de 3, enta˜o ele seria estado final e como a cadeia
vazia (ou seja antes ler qualquer s´ımbolo) e´ considerada como 0, e 0 e´ mu´ltiplo de 3,
enta˜o esse estado tambe´m seria inicial.
284
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
q
0
q 1
a
b
2
a
b
a,b
Figura A.7: afd para o exerc´ıcio (5a).
q q0 q 1
a
b
2
a
b a,bb
qa
3
Figura A.8: afd para o exerc´ıcio (5c).
Observe que se o valor em decimal de um nu´mero bina´rio w (denotaremos isto por
#w), for n, enta˜o#w0 e´ 2n e de #w1 e´ 2n+1. Assim, se o resto da divisa˜o por 3 de
um nu´mero bina´rio w for 0, enta˜o isso significa que #w = 3k para algum k ∈ N. Logo,
#w0 = 2#w = 2(3k) = 3(2k) e portanto o resto da divisa˜o de #w0 por 3 continuaria
sendo 0, isto implica em que ter´ıamos uma transic¸a˜o rotulada por 0 do estado q0 a
ele mesmo. Analogamente, #w1 = 2#w + 1 = 2(3k) + 1 = 3(2k) + 1 e portanto o
resto da divisa˜o #w1 por 3 passa a ser 1 o qual implica numa transic¸a˜o rotulada por
1 do estado q0 ao estado q1. Agora se o resto da divisa˜o de #w por 3 for 1, enta˜o
#w = 3k + 1 para algum k ∈ N e portanto #w0 = 2#w = 2(3k + 1) = 3(2k) + 2.
Logo, o resto da divisa˜o de #w0 por 3 seria 2, o qual implica numa transic¸a˜o rotulada
por 0 do estado q1 ao estado q2. Analogamente, #w1 = 2#w + 1 = 2(3k + 1) + 1 =
3(2k) + 3 = 3(2k + 1). Logo, o resto da divisa˜o de #w0 por 3 seria 0, o qual implica
numa transic¸a˜o rotulada por 1 do estado q1 ao estado q0. Finalmente, se o resto
da divisa˜o de #w por 3 for 2, enta˜o #w = 3k + 2 para algum k ∈ N e portanto
#w0 = 2#w = 2(3k+2) = 3(2k)+ 3+1 = 3(2k+1)+1. Logo, o resto da divisa˜o de
#w0 por 3 seria 1, o qual implica numa transic¸a˜o rotulada por 0 do estado q2 ao estado
q1. Analogamente, #w1 = 2#w+ 1 = 2(3k + 2) + 1 = 3(2k) + 3+ 2 = 3(2k + 1) + 2.
Logo, o resto da divisa˜o de #w0 por 3 seria 2, o qual implica numa transic¸a˜o rotulada
por 1 do estado q2 nele mesmo.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
285
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
q q
1 2
00
1
1
0
1
Figura A.9: afd para o exerc´ıcio (6a).
O afd da figura A.10 ilustra este autoˆmato.
q
0
q q1 2
0
0
1
1
0
1
Figura A.10: afd para o exerc´ıcio (6b).
7. Encontre afd’s para as seguintes linguagens sobre Σ = {a, b}.
(7a) L = {w ∈ Σ∗/ |w| mod 3 = 0},
Resposta: O afd da figura A.11 reconhece esta linguagem.
q
0
q q
1 2
a,b a,b
a,b
Figura A.11: afd para o exerc´ıcio (7a).
(7c) L = {w ∈ Σ∗/ Na(w) mod 3 > 1},
Resposta: O afd da figura A.12 reconhece esta linguagem.
(7e) L = {w ∈ Σ∗/ 2 ≤ Na(w) ≤ 4},
Resposta: O afd da figura A.13 reconhece esta linguagem.
(7g) L = {w ∈ Σ∗/ Na(w) 6∈ {1, 2, 3}},
Resposta: O afd da figura A.14 reconhece esta linguagem.
(7i) L = {ambn/ mn e´ ı´mpar},
286
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
q q
1 2
a a
a
b b b
Figura A.12: afd para o exerc´ıcio (7c).
q
0
q q
1 2
a a
b b b b b a,b
a a aq q q
3 4 5
Figura A.13: afd para o exerc´ıcio (7e).
Resposta: O afd da figura A.15 reconhece esta linguagem.
(7k) L = {w ∈ Σ∗/ Na(w) e´ ı´mpar e |w| e´ par}, onde Na(w) e´ o nu´mero de a’s que
ocorrem em w e |w| e´ o tamanho da cadeia w.
Resposta: O afd da figura A.16 reconhece esta linguagem. Neste autoˆmato o
estado q0 reflete a situac¸a˜o que a cadeia lida ate´ esse momento tem uma quantidade
par de a’s e e´ de tamanho par, ou seja, Na(w) e |w| sa˜o pares. O estado q1 sintetiza
a situac¸a˜o em que Na(w) e |w| sa˜o ı´mpares. O estado q2 captura a situac¸a˜o em que
Na(w) e´ par enquanto |w| e´ ı´mpar. Finalmente, o estado q3 a situac¸a˜o desejada, ou
seja, Na(w) e´ ı´mpar e |w| e´ par, e portanto e´ o estado final.
9. Considere o conjunto das cadeias, sobre {0, 1}, definido pela condic¸a˜o abaixo. Exiba um
afd para cada um desses conjuntos.
(9a) O primeiro e u´ltimo s´ımbolo sejam iguais.
Resposta: O afd da figura A.17 reconhece esta linguagem.
(9c) Que reconhec¸a a linguagem L = {vwv/v,w ∈ {a, b}∗ e |v| = 2}.
q
0
 q
1
 q
2
 q
4
q
3
a
 a
 a
 a
b
 a,b
b
 b
 b
Figura A.14: afd para o exerc´ıcio (7g).
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
287
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
 q
1
 q
2
 q
3
a
a
a,b
a
b
b
b
q
4
b
Figura A.15: afd para o exerc´ıcio (7i).
Resposta: O afd da figura A.18 reconhece esta linguagem.
(9e) Todo 00 e´ seguido imediatamente por 1. Por exemplo, as cadeias λ, 101, 0010,
0010111001 esta˜o na linguagem, mas 0001 e 00100, na˜o esta˜o.
Resposta: O afd da figura A.19 reconhece esta linguagem.
(9g) Toda subcadeia de quatro s´ımbolos tem, quando muito, dois zeros. Por exemplo,
0011100, 001101 e 1010101 esta˜o na linguagem, mas 10100110 na˜o esta´, pois uma de
suas subcadeias de quatro s´ımbolos, 0100, conte´m treˆs zeros.
Resposta: O afd da figura A.20 reconhece esta linguagem. Neste afd cada estado,
amenos do estado de morte q3, “armazena” os treˆs u´ltimos d´ıgitos lidos. No inicio,
para evitar introduzir novos estados, o afd assume que leu 111 antes de comec¸ar.
O estado q0 enta˜o representa 111, o estado q1 representa 110, o estado q2 representa
100 o estado q3 representa a situac¸a˜o onde houve uma subcadeia de tamanho 4 com
treˆs 0’s, o estado q4 representa 101, o estado q5 representa 010, o estado q6 representa
001 e o estado q7 representa 011. Observe no afd da figura A.20 que o estado de
chegada das arestas que saem dos estado q7 e q0 com o mesmo ro´tulo coincidem, e
portanto esses dois estados poderiam ser fusionados em um u´nico estado.
(9i) Qualquer ocorreˆncia de dois zeros pro´ximos (isto e´ sem qualquer 0 no meio), esteja
separado por uma quantidade ı´mpar de uns. Por exemplo, λ, 111, 11011, 011101011 e
110101110101 fazem parte desta linguagem, mas as cadeias 0010 e 111010110 na˜o.
Resposta: O afd da figura A.21 reconhece esta linguagem.
11. Seja M = 〈Q,Σ, δ, q0, F 〉 um afd. Mostre que δ∗(q, vw) = δ∗(δ∗(q, v), w) para todo
v,w ∈ Σ∗.
Resposta: Provaremos por induc¸a˜o no tamanho de w.
Base da Induc¸a˜o: Se w = λ enta˜o δ∗(q, vw) = δ∗(q, vλ) = δ∗(q, v) e δ∗(δ∗(q, v), w) = δ∗(δ∗(q, v), λ) =
δ∗(q, v) e portanto ambos sa˜o iguais.
288
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
 q
1
q
2
 q
3
a
a
b
b
a
a
b
b
Figura A.16: afd para o exerc´ıcio (7k).
Hipo´teses indutiva: δ∗(q, vw) = δ∗(δ∗(q, v), w) para todo v,w ∈ Σ∗ tal que |w| = k
Passo indutivo: Seja a ∈ Σ e v,w ∈ Σ∗ tal que |w| = k. Enta˜o
δ∗(q, vwa) = δ(delta∗(q, vw), a) por definic¸a˜o de δ∗
= δ(delta∗(δ∗(q, v), w), a) por hipo´tese indutiva
= delta∗(δ∗(q, v), wa) por definic¸a˜o de δ∗
13. Para o afn na figura 2.9, ache δ∗(q1, 100) e δ∗(q0, 00101).
Resposta: Faremos isto passo a passo seguindo a definic¸a˜o de δ∗ para afn sem λ-
transic¸o˜es (equac¸o˜es 2.4 e 2.5).
δ∗(q1, 100) =
⋃
q∈δ∗(q1,10) δ(q, 0)
=
⋃
q∈⋃q′∈δ∗(q1,1) δ(q′,0)
δ(q, 0)
=
⋃
q∈⋃q′∈⋃
q′′∈δ∗(q1,λ) δ(q
′′,a) δ(q
′,0) δ(q, 0)
=
⋃
q∈⋃q′∈⋃
q′′∈{q1} δ(q
′′,a) δ(q
′,0) δ(q, 0)
=
⋃
q∈⋃q′∈δ(q1,a) δ(q′,0)
δ(q, 0)
=
⋃
q∈⋃q′∈{q2} δ(q′,0)
δ(q, 0)
=
⋃
q∈δ(q2,0) δ(q, 0)
=
⋃
q∈{q1} δ(q, 0)
= δ(q1, 0) = ∅
Para o outro caso, usaremos a ide´ia intuitiva para a func¸a˜o de transic¸a˜o estendida e que
foi expressa na definic¸a˜o 2.4.5.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
289
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
q
1
 q
2
q
3
0
0
1
1
0
0
1
1
q
4
1
 0
Figura A.17: afd para o exerc´ıcio (9a).
δ∗(q0, 00101) = δ∗(q0, 0101) ∪ δ∗(q1, 0101) pois δ(q0, 0) = {q0, q1}
= (δ∗(q0, 101) ∪ δ∗(q1, 101)) ∪ ∅ pois δ(q0, 0) = {q0, q1} e δ(q1, 1) = ∅
= ∅ ∪ δ∗(q2, 01) pois δ(q0, 1) = ∅ e δ(q1, 1) = {q2}
= δ∗(q1, 1) pois δ(q2, 0) = {q1}
= δ∗(q2, λ) pois δ(q1, 1) = {q2}
= {q2}
15. Seja L a linguagem aceita pelo autoˆmato da figura 2.2. Achar um afd que aceite L2.
Resposta: Antes de desenhar o afd que aceite a linguagem L2, onde L e´ a linguagem
reconhecida pelo autoˆmato dafigura 2.2 devemos analisar quem e´ L e quem e´ L2.
Claramente, L = {anb / n ≥ 0} e portanto L2 = {anbamb / n ≥ 0 e m ≥ 0}. Assim, o
autoˆmato da figura A.22 reconhece L2.
17. Projete um afn, com na˜o mais que cinco estados, para o conjunto
{ababn/ n ≥ 0} ∪ {aban/ n ≥ 0}
Resposta: Um afn com cinco estados que reconhece esta linguagem e´ mostrado na
figura A.23.
??. Construa um afn que aceite a linguagem de todas as cadeias sobre o alfabeto {0, 1} com
um nu´mero par de 1’s ou um nu´mero ı´mpar de 0’s.
Resposta: Um afn que reconhece esta linguagem e´ ilustrado na figura A.24.
22. Use a construc¸a˜o do teorema 2.5.3 para converter os afn’s das figuras 2.11, 2.15, 2.24,
2.25, 2.27 e 2.28, e do exerc´ıcio ?? para afd ´s equivalentes. E´ poss´ıvel respostas mais
simples se fizermos os afd ´s diretamente?
290
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
q
q
1
2
q
q
q
q
q
q
q
3
4
5
6
7
8
9
0
0
1
1
0
1
0,1
0,1
0,1
0,1
0
0
1
1
0
1
Figura A.18: afd para o exerc´ıcio (9c).
Resposta: Aqui so´ veremos dois casos.
1. A figura A.25 mostra a conversa˜o do afn do exerc´ıcio ?? (figura A.24), para um
afd.
E´ poss´ıvel diminuir a quantidade de estados no autoˆmato, eliminando o estado inicial
com suas λ-transic¸o˜es e levando um controle da paridade de 1’s e 0’s lidos, de modo
similar ao autoˆmato constru´ıdo no exemplo 2.2.6. Assim, o afd da figura A.26
e´ uma outra alternativa para reconhecer a linguagem do exerc´ıcio ?? com menos
estados que o da figura A.25.
2. A figura A.27 mostra a conversa˜o do afn da figura 2.24, para um afd.
23. E´ verdade que para qualquer afn M = 〈Q,Σ, δ, q0, F 〉 o complemento de L(M) e´ igual ao
conjunto {w ∈ Σ∗/ δ∗(q0, w) ∩ F = ∅}? Prove sua resposta.
Respostas: Sim, pois
L(M) = σ∗ − L(M)
= Σ∗ − {w ∈ Σ∗ / δ∗(q0, w) ∩ F 6= ∅}
= {w / w ∈ Σ∗ e w 6∈ {w ∈ Σ∗ / δ∗(q0, w) ∩ F 6= ∅}}
Como {w ∈ Σ∗ / δ∗(q0, w) ∩ F 6= ∅} ⊆ Σ∗, temos que
L(M) = {w ∈ Σ∗ / na˜o e´ o caso que δ∗(q0, w) ∩ F 6= ∅}
= {w ∈ Σ∗ / δ∗(q0, w) ∩ F = ∅}
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
291
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
 q
1
 q
2
0
0
1
1
0
0,1
1
q
3
Figura A.19: afd para o exerc´ıcio (9e).
q
0
 q
1
 q
2
0
 0
1
1
0
0,1
1
q
3
0
q
5
q
4
0
q
6
0
1
q
7
1
1
1
 0
Figura A.20: afd para o exerc´ıcio (9g).
24. Mostre que se L e´ reconhecida por um autoˆmato finito (determin´ıstico ou na˜o), enta˜o LR
e L tambe´m sa˜o reconhecidos por algum autoˆmato finito.
Resposta: Se L e´ uma linguagem regular, enta˜o existe um afd M = 〈Q,Σ, δ, q0, F 〉 tal
que L(M) = L, isto e´ que reconhece L. Seja o seguinte afn MR = 〈Q̂,Σ, δ̂, q̂0, F̂ 〉 onde
1. Q̂ = Q ∪ q̂0
2. q̂0 6∈ Q e
3. δ̂ : Q̂× Σ ∪ {λ} −→ 2Q̂ e´ definido como segue:
δ̂(q, a) =

{q′} , se q ∈ Q e a ∈ Σ e δ(q′, a) = q
∅ , se q = q̂0 e a ∈ Σ
∅ , se q ∈ Q e a = λ
F , se q = q̂0 e a = λ
4. F̂ = {q0}
292
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
 q
1
 q
2
0
 0
1
 0,1
1
 0,1
q
3
Figura A.21: afd para o exerc´ıcio (9i).
q
0
q q
1 2
a
a a,b
b b a,b q
3
Figura A.22: afd para o exerc´ıcio 15.
Observe que o u´nico que se fez foi inverter as setas no diagrama, tirar o status de estado
inicial a q0 e poˆr um novo estado como inicial (q̂0), tirar o status dos estados finais e deixar
como estado final somente a {q0} (o antigo estado inicial); e acrescentar uma λ-transic¸a˜o
do novo estado inicial aos antigos estados finais. Assim, se para um certo w ∈ Σ∗ existe
um caminho em M que leva do estado inicial q0 a um estado final qf , isto e´ δ
∗(q0, w) ∈ F ,
enta˜o aplicando a λ-transic¸a˜o de q̂0 a qf no afn M
R e (como as setas esta˜o invertidas)
lendo w de direita para esquerda (ou seja consumindo wR) chegaremos necessariamente
a q0 que agora e´ um estado final. Portanto w
R sera´ aceito no afn MR. Assim, MR
reconhece a linguagem LR, isto e´ L(MR) = LR e portanto esta linguagem e´ regular.
No caso da linguagem L podemos facilmente obter um afd a partir deM que a reconhec¸a.
Seja M = 〈Q,Σ, δ, q0, F 〉, onde F = Σ∗ − F . Claramente, se δ(q0, w) ∈ F (ou seja w e´
aceito porM e por tanto faz parte de L), enta˜o δ(q0, w) 6∈ F , isto e´, δ(q0, w) ∈ F e portanto
w e´ aceito por M . Assim, M reconhece a linguagem L, isto e´ L(M) = L e portanto esta
linguagem e´ regular.
25. Seja Σ = {a, b}. Construa um afn, que na˜o seja afd, e depois transforme ele num afd
usando o algoritmo do teorema 2.5.3, para as seguintes linguagens:
(25a) L = {w ∈ Σ∗/w = uaaav para alguma cadeia u e v tal que Nb(v) e´ mu´ltiplo de 3},
Resposta: O afn da figura A.28 reconhece esta linguagem.
(25c) L = {w ∈ Σ∗/ w = uaaav, para alguma cadeia u, v ∈ Σ∗, e Na(u) e´ ı´mpar},
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
293
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
q
q
1 2
q
q3 4
a b
a
b
a
b
Figura A.23: afn para o exerc´ıcio 17.
q
0
q
1
 q
2
q
3
0
0
1
1
0
1
λ
q
4
1
0
λ
Figura A.24: afn para o exerc´ıcio ??.
Resposta: O afn da figura A.29 reconhece esta linguagem.
(25e) L = {uv ∈ Σ∗/ Na(u) = 3 e Nb(v) e´ mu´ltiplo de 3},
Resposta: O afn da figura A.30 reconhece esta linguagem.
27. Seja o afd da figura A.31 e aplique o algoritmo da minimizac¸a˜o de estados para achar um
afd mı´nimo equivalente a ele.
Resposta: Aplicando o passo 1 do algoritmo obtemos a tabela A.1
Agora aplicando o passo 2 (uma primeira rodada):
• como δ(q0, b) = q3, δ(q2, b) = q4, e (q3, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q0, q2).
294
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
0
1 0
0
{q0,q1,
q3}
{q1,q4}
{q2,q3}
{q1,q3}
{q2,q4}
0
0
1
11
1
Figura A.25: afd equivalente ao afn da figura A.24.
PP
PI
IP
II
1
1
0
0
0
0 1
1
Figura A.26: afd equivalente ao afd da figura A.25.
• como δ(q0, a) = q2, δ(q3, a) = q4, e (q2, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q0, q3).
• como δ(q0, a) = q2, δ(q6, a) = q4, e (q2, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q0, q6).
• como δ(q0, b) = q3, δ(q7, b) = q4, e (q3, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q0, q7).
• como δ(q1, b) = q3, δ(q2, b) = q4, e (q3, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q1, q2).
• como δ(q1, a) = q7, δ(q3, a) = q4, e (q4, q7) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q1, q3).
• como δ(q1, b) = q3, δ(q5, b) = q1, e (q1, q3) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q1, q5).
• como δ(q1, a) = q7, δ(q6, a) = q4, e (q4, q7) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q1, q6).
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
295
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
0
1
0
0,1
{q
0
}
φ
{q
0,
q
1
}
 {q
0,
q
2
}
1
{q
0,
q
1,
q
2
}
1
1
{q
2
}
0
0
0
1
Figura A.27: afd equivalente ao afn da figura 2.24.
• como δ(q1, b) = q3, δ(q7, b) = q4, e (q3, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q1, q7).
• como δ(q2, b) = q4, δ(q3, b) = q5, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q2, q3).
• como δ(q2, b) = q4, δ(q5, b) = q1, e (q1, q4) esta´ marcado,enta˜o colocamos uma marca
na posic¸a˜o (q2, q5).
• como δ(q2, b) = q4, δ(q6, b) = q5, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q2, q6).
• como δ(q3, a) = q4, δ(q5, a) = q5, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
q1
q2
q3
q4 × × × ×
q5 ×
q6 ×
q7 ×
q0 q1 q2 q3 q4 q5 q6
Tabela A.1: Estados que na˜o sa˜o do mesmo tipo no afd da Figura A.31.
296
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
 q
1
 q
2
a
 b
a
a,b
q
3
a
a
 a
q
4
q
5
b
b
a
Figura A.28: afn para o exerc´ıcio (25a).
q
0
 q
1
 q
2
a
 a
a
b
q
3
a
a,b
a
b
q
4
Figura A.29: afn para o exerc´ıcio (25c).
na posic¸a˜o (q3, q5).
• como δ(q3, a) = q4, δ(q7, a) = q5, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q3, q7).
• como δ(q5, a) = q5, δ(q6, a) = q4, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q5, q6).
• como δ(q5, b) = q1, δ(q7, b) = q4, e (q1, q4) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q5, q7).
• como δ(q6, a) = q4, δ(q7, a) = q5, e (q4, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q6, q7).
Agora aplicando o passo 2 (uma segunda rodada):
• como δ(q0, a) = q2, δ(q5, a) = q5, e (q2, q5) esta´ marcado, enta˜o colocamos uma marca
na posic¸a˜o (q0, q5).
A tabela A.2 apresenta o resultado de marcar as posic¸o˜es acima na tabela A.1.
Observe que as treˆs posic¸o˜es em branco na˜o podem ser marcadas pois:
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
297
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
q
0
 q
1
 q
2
a
a
a
b
q
3
a
 b,
λ
b
q
4
b
 b
q
5
b
a
q
6
b
b
a
Figura A.30: afn para o exerc´ıcio (25e).
q1
q2 × ×
q3 × × ×
q4 × × × ×
q5 × × × × ×
q6 × × × × ×
q7 × × × × × ×
q0 q1 q2 q3 q4 q5 q6
Tabela A.2: Estados que sa˜o equivalentes no afd da Figura A.31.
• δ(q0, a) = q2, δ(q1, a) = q7, e (q2, q7) na˜o esta marcado e δ(q0, b) = δ(q1, b).
• δ(q2, a) = δ(q7, a) e δ(q2, a) = δ(q7, a).
• δ(q3, a) = δ(q6, a) e δ(q3, a) = δ(q6, a).
Assim, a tabela A.2 apresenta os estados que sa˜o equivalentes no afd da Figura A.31 e
portanto podemos determinar as seguintes classes de equivaleˆncias:
• [q0] = {q0, q1}
• [q2] = {q2, q7}
• [q3] = {q3, q6}
• [q4] = {q4}
• [q5] = {q5}
Estas classes de equivaleˆncias sera˜o os estados do afd mı´nimo. O estado inicial e´ [q0] e o
estado final e´ [q4]. As transic¸o˜es sa˜o descritas a seguir:
• δ/≡([q0], a) = [δ(q0, a)] = [q2]
298
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
 q
2
q
1
 q
3
q
6
q
4
q
5
 q
7
a
a
a
a
a
a
a
a
b
b
b
b
b
b
b
b
Figura A.31: afd na˜o mı´nimo do exerc´ıcio 27
• δ/≡([q0], b) = [δ(q0, b)] = [q3]
• δ/≡([q2], a) = [δ(q2, a)] = [q5]
• δ/≡([q2], b) = [δ(q2, b)] = [q4]
• δ/≡([q3], a) = [δ(q3, a)] = [q4]
• δ/≡([q3], b) = [δ(q3, b)] = [q5]
• δ/≡([q4], a) = [δ(q4, a)] = [q0]
• δ/≡([q4], b) = [δ(q4, b)] = [q4]
• δ/≡([q5], a) = [δ(q5, a)] = [q5]
• δ/≡([q5], b) = [δ(q5, b)] = [q1] = [q0]
Assim a figura A.32 e´ o afd mı´nimo correspondente ao afd da figura A.31.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
299
A.2. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 2
[q
4
]
[q
2
]
[q
3
]
 [q
5
]
[q
0
]
a
b
a
b
a
b
a
b
a
b
Figura A.32: afd M/≡ obtido a partir do afd da Figura A.31.
300
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
A.3 Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 3
3. Escrever expresso˜es regulares para as seguintes linguagens no alfabeto {0, 1}:
(3a) Todas as cadeias terminando em 01.
Resposta: (0 + 1)∗01
(3c) Todas as cadeias com um nu´mero par de zeros.
Resposta: (01 ∗ 0 + 1)∗
(3d) Todas as cadeias com no ma´ximo duas ocorreˆncias da subcadeia 00.
Resposta: Entenderemos neste enunciado que a cadeia 0000 conte´m 3 ocorreˆncias
da subcadeia 00
3︷︸︸︷
00︸︷︷︸
1
00︸︷︷︸
2
Analogamente a cadeia 000 conte´m exatamente duas ocorreˆncias da subcadeia 00.
Nesta compreensa˜o, algumas expresso˜es regulares que descrevem esta linguagem sa˜o:
1. (01 + 1) ∗ (001(01 + 1)∗00 + 000 + 00 + λ)(10 + 1)∗
2. (01 + 1)∗((00 + λ)(1 + 10)∗(100 + λ) + 000)(10 + 1)∗
3. (01 + 1)∗(00((10 + 1)∗0(10 + 1)∗ + 1 + λ) + λ+ 0)
4. (01 + 1)∗00(10 + 1)∗0(10 + 1)∗ + (01 + 1)∗001∗ + (01 + 1)∗
(3e) de todas as cadeias que contenham as subcadeias 000 e 111.
Resposta: ((0 + 1)∗000(0 + 1)∗111(0 + 1)∗) + ((0 + 1)∗111(0 + 1)∗000(0 + 1)∗)
(3g) Todas as cadeias que para alguma ocorreˆncia de dois zeros eles estejam separados
por uma subcadeia de tamanho 3i, para algum i ≥ 0.
Resposta: Observe que uma cadeia com dois zeros consecutivos faz parte da lin-
guagem.
(0 + 1)∗0(101 + 111)∗0(0 + 1)∗
(3j) Todas as cadeias com uma quantidade ı´mpar de zeros.
Resposta: 1∗0(1∗01∗0)∗1∗
(3l) Todas as cadeias que na˜o contenham qualquer ocorreˆncia da subcadeia 000.
Resposta: (1 + 01 + 001)∗.
(3n) Todas as cadeias com exatamente uma ocorreˆncia da subcadeia 111.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
301
A.3. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 3
Resposta: (0 + 10 + 110)∗111(0 + 10 + 110)∗
(3p) Todas as cadeias com exatamente duas ocorreˆncias da subcadeia 000 e as quais
estejam separadas por uma quantidade ı´mpar de uns.
Resposta: (1 + 01 + 001)∗0001(11)∗000(1 + 01 + 001)∗.
5. Demonstre que:
(5a) (a+ b)∗ ≡ (a∗b∗)∗
Resposta:
L((a+ b)∗) = (L(a+ b))∗
= (L(a) ∪ L(b))∗
= ({a} ∪ {b})∗
= {a, b}∗
= {λ, a, b, aa, ab, ba, bb, aaa, aab, . . .}
L((a∗b∗)∗) = (L(a∗b∗))∗
= (L(a∗)L(b∗))∗
= (L(a)∗L(b)∗)∗
= ({a}∗{b}∗)∗
= ({λ, a, aa, aaa, . . .}{λ, b, bb, bbb, . . .})∗
= {λ, b, bb, . . . , a, ab, abb, . . . , aa, aab, . . .}∗
= {λ, a, b, aa, ab, ba, bb, aaa, aab, . . .}
Uma maneira mais formal de demonstrar a equivaleˆncia L((a + b)∗) = L((a∗b∗)∗) =
{a, b}∗ seria usando induc¸a˜o no tamanho da cadeia. A base da induc¸a˜o seria a cadeia
vazia (λ) a qual claramente pertence a ambas linguagens. A hipo´tese indutiva seria
uma cadeia arbitraria w ∈ L((a + b)∗) e w ∈ L((a∗b∗)∗). O passo indutivo seria
mostrar que wa,wb ∈ L((a+ b)∗) e wa,wb ∈ L((a∗b∗)∗).
(5c) a∗b∗ 6≡ (ab)∗
Resposta: Como por definic¸a˜o L(a∗b∗) = L(a∗)L(b∗) resulta fa´cil de ver que b ∈
L(a∗b∗), pois b = λb, λ ∈ L(a∗) e b ∈ L(b∗). Por outro lado, como L((ab)∗) = {ab}∗ =
{λ, ab, abab, ababab, . . .} enta˜o b 6∈ L((ab)∗) e portanto L(a∗b∗) 6= L((ab)∗).
(5e) aa∗ ≡ a∗a
302
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta:
L(aa∗) = L(a)L(a∗)
= {a}L(a)∗
= {a}{a}∗
= {a}{λ, a, aa, aaa, . . .}
= {a, aa, aaa, aaaa, . . .}
L(a∗a) = L(a∗)L(a)
= L(a)∗{a}
= {a}∗{a}
= {λ, a, aa, aaa, . . .}{a}
= {a, aa, aaa, aaaa, . . .}
7. Achar autoˆmatos finitos que aceitem as seguintes linguagens
Resposta: E´ claro que poder´ıamos usar o algoritmo do teorema 3.4.1, mas este e´ muito
tedioso e longo, pelo que optamos por construir diretamente o afn a partir da intuic¸a˜o da
linguagem.
(7a) L(aa∗(a+ b))
Resposta: Um afn que reconhece a linguagem L(aa∗(a+ b)) e´ ilustrado na figura
A.33. Observe que neste autoˆmato cada sub-expressa˜o regular de aa∗(a+ b) tem um
segmento do afn que “reconhece” essa expressa˜o.
q q0 q 1
a
2
a
a,b
Figura A.33: afn que reconhecea linguagem L(aa∗(a+ b))
(7c) L((ab+ b)∗(a+ λ))∗
Resposta: Um afn que reconhece a linguagem L((ab + b)∗(a + λ))∗ e´ ilustrado
na figura A.34 parte (A). No entanto, note que a ∈ L((ab + b)∗(a + λ)), pois λ ∈
L((ab + b)∗), a ∈ L(a + λ) e λa = a. Analogamente, b ∈ L((ab + b)∗(a + λ)), pois
b ∈ L((ab+ b)∗), λ ∈ L(a+ λ) e bλ = b. Logo,
L((ab+ b)∗(a+ λ)) = L((ab+ b)∗(a+ λ) + a+ b)
Portanto,
L(((ab+ b)∗(a+ λ))∗) = L(((ab+ b)∗(a+ λ) + a+ b)∗) = L((a+ b)∗)
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
303
A.3. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 3
Logo, um afn para a expressa˜o regular equivalente (a + b)∗ e´ ilustrado na figura
A.34 parte (B). Claramente, ambos autoˆmatos sa˜o equivalentes, isto e´, reconhecem a
mesma linguagem, mas o primeiro e´ inspirado na forma da expressa˜o regular ((ab +
b)∗(a + λ))∗ enquanto que o segundo e´ produto de uma ana´lises da linguagem em
questa˜o.
qq 0 q 1 2
ba, 
q
3
a, 
a,b
(B)
(A)
q
0
Figura A.34: afn que reconhece a linguagem L((ab+ b)∗(a+ λ))∗
(7e) L(aa∗bb∗aa∗)
Resposta: Um afn que reconhece a linguagem L(aa∗bb∗aa∗) e´ ilustrado na figura
A.35.
a b a
a bq q q a q
0 1 2 3
Figura A.35: afn que reconhece a linguagem L(aa∗bb∗aa∗)
(7g) L(a∗(b(bb)∗aa)∗)
Resposta: Um afn que reconhece a linguagem L(a∗(b(bb)∗aa)∗) e´ ilustrado na
figura A.36.
304
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
q
0
 q
1
 q
2
 q
3
a
a
a
b
b
b
q
4
λ
Figura A.36: afn que reconhece a linguagem L(a∗(b(bb)∗aa)∗)
8. Construir seguindo o algoritmo da sec¸a˜o 3.4.2 a expressa˜o regular que denota a linguagem
reconhecida pelo afd da figura 3.14.
Resposta: Segundo esse algoritmo devemos achar R21,1, mas para isso precisaremos achar
outros Rki,j intermedia´rios. Assim, a seguir acharei primeiro eles.
R01,1 = λ
R01,2 = 0 + 1
R02,1 = 1
R02,2 = λ+ 0
R11,1 = R
0
1,1(R
0
1,1)
∗R01,1 +R01,1
= λ(λ)∗λ+ λ
= λ
R11,2 = R
0
1,1(R
0
1,1)
∗R01,2 +R
0
1,2
= λ(λ)∗(0 + 1) + (0 + 1)
= 0 + 1
R12,1 = R
0
2,1(R
0
1,1)
∗R01,1 +R
0
2,1
= 1(λ)∗λ+ 1
= 1
R12,2 = R
0
2,1(R
0
1,1)
∗R01,2 +R
0
2,2
= 1(λ)∗(0 + 1) + (λ+ 0)
= 1(0 + 1) + λ+ 0
= λ+ 0 + 10 + 11
R21,1 = R
1
1,2(R
1
2,2)
∗R12,1 +R
1
1,1
= (0 + 1)(λ+ 0 + 10 + 11)∗1 + λ
Observe que, pelo fato de ser um afd simples, teria sido poss´ıvel obter a expressa˜o regular
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
305
A.3. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 3
((0 + 1)0∗1)∗
de forma direta se analisando o autoˆmato. Embora na˜o muito evidente, ambas expresso˜es
regulares sa˜o equivalentes.
9. Construir uma grama´tica linear a´ direita e uma linear a` esquerda para as linguagens
(9a) L((aab∗abab)∗)
Resposta: Uma grama´tica linear a` direita que gera esta linguagem e´ definida por
G = 〈{S,B}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ aaB | λ
B −→ bB | ababS
Uma grama´tica linear a` esquerda para esta mesma linguagem teria as seguintes
produc¸o˜es:
S −→ Babab | λ
B −→ Bb | Saa
(9c) L((a+ b)∗aaa)
Resposta: Uma grama´tica linear a` direita que gera esta linguagem e´ definida por
G = 〈{S}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ aS | bS | aaa
Uma grama´tica linear a` esquerda para esta mesma linguagem teria as seguintes
produc¸o˜es:
S −→ Aaaa
A −→ Aa | Ab | λ
(9e) L((a(aa)∗(bb)∗)∗aa∗)
Resposta: Uma grama´tica linear a` direita que gera esta linguagem e´ definida por
G = 〈{S,A,B,C}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ aA | aC
A −→ aaA | B
B −→ bbB | S
C −→ aC | a
Uma grama´tica linear a` esquerda para esta mesma linguagem teria as seguintes
produc¸o˜es:
S −→ Sa | Aa
A −→ B | λ
B −→ Bbb | C
C −→ Caa | Aa
11. Construir uma grama´tica regular que gere cada uma das seguintes linguagens sobre o
alfabeto {a, b}.
(11a) Todas as cadeias que terminem com treˆs a′s.
306
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta: Uma grama´tica regular (linear a` direita) que gera esta linguagem e´
definida por G = 〈{S}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ aS | bS | aaa
(11c) Todas as cadeias diferentes de (aaa)k, para qualquer k ≥ 0.
Resposta: Uma grama´tica regular (linear a` direita) que gera esta linguagem e´
definida por G = 〈{S,A}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ bA | aaaS | a | aa
A −→ aA | bA | λ
(11e) Todas as cadeias da forma aawaa, onde |w| e´ mu´ltiplo de treˆs.
Resposta: Uma grama´tica regular (linear a` direita) que gera esta linguagem e´
definida por G = 〈{S,A}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es
S −→ aaA
A −→ aaaA | aabA | abaA | abbA | baaA | babA | bbaA | bbbA | aa
(11g) Todas as cadeias com uma quantidade par de a’s mas sem qualquer ocorreˆncia da
subcadeia aaa.
Resposta: Uma grama´tica linear a` direita que gera esta linguagem e´ definida por
G = 〈{S,A,B,C,D,E}, {a, b}, S, P 〉, onde P e´ composto das seguintes produc¸o˜es.
S −→ bS | aA | λ
A −→ bB | aE
B −→ bB | aC
C −→ bS | aD | λ
D −→ bB
E −→ bS | λ
Nesta grama´tica S representa a situac¸a˜o onde ate´ esse momento foi gerado uma
quantidade par de a’s e onde o u´ltimo s´ımbolo gerado na˜o foi a. A representa a
situac¸a˜o onde ate´ esse momento foi gerado uma quantidade ı´mpar de a’s, o u´ltimo
s´ımbolo foi a mas o antepenu´ltimo na˜o foi a. B representa a situac¸a˜o onde ate´ esse
momento foi gerado uma quantidade ı´mpar de a’s e onde o u´ltimo s´ımbolo na˜o foi a.
C representa a situac¸a˜o onde ate´ esse momento foi gerado uma quantidade par de a’s,
o u´ltimo s´ımbolo foi a mas o antepenu´ltimo na˜o foi a. D representa a situac¸a˜o onde
ate´ esse momento foi gerado uma quantidade ı´mpar de a’s, os dois u´ltimos s´ımbolos
foram a’s mas o anterior a eles (caso haja algum) na˜o foi a. E representa a situac¸a˜o
onde ate´ esse momento foi gerado uma quantidade par de a’s, os dois u´ltimos s´ımbolos
foram a’s mas o anterior a eles (caso haja algum) na˜o foi a.
12. Achar as grama´ticas regulares para as linguagens reconhecidas pelos autoˆmatos da figura
3.15 seguindo o algoritmo da subsec¸a˜o 3.6.2.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
307
A.3. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 3
Resposta: As grama´ticas regulares seguintes descrevem as linguagens reconhecidas pelos
afd’s da figura 3.15.
(12a) A grama´tica linear a` direita resultante de aplicar o algoritmo da subsec¸a˜o 3.6.2 ao afd
da figura 3.15.a, e´ definida por G = 〈{q0, . . . , q4}, {a, b}, q0, P 〉, onde P e´ composto das
seguintes produc¸o˜es.
q0 −→ bq0 | aq1
q1 −→ aq1 | bq2
q2 −→ bq2 | aq3
q3 −→ aq4 | bq1 | λ
q4 −→ aq4 | bq4
(12c) A grama´tica linear a` direita resultante de aplicar o algoritmo da subsec¸a˜o 3.6.2 ao afd
da figura 3.15.c, e´ definida por G = 〈{q0, . . . , q4}, {a, b}, q0, P 〉, onde P e´ composto das
seguintes produc¸o˜es.
q0 −→ aq1 | bq3
q1 −→ aq1 | bq2 | λ
q2 −→ aq1 | bq2
q3 −→ aq4 | bq3 | λ
q4 −→ aq4 | bq3
13. Construir um afn, seguindo o algoritmo da subsec¸a˜o 3.6.1, para cada uma das seguintes
grama´ticas
(13a) S −→ abA;
A −→ baB;
B −→ aA | bb
Resposta: O afn ilustrado na figura A.37 reconhece a mesma linguagem gerada
por esta grama´tica regular.
S
 a
 A
b
 b
a
B
a
b
b
Figura A.37: afn que reconhece a linguagem gerada pela grama´tica regular do exerc´ıcio (13a).
(13c) S −→ aA | bS | λ;
A −→ aB | bS | λ;
B −→ aaS | bS | λ
308
Introduc¸a˜o a` Teoria da Computac¸a˜o:
LinguagensFormais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta: O afn ilustrado na figura A.38 reconhece a mesma linguagem gerada
por esta grama´tica regular.
S
a
A
b
b
 a
B
a
a
b
Figura A.38: afn que reconhece a linguagem gerada pela grama´tica regular do exerc´ıcio (13c).
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
309
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
A.4 Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
1. Prove que toda linguagem finita e´ regular.
Resposta: Se L e´ uma linguagem finita sobre um alfabeto Σ, enta˜o L = {w1, . . . , wn}
para algum n ≥ 0. Cada wi tem a seguinte forma: wi = ai1 · · · aiki . Claramente o afn
M = 〈{q0, q11 , . . . , q1k1 , . . . , qn1 , . . . , qnkn},Σ, q0, δ, {q1k1 , q2k2 , . . . , qnkn}〉 onde para cada i =
1, . . . , n, j = 1, . . . , ki− 1 e a ∈ Σ, temos que
δ(q0, a) = {qi1 : ai1 = a}
δ(qij , a) =
{ ∅ se a 6= aij+1
{qij+1} se a = aij+1
δ(qiki , 0) = ∅
3. Quais das seguintes igualdades sa˜o verdadeiras para todas as linguagens regulares e todos
os homomorfismos? Justifique.
(3a) h(L1 ∪ L2) = h(L1) ∪ h(L2)
Resposta: Se w ∈ h(L1 ∪L2), enta˜o w = h(v) para algum v ∈ L1 ∪L2. Se v ∈ L1,
enta˜o h(v) ∈ h(L1) e portanto w ∈ h(L1) ∪ h(L2). Analogamente, se v ∈ L2, enta˜o
h(v) ∈ h(L2) e portanto w ∈ h(L1) ∪ h(L2).
Por outro lado, se w ∈ h(L1) ∪ h(L2), enta˜o w ∈ h(L1) ou w ∈ h(L2). Se w ∈ h(L1),
enta˜o existe v ∈ L1 tal que h(v) = w. Logo, v ∈ L1 ∪ L2 e h(v) = w ∈ h(L1 ∪ L2).
Analogamente, se w ∈ h(L2), enta˜o existe v ∈ L2 tal que h(v) = w. Logo, v ∈ L1∪L2
e h(v) = w ∈ h(L1 ∪ L2).
Portanto, esta igualdade e´ verdadeira.
(3b) h(L1 ∩ L2) = h(L1) ∩ h(L2)
Resposta: Se w ∈ h(L1 ∩ L2), enta˜o w = h(v) para algum v ∈ L1 ∩ L2 e portanto
v ∈ L1 e v ∈ L2. Assim, w ∈ h(L1) e w ∈ h(L2). Logo, w ∈ h(L1) ∩ h(L2).
No entanto a reversa de esta igualdade na˜o e´ correta, isto e´ se w ∈ h(L1)∩h(L2), na˜o
necessariamente e´ verdade que w ∈ h(L1 ∩ L2). Provaremos isto atrave´s do seguinte
contra-exemplo: Seja L1 = {ab}, L2 = {ba} e h(a) = h(b) = ab. Trivialmente,
h(L1) ∩ h(L2) = h({ab}) ∩ h({ba})
= {h(ab)} ∩ {h(ba)}
= {abab} ∩ {abab}
= {abab}
h(L1 ∩ L2) = h({ab} ∩ {ba})
= h(∅)
= ∅
Por outro lado, se w ∈ h(L1)∩h(L2), enta˜o w ∈ h(L1) e w ∈ h(L2). Logo, v ∈ L1∪L2
e h(v) = w ∈ h(L1 ∪ L2). Analogamente, Se w ∈ h(L2), enta˜o existe v ∈ L2 tal que
h(v) = w. Logo, v ∈ L1 ∪ L2 e h(v) = w ∈ h(L1 ∪ L2).
310
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Assim esta igualdade na˜o e´ verdadeira.
(3c) h(Ln) = h(L)n
Resposta: Demonstraremos por induc¸a˜o em n que esta igualdade e´ correta.
Base da Induc¸a˜o: Se n = 0, enta˜o Ln = L0 = {λ}. Logo,
h(L0) = h({λ})
= {h(λ)}
= {λ}
= h({λ})0
Hipo´tese Indutiva: h(Li) = h(L)i.
Passo Indutivo:
h(Li+1) = h(LiL)
= h(Li)h(L)
= h(L)ih(L)
= h(L)i+1
Logo, podemos concluir que h(Ln) = h(L)n.
(3d) h(L∗) = h(L)∗
Resposta: w ∈ h(L∗) se, e somente se, existe v ∈ L∗ tal que w = h(v). Por definic¸a˜o
de fecho estrela, v ∈ L∗ se, e somente se, v ∈ Ln, para algum inteiro na˜o negativo
n. v ∈ Ln se, e somente se, w ∈ h(Ln). Pelo item anterior temos que w ∈ h(Ln) se,
e somente se, w ∈ h(L)n. Como, w ∈ h(L)n se, e somente se, w ∈ h(L)∗, podemos
concluir que h(L∗) = h(L)∗.
(3e) h(LR) = h(L)R
Resposta: Esta igualdade e´ incorreta, pois se L = {ab} e h(a) = aab e h(b) = bba,
enta˜o
h(LR) = h({ab}R)
= h({ba})
= bbaaab
h(L)R = h({ab})R
= (aabbba)R
= abbbaa
Logo, neste caso, h(LR) 6= h(L)R
(3f) h(L) = h(L)
Resposta: Esta igualdade e´ incorreta, pois se L = {ab} e h(a) = a e h(b) = a,
enta˜o
h(L) = h({a, b}∗ − {ab})
= {a}∗
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
311
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
h(L) = h({ab})
= {aa}
= {a, b}∗ − {aa}
Logo, neste caso h(L) 6= h(L)
4. Na prova do teorema 4.1.8, mostre que h(r) e´ uma expressa˜o regular. Enta˜o, mostre que
h(r) denota h(L).
Resposta: Provaremos por induc¸a˜o em r que h(r) e´ uma expressa˜o regular.
Base da Induc¸a˜o: Se r e´ uma expressa˜o regular primitiva, isto e´, r = λ, r = ∅ ou r = a
para algum a ∈ Σ1, enta˜o h(r) ou e´ λ, ou e´ ∅ ou e´ uma cadeia w ∈ Σ2, respectivamente,
em todos os casos h(r) e´ um expressa˜o regular.
Hipo´teses Indutiva: Assuma que r1 e r2 sa˜o expresso˜es regulares tais que h(r1) e h(r2)
tambe´m sa˜o expresso˜es regulares.
Passo Indutivo: Se r = r1 + r2, enta˜o
h(r) = h(r1 + r2)
= h(r1) + h(r2)
que e´ uma expressa˜o regular.
Se r = r1r2, enta˜o
h(r) = h(r1r2)
= h(r1)h(r2)
que e´ uma expressa˜o regular.
Se r = r∗1, enta˜o
h(r) = h(r∗1)
= h(r1)
∗
que e´ uma expressa˜o regular.
Assim podemos concluir que h(r) e´ uma expressa˜o regular sempre que r e´ uma expressa˜o
regular.
Por outro lado, devemos mostrar que h(r) denota h(L). Isto implica em mostrar que se
v ∈ L(h(r)), enta˜o v = h(w) para algum w ∈ L(r) e vice-versa, isto e´ que se w ∈ L(r)
enta˜o h(w) ∈ L(h(r)). Mas isto equivale a mostrar que L(h(r)) = h(L(r)). Faremos isto
por induc¸a˜o na complexidade da expressa˜o regular r.
Base da Induc¸a˜o: Seja r e´ uma expressa˜o regular primitiva.
Se r e´ λ enta˜o
312
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
L(h(λ)) = L(λ)
= {λ}
= {h(λ)}
= h({λ})
= h(L(λ)).
Se r e´ ∅ enta˜o
L(h(∅)) = L(∅)
= ∅
= h(∅)
= h(L(∅)).
Se r e´ um a ∈ Σ1 enta˜o L(r) = {a} e portanto
L(h(a)) = {h(a)}
= h({a})
= h(L(a)).
Logo, L(h(r)) = h(L(r)) quando r e´ uma expressa˜o regular primitiva.
Hipo´teses Indutiva: Assuma que r1 e r2 sa˜o expresso˜es regulares tais que L(h(r1)) =
h(L(r1)) e L(h(r2)) = h(L(r2)).
Passo Indutivo: Se r = r1 + r2, enta˜o
L(h(r)) = L(h(r1 + r2))
= L(h(r1) + h(r2))
= L(h(r1)) ∪ L(h(r2))
= h(L(r1)) ∪ h(L(r2))
= h(L(r1) ∪ L(r2))
= h(L(r1 + r2)).
Se r = r1r2, enta˜o
L(h(r)) = L(h(r1r2))
= L(h(r1)h(r2))
= L(h(r1))L(h(r2))
= h(L(r1))h(L(r2))
= h(L(r1)L(r2))
= h(L(r1r2)).
Se r = r∗1, enta˜o
L(h(r)) = L(h(r∗1))
= L(h(r1)
∗)
= L(h(r1))
∗
= h(L(r1))
∗
= h(L(r1)
∗).
Logo, podemos concluir que L(h(r)) = h(L(r)) para qualquer expressa˜o regular r.
5. Mostre que a famı´lia das linguagens regulares e´ fechada sobre unia˜o finita e intersecc¸a˜o
finita, isto e´, se L1, L2, . . . ,Ln sa˜o linguagens regulares enta˜o
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
313
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
n⋃
i=1
Li e
n⋂
i=1
Li
tambe´m sa˜o.
Resposta: Provaremos por induc¸a˜o em n o caso da unia˜o finita.
Base da Induc¸a˜o: Se n = 1, enta˜o
⋃n
i=1Li =
⋃1
i=1 Li = L1. Que claramente e´ regular.
Hipo´teses Indutiva: Assuma que
⋃n
i=1Li e´ regular.
Passo Indutivo: Provaremos que
⋃n+1
i=1 Li e´ regular. Como
n+1⋃
i=1
Li = (
n⋃
i=1
Li) ∪ Ln+1
enta˜o
⋃n+1
i=1 Li e´ uma unia˜o de duas linguagens regulares. Logo, pelo teorema 4.1.1,⋃n+1
i=1 Li e´ uma linguagem regular.
6. Sejam L1 e L2 duas linguagens sobre os alfabetos Σ1 e Σ2, respectivamente. O NEM de
duas linguagens e´
NEM(L1,L2) = {w ∈ (Σ1 ∪ Σ2)∗ / w 6∈ L1 e w 6∈ L2}.
Mostre que a famı´lia das linguagens regulares e´ fechada sobre NEM.
Resposta: Primeiro mostraremos passo a passo que NEM(L1,L2) = L1 ∪ L2.
NEM(L1,L2) = {w ∈ (Σ1 ∪ Σ2)∗ / w 6∈ L1 e w 6∈ L2}
= {w ∈ (Σ1 ∪ Σ2)∗ / ¬(w ∈ L1) e ¬(w ∈ L2)}
= {w ∈ (Σ1 ∪ Σ2)∗ / ¬(w ∈ L1 ou w ∈ L2)}
= {w ∈ (Σ1 ∪ Σ2)∗ / w ∈ L1 ou w ∈ L2}
= {w ∈ (Σ1 ∪ Σ2)∗ / w ∈ L1} ∪ {w ∈ (Σ1 ∪ Σ2)∗ / w ∈ L2}
= L1 ∪ L2
Como ja´ foi provado que as linguagem regulares sa˜o fechadas sobre complementoe unia˜o,
podemos concluir que se L1 e L2 sa˜o linguagens regulares enta˜o NEM(L1,L2) tambe´m e´
uma linguagem regular.
7 Mostre que as linguagens regulares sa˜o fechadas sobre a unia˜o disjunta, onde a unia˜o disjunta
de dois conjuntos (linguagens) L1 e L2 e´ definida por
L1 unionmulti L2 = {w0/ w ∈ L1} ∪ {w1/ w ∈ L2}
314
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta:
L1 unionmulti L2 = {w0/ w ∈ L1} ∪ {w1/ w ∈ L2}
= {w / w ∈ L1}{0} ∪ {w / w ∈ L2}{1}
= L1{0} unionmulti L2{1}
Como {0} e {1} sa˜o trivialmente linguagens regulares, e a classe das linguagens regulares
sa˜o fechadas sobre unia˜o e concatenac¸a˜o, temos que se L1 e L2 sa˜o linguagens regulares
enta˜o sua unia˜o disjunta, isto e´ L1 unionmulti L2, tambe´m e´ uma linguagem regular.
10. Seja L uma linguagem sobre um alfabeto Σ. Conforme visto no cap´ıtulo 1, a linguagem de
sufixos de L, denotada por LS , e´ definida como
LS = {w ∈ Σ∗ / vw ∈ L para algum v ∈ Σ∗}.
Demonstre que a classe das linguagens regulares e´ fechada sobre sufixos.
Resposta: Primeiro mostraremos que para qualquer linguagem L (regular ou na˜o), LS =
((LR)P )R, onde LR e´ linguagem reversa de L e LP e´ a linguagem de prefixos de L.
LS = {w ∈ Σ∗ / vw ∈ L para algum v ∈ Σ∗}
= {w ∈ Σ∗ / ((vw)R)R ∈ L para algum v ∈ Σ∗}
= {w ∈ Σ∗ / (wRvR)R ∈ L para algum v ∈ Σ∗}
= {w ∈ Σ∗ / wRvR ∈ LR para algum v ∈ Σ∗}
= {wR ∈ Σ∗ / wRvR ∈ LR para algum v ∈ Σ∗}R
= {w ∈ Σ∗ / wv ∈ LR para algum v ∈ Σ∗}R
= ((LR)P )R
Como a classe das linguagens regulares e´ fechada sobre prefixos e reversa, enta˜o podemos
concluir que se L e´ regular enta˜o LS tambe´m e´ regular.
13. Sejam L1 e L2 linguagens sobre alfabetos Σ1 e Σ2, respectivamente. Defina o operador ∧2
por
L1 ∧2 L2 = {uv/ u ∈ L1 ∪ L2 e v ∈ (Σ1 ∪ Σ2)∗}
Mostre que as linguagens regulares sa˜o fechadas sobre a operac¸a˜o ∧2 entre linguagens.
Resposta: Sejam G1 = 〈V1,Σ1, S1, P1〉 e G2 = 〈V2,Σ2, S2, P2〉 duas grama´ticas lineares
a` direita tais que L(G1) = L1 e L(G2) = L2. Seja X,S 6∈ V1 ∪ V2. Sem perca de
generalidade podemos considerar que V1 ∩ V2 = ∅. Claramente, a grama´tica G1 ∧2 G2 =
〈V1 ∪ V2 ∪ {S,X},Σ1 ∪ Σ2, S, P1 ∧X P2〉 onde
P1 ∧X P2 = {A −→ x ∈ P1 ∪ P2/ x 6∈ (Σ1 ∪ Σ2)∗} ∪ {A −→ xX/ A −→ x ∈ P1 ∪ P2 e
x ∈ (Σ1 ∪ Σ2)∗} ∪ {S −→ S1, S −→ S2} ∪ {X −→ aX/ a ∈ Σ1 ∪ Σ2} ∪ {X −→ λ}, e´ tal
que L(G1 ∧2 G2) = L(G1) ∧2 L(G2) = L1 ∧2 L2.
Por exemplo, se P1 consistir das seguintes produc¸o˜es:
S1 −→ aaS1 | bA
A −→ bbA | aaS1 | λ
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
315
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
e P2 consistir das seguintes produc¸o˜es:
S2 −→ aS2 | bS2 | abB
B −→ baB | C
C −→ ccC | cc
Enta˜o P1 ∧X P2 consistiria das seguintes produc¸o˜es:
S −→ S1 | S2
S1 −→ aaS1 | bA
A −→ bbA | aaS1 | X
S2 −→ aS2 | bS2 | abB
B −→ baB | C
C −→ ccC | ccX
X −→ aX | bX | cX | λ
17. Mostre que existe um algoritmo para determinar se L1 ⊆ L2, para qualquer linguagem
regular L1 e L2.
Resposta: Observe que em conjuntos A ⊆ B se e somente se B ∩ A = ∅. Como as
linguagens regulares sa˜o fechadas sobre complemento e intersecc¸a˜o, enta˜o L2 ∩ L1 e´ uma
linguagem regular. De fato seria poss´ıvel construir algoritmicamente um afd que reco-
nhec¸a essa linguagem baseada em afd’s que reconhecem L1 e L2. Agora aplicamos o
algoritmo para detectar se um afd reconhece uma linguagem vazia ou na˜o‘ao afd que
reconhece L2 ∩ L1. Se tivermos como resposta“sim” enta˜o L1 ⊆ L2 e caso contra´rio
L1 6⊆ L2.
19. Seja a tabela 4.1. A primeira coluna representa os ro´tulos de cada fila na tabela enquanto a
primeira fila representa os ro´tulos de cada coluna na tabela. Para cada x, y ∈ Σ = {a, b, c}
denote por T (x, y) o conteu´do da tabela para a posic¸a˜o (x, y). Seja a seguinte func¸a˜o
A : Σ+ → Σ definida por
• A(a) = a, para cada a ∈ Σ e
• A(wa) = T (A(w), a), para cada w ∈ Σ+ e a ∈ Σ.
Demonstre que a seguinte linguagem e´ regular:
L = {w ∈ Σ+/A(w) = A(wR)}
Resposta: Primeiro devemos entender bem o problema. A notac¸a˜o T (b, a) e´ o conteu´do
da tabela 4.1 na posic¸a˜o da linha b com a coluna a e portanto T (b, a) = c, ja´ T (a, b) = a.
Assim,
316
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
A(aababcc) = T (A(aababc), c)
= T (T (A(aabab), c), c)
...
= T (T (T (T (T (T (a, a), b), a), b), c), c)
= T (T (T (T (T (a, b), a), b), c), c)
= T (T (T (T (a, a), b), c), c)
= T (T (T (a, b), c), c)
= T (T (a, c), c)
= T (c, c)
= a
Por outro lado,
A((aababcc)R) = A(ccbabaa)
= T (A(ccbaba), a)
= T (T (A(ccbab), a), a)
...
= T (T (T (T (T (T (c, c), b), a), b), a), a)
= T (T (T (T (T (a, b), a), b), a), a)
= T (T (T (T (a, a), b), a), a)
= T (T (T (a, b), a), a)
= T (T (a, a), a)
= T (a, a)
= a
Portanto, A(aababcc) = A(ccbabaa) o que implica que aababcc ∈ L.
Como, trivialmente, para todo pal´ındromo w temos que A(w) = A(WR), enta˜o esta lin-
guagem contem propriamente os pal´ındromos e portanto e´ infinita. Observe que o lema
do bombeamento na˜o pode ser usado para provar que L e´ regular, pois ele so garante que
L for regular enta˜o satisfaz as condic¸o˜es, ma so fato de satisfazer as condic¸o˜es na˜o implica
em que seja regular.
Certamente esta linguagem na˜o e´ fa´cil de descrever sem ter que recorrer a` tabela associativa
por tanto a missa˜o de achar um autoˆmato finito para esta linguagem de forma direta e´
na˜o trivial. Pore´m, aqui so´ faremos uma prova de que existe tal autoˆmato finito. Sejam
os afd da figura A.39. Claramente, eles reconhecem as seguintes linguagens
• La = {w ∈ {a, b, c}/A(w) = A(wR) = a}
• Lb = {w ∈ {a, b, c}/A(w) = A(wR) = b}
• Lc = {w ∈ {a, b, c}/A(w) = A(wR) = b}
Por outro lado, e´ fa´cil ver que
L = (La ∩ LRa ) ∪ (Lb ∩ LRb ) ∪ (Lc ∩ LRc ).
Logo, como as linguagens regulares sa˜o fechadas sobre intersecc¸a˜o, unia˜o e reversa, enta˜o
L e´ uma linguagem regular.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
317
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
Esta prova so´ mostra a existeˆncia, mas a partir dela com algo de esforc¸o seria poss´ıvel
construir um afd que reconhec¸a L.
20. Seja Σ = {0, 1}. Mostre que e´ poss´ıvel aplicar o lema do bombeamento para as seguintes
linguagens regulares.
(20a) L = {w ∈ Σ∗ / 0110 e´ um prefixo de w}
Resposta: Seja m = 5, w ∈ L tal que |w| ≥ m, x = 0110, e y com z cadeias tais
que w = xyz e |y| = 1. Claramente |xy| = m. Claramente, para cada i = 0, 1, . . .,
temos que xyiz = 0110yiz ∈ L.
(20c) L = {w ∈ Σ∗ / w = u111v para algum u, v ∈ Σ∗}
Resposta: Seja m = 5, w ∈ L tal que |w| ≥ m. Como, w = u111v, se u = λ
enta˜o considere x = 111, e y com z cadeias tais que w = xyz e |y| = 1. Claramente
|xy| < m. Claramente, para cada i = 0, 1, . . ., temos que xyiz = 111yiz ∈ L. Se
u 6= λ, enta˜o considere x = λ, e y com z cadeias tais que w = xyz e |y| = 1. Assim,
a subcadeia 111 ocorre em z e portanto z = u111v para algum u, v ∈ Σ∗. Logo,
xyiz = yiz = yiu111v ∈ L.
21. Mostre que as linguagens sobre Σ = {a, b}, definidas a seguir, na˜o sa˜o regulares.
(21a) L = {w ∈ Σ∗/ Na(w) = Nb(w)}
Resposta: Para demonstrar que esta linguagens na˜o e´ regular, devemos mostrar
que ela na˜o satisfaz o lema do bombeamento, ou analogamente que ela satisfaz o
corola´rio do lema do bombeamento (corola´rio 4.3.6). Claramente L e´ infinita.
Seja m um inteiro positivo qualquer e w = ambm. Claramente w ∈ L. Seja, x, y e
z cadeias tais que w = xyz, |xy| ≤ m e |y| ≥ 1. Enta˜o, x = ai e y = aj (portanto
z = am−(i+j)bm), para algum i e j satisfazendo i+ j ≤ m e j ≥ 1. A cadeia xy2z 6∈ L,
pois xy2z = aiajajam−(i+j)bm = am+jbm. Como j ≥ 1, enta˜o m+ j > m e portanto
xy2z = am+jbm 6∈ L.(21b) L = {w ∈ Σ∗/ Na(w) 6= Nb(w)}
Resposta: Note que esta linguagem e´ o complemento da linguagem do exerc´ıcio
anterior (Exerc´ıcio 21a). Como linguagens regulares sa˜o fechadas sobre complemento
enta˜o se L = {w ∈ Σ∗/ Na(w) 6= Nb(w)} for regular a linguagem do Exerc´ıcio 21a
tambe´m seria regular, mas ja´ foi provado que ela na˜o e´ regular, chegando a uma
contradic¸a˜o. Logo, podemos concluir que L = {w ∈ Σ∗/ Na(w) 6= Nb(w)} na˜o e´
regular.
Para demonstrar que esta linguagens na˜o e´ regular usando diretamente o corola´rio
do lema do bombeamento (corola´rio 4.3.6) considere um inteiro positivo m qualquer
e w = amb2m!. Claramente w ∈ L. Seja, x, y e z cadeias tais que w = xyz, |xy| ≤ m
e |y| ≥ 1. Enta˜o, x = ai e y = aj (portanto z = am−(i+j)bm!+m), para algum i e j
318
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
satisfazendo i+ j ≤ m e j ≥ 1. Note que m!j +1 = 1+
∏j−1
k=1 k×
∏m
k′=j+1 k
′ e portanto
e´ um inteiro positivo. Mas,
xy
m!
j z = ai(aj)
m!
j
+1am−(i+j)bm!+m
= aiaj×(
m!
j
+1)am−(i+j)bm!+m
= aiam!+jam−(i+j)bm!+m
= ai+m!+j+m−(i+j)bm!+m
= am!+mbm!+m 6∈ L.
Portanto, L na˜o e´ uma linguagem regular.
(21d) L = {ambn/ m > n}
Resposta: Para demonstrar que esta linguagens na˜o e´ regular, devemos mostrar
que ela na˜o satisfaz o lema do bombeamento, ou analogamente que ela satisfaz o
corola´rio do lema do bombeamento (corola´rio 4.3.6). Claramente L e´ infinita.
Seja m um inteiro positivo qualquer e w = ambm−1. Claramente w ∈ L. Seja,
x, y e z cadeias tais que w = xyz, |xy| ≤ m e |y| ≥ 1. Enta˜o, x = ai e y = aj
(portanto z = am−(i+j)bm−1), para algum i e j satisfazendo i + j ≤ m e j ≥ 1. A
cadeia xy0z 6∈ L, pois xy0z = aiam−(i+j)bm−1 = am−jbm−1. Como j ≥ 1, enta˜o
m− j ≤ m− 1 e portanto xy0z = am−jbm−1 6∈ L.
(21e) L = {ambn/ m 6= n}
Resposta: Para demonstrar que esta linguagens na˜o e´ regular, devemos mostrar
que ela na˜o satisfaz o lema do bombeamento, ou analogamente que ela satisfaz o
corola´rio do lema do bombeamento (corola´rio 4.3.6). Claramente L e´ infinita.
Seja m um inteiro positivo qualquer e w = ambm!+m. Claramente w ∈ L. Seja, x, y
e z cadeias tais que w = xyz, |xy| ≤ m e |y| ≥ 1. Enta˜o, x = ai e y = aj (portanto
z = am−(i+j)bm!+m), para algum i e j satisfazendo i + j ≤ m e j ≥ 1. A cadeia
xy
m!
j
+1z 6∈ L, pois
xy
m!
j
+1z = aiaj
m!
j
+1
am−(i+j)bm!+m
= aiaj(
m!
j
+1)am−(i+j)bm!+m
= am−jam!+jbm!+m
= amam!bm!+m
= am!+mbm!+m.
23. Seja Σ = {a, b} e .̂ : Σ∗ → Σ∗ a operac¸a˜o definida recursivamente a seguir:
• λ̂ = λ
• ŵa = ŵaa
• ŵb = ŵbb
Mostre usando o lema do bombeamento que a linguagem L = {wŵ/ w ∈ Σ∗} na˜o e´ regular.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
319
A.4. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 4
Resposta: Para demonstrar que esta linguagens na˜o e´ regular, devemos mostrar que ela
na˜o satisfaz o lema do bombeamento, ou analogamente que ela satisfaz o corola´rio do lema
do bombeamento (corola´rio 4.3.6). Claramente L e´ infinita.
Seja m um inteiro positivo qualquer e w = amb. Claramente a cadeia wŵ = ambbma ∈ L.
Seja, x, y e z cadeias tais que wŵ = xyz, |xy| ≤ m e |y| ≥ 1. Enta˜o, x = ai e y = aj
(portanto z = am−(i+j)bbma), para algum i e j satisfazendo i + j ≤ m e j ≥ 1. A cadeia
xy2z 6∈ L, pois xy2z = aiajajam−(i+j)bbma = am+jbbma. Como j ≥ 1, enta˜o m+ j > m e
portanto âm+jb 6= bma. Logo, am+jbbma 6∈ L.
320
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
A.5 Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
3. Achar as grama´ticas livres do contexto para as seguintes linguagens (com m ≥ 0, n ≥ 0 e
k ≥ 0).
(3a) L = {anbm / n 6= m− 1},
Resposta: Observe que
L = {anbm / n 6= m− 1}
= {anbm / n > m− 1} ∪ {anbm / n < m− 1}
= {anbm / n ≥ m} ∪ {anbm / n+ 2 ≤ m}
= {anbm / n ≥ m} ∪ {anbkbb / n ≤ k}
Assim, L = L1 ∪ L2, onde L1 = {anbm / n ≥ m} e L2 = {anbkbb / n ≤ k}
Uma grama´tica livre do contexto que gera a linguagem L1 e´ a seguinte
S1 −→ aS1b | A
A −→ aA | λ
Por outro lado, uma grama´tica livre do contexto que gera a linguagem L2 e´ a seguinte
S2 −→ aS2b | B
B −→ bB | bb
A unia˜o destas duas linguagens se faz simplesmente (pois na˜o tem varia´veis em co-
mum) juntando ambas grama´ticas e adicionando uma nova varia´vel inicial e duas
produc¸o˜es comec¸ando dela, uma para S1 e a outra para S2. Assim, o resultado desta
junc¸a˜o e´ a grama´tica livre do contexto:
S −→ S1 | S2
S1 −→ aS1b | A
A −→ aA | λ
S2 −→ aS2b | B
Blra bB | bb
(3c) L = {anbm / n ≤ m+ 3},
Resposta:
S −→ aSb | A
A −→ Ab | aaa
(3e) L = {anbmck / n = m ou m ≤ k},
Resposta: Esta linguagem e´ a unia˜o das linguagem L1 e L2, onde L1 = {anbmck / n =
m} e L2 = {anbmck / m ≤ k}. Assim, uma grama´tica livre do contexto para esta
linguagem resulta da unia˜o das respectivas grama´ticas livres do contexto para L1 e
L2.
Uma grama´tica livre do contexto que gera L1 e´ a seguinte:
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
321
regivan
Realce
regivan
Realce
regivan
Texto digitado
| lambda
regivan
Texto digitado
regivan
Riscado
regivan
Texto digitado
| C
regivan
Texto digitado
C -> a | aa | aaa | lambda 
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
S1 −→ BC
B −→ aBb | λ
C −→ cC | λ
Uma grama´tica livre do contexto que gera L2 e´ a seguinte:
S2 −→ AD
A −→ aA | λ
D −→ bDc | E
E −→ cE | λ
Portanto, como ambas grama´ticas na˜o teˆm varia´veis em comum, uma grama´tica livre
do contexto que gera L1 ∪ L2, isto e´ L, e´ a seguinte:
S −→ S1 | S2
S1 −→ BC
B −→ aBb | λ
C −→ cC | λ
S2 −→ AD
A −→ aA | λ
D −→ bDc | E
E −→ cE | λ
(3g ) L = {anbmck / n = m ou m 6= k},
Resposta: Esta linguagem e´ a unia˜o das linguagens: L1 = {anbmck / n = m},
L2 = {anbmck / m < k} e L3 = {anbmck / m > k}. Uma grama´tica livre do contexto
para L1 foi dada no exerc´ıcio anterior, ja´ as grama´ticas livres do contexto de L2 e L3
sa˜o as seguintes:
S2 −→ AD
A −→ aA | λ
D −→ bDc | E
E −→ cE | c
S3 −→ AF
A −→ aA | λ
F −→ bFc | G
G −→ bG | b
Assim, juntando as treˆs grama´ticas resulta na seguinte grama´tica livre de contexto:
322
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
S −→ S1 | S2 | S3
S1 −→ BC
B −→ aBb | λ
C −→ cC | λ
S2 −→ AD
A −→ aA | λ
D −→ bDc | E
E −→ cE | c
S3 −→ AF
F −→ bFc | G
G −→ bG | b
(3i) L = {w ∈ {a, b}∗ / Na(w) e´ ı´mpar }
Resposta:
S −→ bS | aA
A −→ aS | bA | λ
(3k) L = {akbman / 2k = n+m},
Resposta:
S −→ aSaa | aAba | A
A −→ aAbb | λ
(3m) L = {akbman / m = 2(n+ k) + 1},
Resposta:
S −→ AbB
A −→ aAbb | λ
B −→ bbBa | λ
(3o) L = {akbmanbp / m = k ou n = p}
Resposta:
S −→ AB | BA
A −→ aAb | ab
B −→ aB | bC
C −→ bC | λ
4. Desenhe uma grama´tica livre de contexto que gere todas as expresso˜es regulares va´lidas sobre
o alfabeto {a, b}. Por exemplo deve permitir gerar as cadeias (a+ aa∗b)∗ + (λ+ aa)(bb)∗b
e (ab+ ba)∗(aa+ bb)∗.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
323
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
Resposta: A grama´tica deve gerar todas as expresso˜es regulares sobre o alfabeto {a, b}.
Assim, por exemplo, deve gerar as expresso˜es regulares a, ∅, a+b, (a+b)∗b e (aab+b)∗(a+λ).
Portanto o conjunto de s´ımbolos terminais da grama´tica deve conter todos os poss´ıveis
s´ımbolos usados numa expressa˜o regular sobre este alfabeto. Logo, o conjunto de s´ımbolos
terminais deveria ser: {a, b, λ, ∅, (, ),+, ·,∗ }, pore´m para na˜o confundir a cadeia vazia λnuma grama´tica livre do contexto com o s´ımbolo terminal λ, usaremos o s´ımbolo λ para
representar este u´ltimo. Por uma questa˜o de simplicidade a grama´tica se baseara´ na
definic¸a˜o original de expresso˜es regulares (definic¸a˜o 3.1.1) com uma u´nica abreviac¸a˜o: a
supressa˜o do s´ımbolo de concatenac¸a˜o “·”.
S −→ a | b | λ | ∅ | (S + S) | (S)∗ | SS
Observe que esta grama´tica permitiria expresso˜es regulares do tipo (aλ∅+ bb(∅)∗a)∗. Mas
observe que isto tambe´m e´ permitido pela definic¸a˜o 3.1.1. Caso nos quisermos coibir
expresso˜es regulares que possuam uma sub-expressa˜o regular da forma r1r2 com r1 sendo
λ ou ∅ e r2 na˜o, ou vice-versa, ter´ıamos que modificar a grama´tica livre do contexto para:
S −→ λ | ∅ | S1
S1 −→ a | b | (S + S) | (S)∗ | S1S1
Observe que isto na˜o diminui o poder de expressa˜o das expresso˜es regulares, pois L(rλ) =
L(r) e L(r∅) = L(∅).
5. Achar uma grama´tica livre do contexto para a linguagem
L = {anwwRbn / w ∈ {a, b}∗, n ≥ 1}
Resposta:
S −→ aSb | aAb
A −→ aAa | bAb | λ
6. Defina uma grama´tica livre do contexto para a linguagem de todas cadeias no alfabeto {a, b}
que na˜o sa˜o pal´ındromos. Isto e´, para a linguagem
L = {w ∈ {a, b}∗ / w 6= wR}
Resposta:
S −→ aSa | bSb | A
A −→ aBb | bBa
B −→ aB | bB | λ
7. Seja L = {anbn / n ≥ 0}
(7a) Mostre que L2 e´ livre do contexto.
324
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta: Antes devemos analisar quem e´ L2. L2 sa˜o todas as cadeias w tal que
w = uv e u ∈ L e v ∈ L, mas u e v na˜o precisam ser as mesmas cadeias, por tanto
u = anbn para algum n ≥ 0 e v = ambm para algum m ≥ 0. Assim,
L2 = {anbnambm / n ≥ 0 e m ≥ 0}
Uma grama´tica livre do contexto para esta linguagem e´ a seguinte:
S −→ AA
A −→ aAb | λ
8. Mostre uma a´rvore de derivac¸a˜o para a cadeia aabbbb, com a grama´tica
S −→ AB | λ,
A −→ aB,
B −→ Sb.
Deˆ uma descric¸a˜o da linguagem gerada por essa grama´tica.
Resposta: Uma a´rvore de derivac¸a˜o para a cadeia aabbbb e´ ilustrada na figura A.40.
A linguagem gerada por esta grama´tica livre do contexto consiste de todas as cadeias da
forma anb2n com n ≥ 0.
11. Mostre que a grama´tica seguinte e´ amb´ıgua
S −→ AB | aaB,
A −→ a | Aa,
B −→ b.
Resposta: Uma grama´tica e´ amb´ıgua se existem duas derivac¸o˜es mais a` esquerda para
uma mesma cadeia. Neste caso a cadeia aab a qual tem as seguintes derivac¸o˜es mais a`
esquerda:
1) S ⇒ AB ⇒ AaB ⇒ aaB ⇒ aab
2) S ⇒ aaB ⇒ aab
12. Construa uma grama´tica na˜o amb´ıgua, equivalente a` grama´tica do exerc´ıcio anterior.
Resposta: A Ambigu¨idade na grama´tica anterior so´ ocorre por causa da produc¸a˜o S −→
aaB, que so´ e´ usada para gerar a cadeia aab. Logo retirando esta produc¸a˜o da grama´tica,
como abaixo, obtemos uma grama´tica equivalente a` anterior mas na˜o amb´ıgua.
S −→ AB
A −→ a | Aa,
B −→ b.
14. Mostre que toda S-grama´tica e´ na˜o-amb´ıgua.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
325
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
Resposta: Seja G = 〈V, T, S, P 〉 uma S-grama´tica. Lembre que em S-grama´ticas todas
as produc¸o˜es teˆm a forma A −→ ax com a ∈ T e x ∈ V ∗. Se A −→ ax e A −→ ay sa˜o
produc¸o˜es em P , enta˜o necessariamente x = y.
Suponha que ela e´ amb´ıgua. Enta˜o existe uma cadeia, digamos a1 . . . an ∈ T ∗ com pelo
menos duas derivac¸o˜es mais a` esquerda. Observe que neste caso a varia´vel mais a` esquerda
e´ trocada, e portanto a cada etapa um u´nico s´ımbolo e´ gerado. Logo, duas derivac¸o˜es mais
a` esquerda realizam as seguintes etapas:
S ⇒ a1x1 ⇒ a1a2x2 ⇒ · · · ⇒ a1 . . . an−1xn ⇒ a1 . . . an (A.1)
e
S ⇒ a1y1 ⇒ a1a2y2 ⇒ · · · ⇒ a1 . . . an−1yn ⇒ a1 . . . an (A.2)
com xi, yi ∈ V +.
Mostraremos por induc¸a˜o que cada forma sentencial a1 . . . akxk = a1 . . . akyk.
Base da Induc¸a˜o: k = 1. Se S ⇒ a1x1 e S ⇒ a1y1 enta˜o S −→ a1x1 e S −→ a1y1
esta˜o ambas em P . Mas, pela S-condic¸a˜o x1 = y1.
Hipo´teses Indutiva: Suponha que para algum k < n, xk = yk.
Passo Indutivo: Seja A a varia´vel mais a` esquerda de xk (e pela hipo´tese indutiva
tambe´m de yk). Como a1 . . . akxk ⇒ a1 . . . akak+1xk+1 e a1 . . . akyk ⇒ a1 . . . akak+1yk+1,
enta˜o A −→ ak+1xk+1 e A −→ ak+1yk+1. Logo pela S-condic¸a˜o, xk+1 = yk+1
Assim, para qualquer k < n temos que xk = yk e por conseguinte a derivac¸a˜o (A.1) e´ igual
a` derivac¸a˜o (A.2).
16. Use o teorema 5.5.3, para remover produc¸o˜es esquerda-recursivas nas grama´ticas
(16a) S −→ abS | SS | λ
Resposta: A u´nica produc¸a˜o esquerda-recursiva e´ S −→ SS, portanto, pelo teo-
rema 5.5.3, na grama´tica acima eliminamos essa produc¸a˜o e em seu lugar colocamos
as produc¸o˜es S −→ abSZ, S −→ Z, Z −→ S e Z −→ SZ, ou seja obtemos a seguinte
grama´tica:
S −→ abS | abSZ | λ | Z
Z −→ S | SZ
(16c) S −→ aZ | SbS,
Z −→ aZb | λ.
326
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
Resposta: So´ temos uma produc¸a˜o esquerda-recursiva. Realizando as substituic¸o˜es
apontadas pelo teorema 5.5.3 a` grama´tica, obtemos a seguinte grama´tica livre do
contexto:
S −→ aZ | aZY
Z −→ aZb | λ
Y −→ Sb | SbY
19. Elimine as λ-produc¸o˜es de
S −→ AaB | aCaB,
A −→ aBa | λ | B,
B −→ bbA | λ,
C −→ bbbC | AB.
Resposta: Claramente A e B sa˜o anula´veis. Como ha´ uma produc¸a˜o C −→ AB, enta˜o
C tambe´m e´ anula´vel. Logo o conjunto VN de todas as varia´veis anula´veis na grama´tica
e´ {A,B,C}. Agora colocamos todas produc¸o˜es que na˜o sa˜o λ-produc¸o˜es e adicionamos
aquelas substituindo em todas as combinac¸o˜es poss´ıveis as varia´veis A e B por λ, isto
resulta na seguinte grama´tica:
S −→ AaB | aCaB | Aa | aB | a | aCa | aaB | aa,
A −→ aBa | B | aa,
B −→ bbA | bb,
C −→ bbbC | bbb | AB | A | B.
21. Elimine produc¸o˜es unita´rias, λ-produc¸o˜es, produc¸o˜es inu´teis e produc¸o˜es esquerda-recursivas
nas seguintes grama´ticas livres do contexto:
(21d) S −→ AbAaBa | ABSa | aAAbC,
A −→ aAa | λ,
B −→ bbB | BCa | aD | λ,
C −→ cAE | aCCa,
D −→ E | F ,
E −→ aCb,
F −→ FaF | FSaA,
G −→ SaH,
H −→ aA | λ.
Resposta: Primeiro eliminaremos produc¸o˜es inu´teis usando o algoritmo na prova
do teorema 5.5.7. Este e´ constitu´ıdo de duas partes. Da primeira parte obtemos as
seguintes produc¸o˜es:
S −→ AbAaBa | ABSa,
A −→ aAa | λ,
B −→ bbB | λ,
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
327
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
G −→ SaH,
H −→ aA | λ.
Agora aplicando a segunda parte obtemos:
S −→ AbAaBa | ABSa,
A −→ aAa | λ,
B −→ bbB | λ,
Agora eliminaremos λ-produc¸o˜es e aplicamos o algoritmo do teorema 5.5.10, resul-
tando na grama´tica:
S −→ AbAaBa | ABSa | bAaBa | AbaBa | AbAaa | baBa | bAaa | Abaa |
baa | ASa | BSa | Sa,
A −→ aAa | aa,
B −→ bbB | bb,
Como na˜o ha´ produc¸o˜es unita´rias passamos a remover produc¸o˜es esquerda recursivas
usando o algoritmo do teorema 5.5.3. Note que so´ existe uma produc¸a˜o esquerda
recursiva: S −→ Sa. A remoc¸a˜o resulta na seguinte grama´tica:
S −→ AbAaBa | ABSa | bAaBa | AbaBa | AbAaa | baBa | bAaa | Abaa |
baa | ASa | BSa | AbAaBaZ | ABSaZ | bAaBaZ | AbaBaZ |
AbAaaZ | baBaZ | bAaaZ | AbaaZ | baaZ | ASaZ | BSaZ,
Z −→ a | aZ,
A −→ aAa | aa,
B −→ bbB | bb,
23. Converter as seguintes grama´ticas a` forma normal de Chomsky
(23a) S −→ aSb | ab
Resposta: Para transformar esta grama´tica livre do contexto numa grama´tica
tambe´m livre do contexto equivalente na forma normal de Chomsky, a demonstrac¸a˜o
do teorema 5.6.2, sugere que primeiro se devem eliminar as produc¸o˜es unita´rias e
λ-produc¸o˜es, que neste caso na˜o ha´, para depois seguir as seguintes duas etapas.
Etapa 1: Devemos substituircada s´ımbolo terminal, por exemplo a, nas produc¸o˜es
por novas varia´veis, Ba, e depois introduzir as produc¸o˜es Ba −→ a. Assim, aplicando
esta etapa, a grama´tica acima se transforma na grama´tica:
S −→ BaSBb | BaBb
Ba −→ a
Bb −→ b
Etapa 2: Devemos substituir as produc¸o˜es que tenham mais de duas varia´veis (su-
ponha A −→ X1 . . . Xn) por duas produc¸o˜es, uma com duas varia´veis (A −→ Y1Xn)
e a outra com n−1 varia´veis (Y −→ X1 . . . Xn), onde a varia´vel Y e´ nova. Repetimos
este processo ate´ so´ ficarem produc¸o˜es com duas varia´veis. Como neste caso temos
uma u´nica produc¸a˜o com mais de duas varia´veis a` direita (S −→ BaSBb), esta etapa
so´ tem um passo. Assim, a grama´tica resultante dessa etapa e´:
328
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
regivan
Realce
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
S −→ Y Bb | BaBb
Y −→ BaS
Ba −→ a
Bb −→ b
a qual esta´ na forma normal de Chomsky.
(23c) S −→ abAB,
A −→ bAB | λ,
B −→ BAa | A | λ.
Resposta: Novamente seguiremos o algoritmo da demonstrac¸a˜o do teorema 5.6.2
para transformar a grama´tica acima numa equivalente na forma normal de Chomsky.
Neste caso primeiro temos que eliminar produc¸o˜es unita´rias e λ-produc¸o˜es. Elimi-
nando λ-produc¸o˜es obtemos a seguinte grama´tica:
S −→ abAB | abB | abA | ab
A −→ bAB | bB | b
B −→ BAa | A | Aa | Ba | a
Eliminando agora produc¸o˜es unita´rias obtemos a seguinte grama´tica:
S −→ abAB | abB | abA | ab
A −→ bAB | bB | b
B −→ BAa | bAB | bB | b | Aa | Ba | a
Seguindo a etapa 1, obtemos a seguinte grama´tica:
S −→ BaBbAB | BaBbB | BaBbA | BaBb
A −→ BbAB | BbB | b
B −→ BABa | BbAB | BbB | b | ABa | BBa | a
Ba −→ a
Bb −→ b
Seguindo a etapa 2 obtemos a seguinte grama´tica, faremos isto introduzindo a menor
quantidade de varia´veis poss´ıveis, ou seja usaremos o bom senso em vez do “algoritmo”
da demonstrac¸a˜o do teorema 5.6.2:
S −→ Y1Y2 | Y1B | Y1A | BaBb
Y1 −→ BaBb
Y2 −→ AB
A −→ BbY2 | BbB | b
B −→ Y3Ba | BbY2 | BbB | b | ABa | BBa | a
Y3 −→ BA
Ba −→ a
Bb −→ b
25. Converter as seguintes grama´ticas na forma normal de Greibach.
(25a) S −→ aaS | SS | aa.
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
329
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
Resposta: A demonstrac¸a˜o do teorema 5.6.6 define 4 etapas para transformar
uma grama´tica livre do contexto numa equivalente na forma normal de Greibach.
Seguiremos cada uma dessas etapas.
Etapa 1: Transformaremos primeiro a` forma normal de Chomsky. Na primeira
etapa obtemos a seguinte grama´tica:
S −→ BaBaS | SS | BaBa
Ba −→ a
Na segunda etapa obtemos a forma normal de Chomsky:
S −→ Y S | SS | BaBa
Y −→ BaBa
Ba −→ a
Etapa 2: Rotulando as varia´veis obtemos a seguinte grama´tica:
A1 −→ A2A1 | A1A1 | A3A3
A2 −→ A3A3
A3 −→ a
Etapa 3: Usamos os teoremas 5.5.1 e 5.5.3 para deixar todas as produc¸o˜es na
forma prevista nesta etapa. Como resultado obtemos a seguinte grama´tica:
A1 −→ A2A1 | A2A1Z1 | A3A3 | A3A3Z1
Z1 −→ A1A1 | A1A1Z1
A2 −→ A3A3
A3 −→ a
Etapa 4: Usamos o teorema 5.5.1 para transformar a grama´tica resultante da etapa
anterior numa na forma normal de Greibach. Faremos isto passo a passo. Primeiro
substituiremos a ocorreˆncia mais a` esquerda de A3 no lado direito da produc¸a˜o A2 −→
A3A3 (Observe que a u´nica produc¸a˜o tendo A3 no lado esquerdo satisfaz as condic¸o˜es
de Greibach), isto resulta na seguinte grama´tica:
A1 −→ A2A1 | A2A1Z1 | A3A3 | A3A3Z1
Z1 −→ A1A1 | A1A1Z1
A2 −→ aA3
A3 −→ a
Agora todas as produc¸o˜es com A2 ou A3 no lado esquerdo esta˜o na forma normal de
Greibach. Agora substituiremos a varia´vel mais a` esquerda de cada produc¸a˜o tendo
A1 no lado esquerdo (observe que por se encontrar nesta etapa, essa varia´vel so´ pode
ser A2 ou A3). Como resultado obtemos a seguinte grama´tica:
330
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
A1 −→ aA3A1 | aA3A1Z1 | aA3 | aA3Z1
Z1 −→ A1A1 | A1A1Z1
A2 −→ aA3
A3 −→ a
Finalmente fazemos o mesmo com as produc¸o˜es cujo lado esquerdo seja Z1. Observe
que neste caso, a varia´vel mais a` esquerda do lado direito da produc¸a˜o sempre sera´
da forma Ai, como todos os Ai’s esta˜o na forma normal de Greibach esta substituic¸a˜o
acarretara´ em que as produc¸o˜es com Z1 no lado esquerdo tambe´m estejam na forma
normal de Greibach. Isto resulta na seguinte grama´tica:
A1 −→ aA3A1 | aA3A1Z1 | aA3 | aA3Z1
Z1 −→ aA3A1A1 | aA3A1Z1A1 | aA3A1 | aA3Z1A1
aA3A1A1Z1 | aA3A1Z1A1Z1 | aA3A1Z1 | aA3Z1A1Z1
A2 −→ aA3
A3 −→ a
(25c) S −→ aA | Bbb,
A −→ aBa | aa,
B −→ Abb | Cab,
C −→ Aba | Bab | aba
Resposta: A demonstrac¸a˜o do teorema 5.6.6 define 4 etapas para transformar
uma grama´tica livre do contexto numa equivalente na forma normal de Greibach.
Seguiremos cada uma dessas etapas.
Etapa 1: Transformaremos primeiro a` forma normal de Chomsky. Na primeira
etapa obtemos a seguinte grama´tica:
Forma normal Pre-Chomsky: Por simplicidade usaremos nomes de varia´veis X e Y
em vez de Ba e Bb respectivamente.
S −→ XA | BY Y ,
A −→ XBX | XX,
B −→ AY Y | CXY ,
C −→ AYX | BXY | XYX
X −→ a,
Y −→ b.
Forma normal de Chomsky:
S −→ XA | BD,
A −→ XE | XX,
B −→ AD | CF ,
C −→ AG | BF | FX
D −→ Y Y ,
E −→ BX,
F −→ XY ,
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
331
A.5. Soluc¸o˜es de Exerc´ıcios do Cap´ıtulo 5
G −→ Y X,
X −→ a,
Y −→ b.
Etapa 2: Antes de rotular as varia´veis, para diminuir passos nas etapas posteri-
ores, e´ aconselha´vel analisar qual a melhor rotulac¸a˜o. Neste caso, e´ bom olhar o
grafo de dependeˆncia entre as varia´veis (considerando so´ as do lado esquerdo de uma
produc¸a˜o e a mais a` esquerda do lado direito da mesma produc¸a˜o). A figura A.41
mostra tal grafo de dependeˆncia. A ordem entre B e C na˜o e´ fundamental, pois eles
esta˜o entrelac¸ados. Porem como B tem menor produc¸o˜es que C consideraremos B
precedendo C. Assim, a ordem considerada e´: S,E,B,C,A,D,F,G,X, Y e rotulando
essas varia´veis nessa ordem obtemos a seguinte grama´tica:
V1 −→ V9V5 | V3V6,
V5 −→ V9V2 | V9V9,
V3 −→ V5V6 | V4V7,
V4 −→ V5V8 | V3V7 | V7V9
V6 −→ V10V10,
V2 −→ V3V9,
V7 −→ V9V10,
V8 −→ V10V9,
V9 −→ a,
V10 −→ b.
Etapa 3: Usamos os teoremas 5.5.1 e 5.5.3 para deixar todas as produc¸o˜es na
forma prevista nesta etapa. Primeiro observe que a u´nica produc¸a˜o que na˜o satisfaz
as condic¸o˜es desta etapaV4 −→ V3V7. Assim, aplicando o teorema 5.5.1 obtemos a
seguinte grama´tica:
V1 −→ V9V5 | V3V6,
V5 −→ V9V2 | V9V9,
V3 −→ V5V6 | V4V7,
V4 −→ V5V8 | V5V6V7 | V4V7V7 | V7V9
V6 −→ V10V10,
V2 −→ V3V9,
V7 −→ V9V10,
V8 −→ V10V9,
V9 −→ a,
V10 −→ b.
Agora temos uma produc¸a˜o esquerda recursiva (V4 −→ V4V7V7). Eliminamos esta
usando o teorema 5.5.3. Isto resulta na seguinte grama´tica:
V1 −→ V9V5 | V3V6,
V5 −→ V9V2 | V9V9,
V3 −→ V5V6 | V4V7,
332
Introduc¸a˜o a` Teoria da Computac¸a˜o:
Linguagens Formais, autoˆmatos e Computabilidade
Cap´ıtulo A. Soluc¸o˜es de Alguns dos Exerc´ıcios Propostos
V4 −→ V5V8 | V5V6V7 | V7V9 | V5V8Z1 | V5V6V7Z1 | V7V9Z1
Z1 −→ V7V7 | V7V7Z1
V6 −→ V10V10,
V2 −→ V3V9,
V7 −→ V9V10,
V8 −→ V10V9,
V9 −→ a,
V10 −→ b.
Etapa 4: Usamos o teorema 5.5.1 para transformar a grama´tica resultante da
etapa anterior numa na forma normal de Greibach. Observe que V9 e V10 esta˜o na
forma normal de Greibach e que as produc¸o˜es de V5 a V8 comec¸am com uma delas.
Por tanto faremos todas estas substituic¸o˜es de uma u´nica vez:
V1 −→ V9V5 | V3V6,
V5 −→ aV2 | aV9,
V3 −→ V5V6 | V4V7,
V4 −→ V5V8 | V5V6V7 | V7V9 | V5V8Z1 | V5V6V7Z1 | V7V9Z1
Z1 −→ V7V7 | V7V7Z1
V6 −→ bV10,
V2 −→ V3V9,
V7 −→ aV10,
V8 −→ bV9,
V9 −→ a,
V10 −→ b.
Agora substituiremos todas

Continue navegando