Você está na página 1de 239

Autmatos, Linguagens Formais e Computabilidade

S. C. Coutinho
&
Luis Menasch Schechter
Verso 0.7
Universidade Federal do Rio de Janeiro
c _ by S. C. Coutinho & Luis Menasch Schechter, 2013
Agradecimentos
Agradecemos aos (ex-)alunos
David Boechat
Gabriel Rosrio
pelas correes s notas de aula.
iii
Sumrio
Agradecimentos iii
Captulo 0. Introduo 1
1. Tpicos Centrais de Estudo 1
2. Conceitos Bsicos 2
3. Operaes sobre Linguagens 3
4. Exerccios 5
Parte 1. Linguagens Regulares 9
Captulo 1. Linguagens Regulares e Autmatos Finitos Determinsticos 11
1. Autmatos Finitos Determinsticos (AFDs) 11
2. Exerccios 15
Captulo 2. Expresses Regulares 19
1. Breve Motivao 19
2. Expresses Regulares 20
3. Exerccios 25
Captulo 3. Relao entre AFDs e Expresses Regulares 27
1. Introduo 27
2. Lema de Arden 31
3. O Algoritmo de Substituio 34
4. Anlise Formal do Algoritmo de Substituio 37
5. ltimo Exemplo 40
6. Exerccios 41
Captulo 4. Autmatos Finitos No-Determinsticos 45
v
vi SUMRIO
1. Autmatos Finitos No-Determinsticos (AFNDs) 45
2. Algoritmo de Construo de Subconjuntos 52
3. Exerccios 59
Captulo 5. Operaes com Autmatos Finitos e Linguagens Regulares 61
1. Consideraes Gerais 61
2. Unio 62
3. Concatenao 65
4. Estrela 67
5. Exemplo Mais Extenso 71
6. Propriedades de Fechamento das Linguagens Regulares 72
7. Exerccios 75
Captulo 6. Lema do Bombeamento para Linguagens Regulares 79
1. Propriedade do Bombeamento 79
2. Lema do Bombeamento 82
3. Aplicaes do Lema do Bombeamento 85
4. Exerccios 95
Captulo 7. Gramticas Regulares 99
1. Gramticas 99
2. Gramticas Regulares 101
3. Gramticas Regulares e Autmatos Finitos 103
4. Exerccios 106
Parte 2. Linguagens Livres de Contexto 109
Captulo 8. Linguagens Livres de Contexto e Gramticas Livres de Contexto111
1. Gramticas e Linguagens Livres de Contexto 111
2. Gramticas que No So Livres de Contexto 116
3. Mais Exemplos 117
4. Propriedades de Fechamento das Linguagens Livres de Contexto 121
5. Exerccios 127
SUMRIO vii
Captulo 9. rvores de Anlise Sinttica 131
1. Anlise Sinttica e Linguagens Naturais 131
2. rvores de Anlise Sinttica 133
3. Colhendo e Derivando 137
4. Equivalncia entre rvores e Derivaes 140
5. Ambiguidade 142
6. Removendo Ambiguidade 147
7. Exerccios 150
Captulo 10. Lema do Bombeamento para Linguagens Livres de Contexto 151
1. Introduo 151
2. Lema do Bombeamento 153
3. Exemplos 157
4. Exerccios 162
Captulo 11. Autmatos de Pilha 165
1. Heurstica 165
2. Denio e Exemplos 168
3. Computando e Aceitando 174
4. Variaes em um Tema 177
5. Exerccios 186
Captulo 12. Relao entre Gramticas Livres de Contexto e Autmatos de
Pilha 189
1. O Autmato de Pilha de uma Gramtica 189
2. A Receita e Mais um Exemplo 192
3. Provando a Receita 196
4. Autmatos de Pilha Cordatos 198
5. A Gramtica de um Autmato de Pilha 201
6. De Volta s Propriedades de Fechamento 207
7. Exerccios 208
viii SUMRIO
Parte 3. Computabilidade 211
Captulo 13. Um Modelo Formal de Computao: A Mquina de Turing 213
1. Exerccios 213
Captulo 14. Extenses da Mquina de Turing 217
Captulo 15. Operaes com Linguagens Recursivas e Recursivamente
Enumerveis 219
1. Exerccios 219
Captulo 16. Tese de Church-Turing e Mquina de Turing Universal 221
1. Exerccios 221
Captulo 17. Problema da Parada 223
Captulo 18. Reduo entre Problemas e o Problema da Correspondncia de
Post 225
Parte 4. Complexidade 227
Captulo 19. Introduo Teoria da Complexidade 229
Referncias Bibliogrcas 231
CAPTULO 0
Introduo
Neste captulo, apresentamos os principais tpicos de estudo que sero tratados
ao longo destas notas e as principais motivaes por trs deste estudo. Apresen-
tamos tambm os conceitos mais bsicos relativos linguagens formais que sero
utilizados no restante das notas.
1. Tpicos Centrais de Estudo
Os principais tpicos de estudo que sero cobertos ao longo destas notas so
descritos de forma bastante resumida abaixo.
I) Teoria da Computabilidade ou Teoria da Computao: Busca descrever
e estudar modelos matemticos formais de computao, com o objetivo de
analisar as seguintes questes:
(1) Quais problemas podem ser algoritmicamente resolvidos por um compu-
tador?
(2) Quais so os limites do que um computador consegue resolver?
II) Teoria da Complexidade:
(1) Busca formas de avaliar formalmente o consumo de tempo e memria
dos algoritmos.
(2) Busca formas de determinar formalmente se existe umalgoritmo eciente
para resolver um dado problema.
III) Teoria de Autmatos: Busca o estudo de diferentes modelos formais de
computao, a partir de ummodelo mais simples at o modelo mais poderoso,
que possui o mesmo poder de um computador real. Estes modelos compu-
tacionais so conhecidos como autmatos. Os modelos computacionais que
sero estudados nestas notas so, em ordem crescente de poder computacio-
nal, os seguintes:
1
2 0. INTRODUO
(1) Autmatos Finitos
(2) Autmatos de Pilha
(3) Mquinas de Turing
2. Conceitos Bsicos
DEFINIO 0.1. Um alfabeto um conjunto nito de smbolos = a
1
, . . . ,
a
n
.
DEFINIO 0.2. Uma palavra ou uma cadeia ou uma string em um alfabeto
uma sequncia nita w = w
1
. . . w
n
, n N, de smbolos de (w
i
, para
todo 1 i n). A palavra vazia, denotada por , uma palavra que no contm
nenhum smbolo.
DEFINIO 0.3. O comprimento de uma palavra w, denotado por [w[, de-
nido como a quantidade de smbolos (no necessariamente distintos) que ocorrem
na palavra w. Ento, se w = w
1
. . . w
n
, [w[ = n.
EXEMPLO 0.4. Seja = a, b, w
1
= baabb e w
2
= aaa. Ento, [w
1
[ = 5 e
[w
2
[ = 3.
OBSERVAO. Em qualquer alfabeto, possvel construir uma nica palavra
de comprimento zero, tambm conhecida como palavra vazia, denotada por . Isto
, [[ = 0.
DEFINIO 0.5. Denotamos por

o conjunto de todas as palavras forma-


das por smbolos no alfabeto .
EXEMPLO 0.6. Seja = a, b. Ento,

= , a, b, aa, ab, ba, bb, aaa,


. . ..
DEFINIO 0.7. Denimos uma linguagem formal, ou simplesmente lingua-
gem, L sobre um alfabeto como sendo um subconjunto qualquer de

, isto ,
L

.
3. OPERAES SOBRE LINGUAGENS 3
EXEMPLO 0.8. Seja = a, b. Ento, os conjuntos L
1
= , L
2
=

,
L
3
= , L
4
= a, bbb, aba e L
5
= , a, aa, aaa, . . . so todos exemplos de
linguagens sobre o alfabeto , uma vez que todos estes conjuntos so subconjuntos
de

.
OBSERVAO. importante observar que L
1
e L
3
so linguagens diferentes.
L
1
uma linguagem que no contm nenhuma palavra, isto , uma linguagem
vazia. J L
3
uma linguagem que contm uma nica palavra, sendo esta palavra a
palavra vazia.
EXEMPLO 0.9. Seja = A, B, . . . , Z, a, b, . . . , z. Vamos denotar por
L
port
o conjunto de todas as palavras da Lngua Portuguesa. Vemos ento que
L
port

, logo L
port
efetivamente uma linguagem sobre o alfabeto . Te-
mos que

, mas / L
port
; aula

e aula L
port
; class

, mas
class / L
port
e AuLa

, mas AuLa / L
port
.
DEFINIO 0.10. Uma operao importante sobre palavras a concatena-
o. Sejam w
1
, w
2

. Denimos a palavra w
1
.w
2
, ou simplesmente w
1
w
2
como a palavra obtida escrevendo-se a palavra w
1
e, imediatamente aps o l-
timo smbolo de w
1
, os smbolos de w
2
. Isto , se w
1
=
1

2
. . .
n

([w
1
[ = n) e w
2
=
1

2
. . .
t

([w
2
[ = t), ento w
1
w
2

e w
1
w
2
=

2
. . .
n

2
. . .
t
, com [w
1
w
2
[ = n + t.
OBSERVAO. A concatenao de palavras associativa, mas no comuta-
tiva. Alm disso, para qualquer palavra w, temos que w. = .w = w.
EXEMPLO 0.11. Seja = 0, 1, w
1
= 0101 e w
2
= 11100. Ento,
w
1
.w
2
= 010111100 e w
2
.w
1
= 111000101.
3. Operaes sobre Linguagens
Como linguagens so conjuntos de palavras em um alfabeto, vrias operaes
sobre linguagens originam-se na teoria de conjuntos. Da mesma forma, o conheci-
mento dos resultados elementares da teoria de conjuntos muito til para o estudo
das linguagens formais.
4 0. INTRODUO
(1) Unio:
L
1
L
2
= w : w L
1
ou w L
2
.
EXEMPLO 0.12. Seja = 0, 1, L
1
= 00, 11, 000 e L
2
=
00, 101, 100. Ento L
1
L
2
= 00, 11, 000, 101, 100.
(2) Interseo:
L
1
L
2
= w : w L
1
e w L
2
.
EXEMPLO 0.13. Sejam , L
1
e L
2
como no exemplo anterior. En-
to L
1
L
2
= 00.
(3) Diferena:
L
1
L
2
= w : w L
1
e w / L
2
.
OBSERVAO. Uma outra notao para a diferena de conjuntos
L
1
L
2
.
EXEMPLO 0.14. Sejam , L
1
e L
2
como nos exemplos anteriores.
Ento L
1
L
2
= 11, 000.
OBSERVAO. Ao contrrio das operaes de unio e interseo, a
operao de diferena no comutativa. Isto , L
1
L
2
,= L
2
L
1
.
(4) Complemento:
L = w : w / L.
OBSERVAO. Se L uma linguagem sobre o alfabeto , isto , se
L

, ento L L =

e L =

L.
OBSERVAO. A seguinte igualdade sempre verdadeira: L
1

L
2
= L
1
L
2
.
(5) Concatenao:
4. EXERCCIOS 5
A concatenao de linguagens denida a partir da operao de con-
catenao de palavras.
L
1
.L
2
= w
1
.w
2
: w
1
L
1
e w
2
L
2
.
EXEMPLO 0.15. Sejam , L
1
e L
2
como nos exemplos anterio-
res. Ento L
1
.L
2
= 0000, 00101, 00100, 1100, 11101, 11100, 00000,
000101, 000100.
OBSERVAO. Se L
1
e L
2
so conjuntos nitos, ento [L
1
.L
2
[
[L
1
[ [L
2
[.
OBSERVAO. Assim como a concatenao de palavras, a conca-
tenao de linguagens no comutativa, isto , L
1
.L
2
,= L
2
.L
1
.
OBSERVAO. Temos que L. = .L = L e L. = .L = .
(6) Estrela de Kleene:
L

= L L.L L.L.L . . .
OBSERVAO. Temos que

= e

= .
4. Exerccios
(1) Sejam A e B conjuntos, prove que:
a) A = A;
b) A = ;
c) se A B ento A B = A;
d) se A B ento A B = B;
e) A A = A = A A;
f) A B = B A e A B = B A;
g) A (B C) = (A B) C;
h) A (B C) = (A B) C;
i) A (B C) = (A B) (A C);
6 0. INTRODUO
j) A (B C) = (A B) (A C);
k) A (A B) = A;
l) A (A B) = A;
m) A (B C) = (A B) (A C);
n) A B = AB onde B o complemento de B no conjunto universo,
isto o conjunto que contm todos os elementos com que estamos
trabalhando;
o) (A B) = A B;
p) (A B) = A B;
q) A = A;
r) A B = A (B A);
s) B A se, e somente se, A B = ;
t) (A B) C = (A C) (B C) = A (B C);
u) A B = e A B = se e somente se A = B.
(2) Considere as armaes abaixo: prove as verdadeiras e d um contra-
exemplo para as falsas.
a) se A B = A C ento B = C;
b) se A B = A C ento B = C.
(3) Sejam A, B e C conjuntos, prove que:
a) A(B C) = (AB) (AC);
b) A(B C) = (AB) (AC);
c) A(B C) = (AB) (AC);
(4) Explique a diferena entre e . Mostre que .L = L. = e .L =
L. = L para qualquer linguagem L.
(5) Mostre que (L

= L

para qualquer linguagem L.


(6) Seja w uma palavra em um alfabeto . Denimos o reexo de w recur-
sivamente da seguinte maneira:
R
= e se w = ax ento w
R
= x
R
a
onde a .
a) Determine (turing)
R
e (anilina)
R
.
4. EXERCCIOS 7
b) Se x e y so palavras no alfabeto , determine (xy)
R
em funo de
x
R
e y
R
.
c) Determine (x
R
)
R
.
(7) Sejam L
1
e L
2
linguagens no alfabeto . Determine as seguintes lingua-
gens em funo de L
R
1
e L
R
2
:
a) (L
1
L
2
)
R
;
b) (L
1
L
2
)
R
;
c) (L
1
L
2
)
R
;
d) L
1
R
;
e) (L

1
)
R
.
(8) Mostre, por induo em n, que se L
0
, . . . , L
n
so linguagens no alfabeto
ento
L
0
(L
1
L
n
) = (L
0
L
1
) (L
0
L
n
).
(9) Sejam
1
e
2
dois alfabetos e seja :
1

2
uma aplicao. Estenda
a

1
de acordo com a seguinte denio recursiva:
() = ;
(x) = (a)(), onde a

1
.
Se L uma linguagem no alfabeto
1
dena
(L) = (w) : w

1
.
Mostre que se L e L

so linguagens no alfabeto
1
ento:
a) (L L

) = (L) (L

);
b) (L L

) = (L) (L

);
c) (L L

) = (L) (L

);
Parte 1
Linguagens Regulares
CAPTULO 1
Linguagens Regulares e Autmatos Finitos
Determinsticos
Neste captulo, apresentamos o primeiro modelo formal de computao que
iremos estudar, os autmatos nitos determinsticos. Eles so o modelo de com-
putao menos poderoso dentre os que estudaremos. Apresentamos neste captulo
tambm uma classe de linguagens formais associadas a estes autmatos, a classe
das linguagens regulares.
1. Autmatos Finitos Determinsticos (AFDs)
DEFINIO 1.1. Um autmato nito determinstico (abreviado como AFD)
A uma 5-upla A = (, Q, q
0
, F, ), onde:
um alfabeto (lembrando que, pela denio do captulo anterior, al-
fabetos so sempre nitos);
Q um conjunto nito de estados;
q
0
Q o estado inicial;
F Q o conjunto de estados nais e
a funo de transio. Esta funo tem o formato
: Q Q,
isto , para cada par formado por um estado do conjunto Q e um smbolo
do alfabeto , a funo de transio fornece como resposta um estado
de Q.
EXEMPLO 1.2. Seja A o AFD A = (, Q, q
0
, F, ), onde:
= 0, 1;
Q = q
1
, q
2
, q
3
;
11
12 1. LINGUAGENS REGULARES E AUTMATOS FINITOS DETERMINSTICOS
q
0
= q
1
;
F = q
3
;
A funo dada pela tabela abaixo.
0 1
q
1
q
2
q
1
q
2
q
1
q
3
q
3
q
3
q
1
Esta tabela representa que (q
1
, 0) = q
2
, (q
1
, 1) = q
1
, (q
2
, 0) = q
1
e assim por
diante.
OBSERVAO. Um AFD tambm admite uma representao atravs de um
grafo direcionado com arestas rotuladas. Neste grafo, conseguimos representar os
5 componentes da tupla A = (, Q, q
0
, F, ). Os vrtices do grafo representam
os elementos do conjunto Q. Estes vrtices so representados por crculos sim-
ples, com o nome do respectivo elemento de Q escrito dentro do crculo, com uma
diferenciao para os elementos do conjunto F, que tem seus vrtices representa-
dos por crculos duplos. O estado inicial q
0
demarcado por uma seta com um
I maisculo apontando para o vrtice correspondente a este estado. Os smbolos
do alfabeto aparecem como rtulos das arestas do grafo, que so rotuladas de
acordo com a funo de transio . Se, para um determinado q Q e para um
determinado , temos (q, ) = q

, ento colocamos no grafo uma aresta di-


recionada do vrtice de q para o vrtice de q

e rotulamos esta aresta com o smbolo


.
EXEMPLO 1.3. Ografo que representa o AFDdo exemplo anterior mostrado
abaixo.
I
\ __
q
1
0

\ __
q
2
0

1 ,

\ __ ` _
q
3
1

OBSERVAO. O autmato se chama determinstico porque, para cada par


de estado de Q e smbolo de , a sua funo de transio oferece exatamente
1. AUTMATOS FINITOS DETERMINSTICOS (AFDS) 13
um estado como resposta. Ou seja, a resposta da funo de transio completa-
mente determinada. Ao representarmos a funo de transio em forma de tabela,
como zemos no exemplo anterior, esta caracterstica da funo se traduz no fato
de que a tabela sempre completamente preenchida e cada campo da tabela possui
exatamente um estado. J ao representarmos o AFD como um grafo, esta carac-
terstica da funo se traduz no fato de que cada vrtice possui exatamente uma
aresta rotulada por cada smbolo do alfabeto saindo dele.
A grosso modo, um AFD um dispositivo que processa uma palavra que re-
cebe como entrada (lembrando que, por nossa denio no captulo anterior, pa-
lavras so sempre nitas) e fornece como sada uma resposta do tipo Sim/No. O
AFD A = (, Q, q
0
, F, ) inicia seu processamento no estado q
0
e recebe como
entrada uma palavra w

. Ele l um smbolo de w de cada vez, comeando pelo


seu primeiro smbolo mais esquerda. Se o autmato se encontra em um estado q
e l o smbolo , ento, aps a leitura, ele ir para o estado q

= (q, ).
A partir destas transies de estado, podemos denir a noo de uma compu-
tao do autmato com uma palavra w.
DEFINIO 1.4. Uma congurao do AFD A um par formado por um
estado de Ae uma palavra de

(umelemento de Q

). Oprimeiro componente
de uma congurao representa o estado atual do autmato, enquanto o segundo
componente representa o trecho da palavra de entrada que ainda no foi lida pelo
autmato.
DEFINIO 1.5. A relao de congurao seguinte (notao ) denida
como (q, w) (q

, w

) se w = w

e (q, ) = q

.
DEFINIO 1.6. Se C
0
, . . . , C
n
so conguraes de A e se C
0
. . . C
n
,
ento temos uma computao em A, notao C
0

C
n
(em particular, assumimos
que C
0

C
0
).
DEFINIO 1.7. Dizemos que uma palavra w

aceita ou reconhecida
pelo AFD A se (q
0
, w)

(f, ) e f F, isto , se aps a leitura de todos os


14 1. LINGUAGENS REGULARES E AUTMATOS FINITOS DETERMINSTICOS
smbolos da palavra w, o autmato termina em algum de seus estados nais. Caso
contrrio, dizemos que a palavra rejeitada ou no aceita ou no reconhecida pelo
AFD A.
EXEMPLO 1.8. Consideramos o autmato descrito no exemplo anterior. Va-
mos descrever qual a sua computao ao receber como entrada a palavra w
1
=
10011.
(q
1
, 10011) (q
1
, 0011) (q
2
, 011) (q
1
, 11) (q
1
, 1) (q
1
, )
Gracamente:
\ __
q
1
1
\ __
q
1
0
\ __
q
2
0
\ __
q
1
1
\ __
q
1
1
\ __
q
1
Como o autmato termina esta computao no estado q
1
, que no um dos seus
estados nais, a palavra w
1
no aceita pelo autmato.
EXEMPLO 1.9. Consideramos novamente o autmato descrito no exemplo
anterior e agora vamos descrever qual a sua computao ao receber como entrada
a palavra w
2
= 01101.
(q
1
, 01101) (q
2
, 1101) (q
3
, 101) (q
1
, 01) (q
2
, 1) (q
3
, )
Gracamente:
\ __
q
1
0
\ __
q
2
1
\ __ ` _
q
3
1
\ __
q
1
0
\ __
q
2
1
\ __ ` _
q
3
Como o autmato termina esta computao no estado q
3
, que um dos seus estados
nais (o nico estado nal neste caso), a palavra w
2
aceita pelo autmato.
DEFINIO 1.10. Denimos a linguagem aceita por um um AFD A com alfa-
beto , denotada por L(A), como sendo o conjunto de todas as palavras w

que so aceitas por A. Observe que temos L(A)

.
EXEMPLO 1.11. Consideramos novamente o autmato descrito no exemplo
anterior e agora vamos descrever qual a sua computao ao receber como entrada
2. EXERCCIOS 15
a palavra w
3
= 001100.
(q
1
, 001100) (q
2
, 01100) (q
1
, 1100) (q
1
, 100) (q
1
, 00) (q
2
, 0) (q
1
, )
Gracamente:
\ __
q
1
0
\ __
q
2
0
\ __
q
1
1
\ __
q
1
1
\ __
q
1
0
\ __
q
2
0
\ __
q
1
Como o autmato termina esta computao no estado q
1
, que no um dos seus
estados nais, a palavra w
3
no aceita pelo autmato. Isto signica que w
3
/
L(A).
EXEMPLO 1.12. Consideramos novamente o autmato descrito no exemplo
anterior e agora vamos descrever qual a sua computao ao receber como entrada
a palavra w
4
= 001101.
(q
1
, 001101) (q
2
, 01101) (q
1
, 1101) (q
1
, 101) (q
1
, 01) (q
2
, 1) (q
3
, )
Gracamente:
\ __
q
1
0
\ __
q
2
0
\ __
q
1
1
\ __
q
1
1
\ __
q
1
0
\ __
q
2
1
\ __ ` _
q
3
Como o autmato termina esta computao no estado q
3
, que um dos seus estados
nais (o nico estado nal neste caso), a palavra w
4
aceita pelo autmato. Isto
signica que w
4
L(A).
DEFINIO 1.13. Seja L uma linguagem. Dizemos que L uma linguagem
regular se existe um AFD A tal que L = L(A), isto , se possvel construir
um AFD tal que as palavras aceitas por ele sejam exatamente as palavras que
pertencem linguagem L.
2. Exerccios
(1) Seja / um autmato nito determinstico. Quando que L(/)?
(2) Desenhe o grafo de estados de cada um dos seguintes autmatos nitos.
Em cada caso o estado inicial q
1
e o alfabeto a, b, c.
16 1. LINGUAGENS REGULARES E AUTMATOS FINITOS DETERMINSTICOS
a) F
1
= q
5
e a funo de transio dada por:

1
a b c
q
1
q
2
q
3
q
4
q
2
q
2
q
4
q
5
q
3
q
4
q
3
q
5
q
4
q
4
q
4
q
5
q
5
q
4
q
4
q
5
b) F
2
= q
4
e
2
=
1
.
c) F
3
= q
2
e a funo de transio dada por:

3
a b c
q
1
q
2
q
2
q
1
q
2
q
3
q
2
q
1
q
3
q
1
q
3
q
2
(3) Considere o autmato nito determinstico no alfabeto a, b, com esta-
dos q
0
, q
1
, estado inicial q
0
, estados nais F = q
1
e cuja funo de
transio dada por:
a b
q
0
q
0
q
1
q
1
q
1
q
0
a) Esboce o diagrama de estados deste autmato.
b) Descreva a computao deste autmato que temincio na congurao
(q
0
, aabba). Esta palavra aceita pelo autmato?
c) Descreva a computao deste autmato que temincio na congurao
(q
0
, aabbab). Esta palavra aceita pelo autmato?
d) Descreva em portugus a linguagem aceita pelo autmato denido
acima?
(4) Seja um alfabeto com n smbolos. Quantos autmatos nitos determi-
nsticos existem com alfabeto e m > 0 estados?
2. EXERCCIOS 17
Sugesto: No esquea de considerar todas as possibilidades para o con-
junto de estados nais.
(5) Invente autmatos nitos determinsticos que aceitem as seguintes lin-
guagens sobre o alfabeto 0, 1:
a) o conjunto das palavras que acabam em 00;
b) o conjunto das palavras com trs 0s consecutivos;
c) o conjunto das palavras em que cada 0 est entre dois 1s;
d) o conjunto das palavras cujos quatro smbolos nais so 1101;
e) o conjunto dos palndromos de comprimento igual a 6.
(6) D exemplo de uma linguagem que aceita por um autmato nito deter-
minstico com mais de um estado nal, mas que no aceita por nenhum
autmato nito determinstico com apenas um estado nal. Justique
cuidadosamente sua resposta.
CAPTULO 2
Expresses Regulares
Neste captulo, apresentamos uma maneira compacta e uniforme de descrever
as linguagens regulares, isto , as linguagens que so aceitas por autmatos nitos
determinsticos. Esta notao compacta dada pelas expresses regulares.
1. Breve Motivao
Vamos observar novamente o exemplo do AFD A mostrado no captulo ante-
rior. Reproduzimos novamente abaixo o seu grafo.
EXEMPLO 2.1.
I
\ __
q
1
0

\ __
q
2
0

1 ,

\ __ ` _
q
3
1

Olhando para o grafo deste AFD, podemos tentar determinar as palavras que
pertencem a L(A). Sero palavras que descrevam um caminho de q
1
at q
3
no
grafo. No complicado descrever algumas possveis palavras que satisfaam essa
propriedade. O grande problema que, para descrever L(A), precisamos ser ca-
pazes de descrever todas estas palavras. Mostramos abaixo a descrio, em portu-
gus, de algumas palavras que pertencem a L(A).
(1) A palavra comea com um nmero mpar de 0s, seguido de um nico 1,
terminando com uma quantidade arbitrria de 0s.
(2) A palavra comea com uma quantidade arbitrria de 1s, depois segue o
padro do item anterior.
(3) Apalavra comea comuma quantidade arbitrria de repeties da sequn-
cia 011 e continua como um dos padres anteriores.
19
20 2. EXPRESSES REGULARES
Esta listagem de padres ainda no descreve todas as palavras de L(A) e,
mesmo assim, j comea a car bastante extensa. importante ento buscarmos
uma notao uniforme e compacta que nos permita descrever exatamente a lingua-
gem aceita por um AFD.
2. Expresses Regulares
Seja um alfabeto e seja

= , , , (, ), , .
Consideraremos o conjunto

como um outro alfabeto, uma extenso de . Alm


disso, , , , (, ), , sero considerados apenas como smbolos (isto , seu signi-
cado ser ignorado) quando estiverem posando de elementos de

.
DEFINIO 2.2. Uma expresso regular (abreviada como ER) sobre o alfa-
beto uma palavra no alfabeto

, construda recursivamente pela aplicao
sucessiva das seguintes regras:
(1) se ento uma expresso regular;
(2) e so expresses regulares;
(3) se r
1
e r
2
so expresses regulares, ento (r
1
r
2
) e (r
1
r
2
) tambm
so;
(4) se r uma expresso regular, ento r

tambm ;
(5) Nada mais considerado expresso regular.
EXEMPLO 2.3. Seja = 0, 1. Ento, r
1
= (((((0)

.0).1).(1)

) (0.0))
uma expresso regular sobre . Por outro lado, r
2
= (1.(1)

) no uma
expresso regular, pois o operador deve conter expresses regulares de ambos os
lados, de acordo com a regra (3) acima.
Para diminuir o uso de parnteses que no sejam necessrios, adotamos uma
conveno de precedncia entre os operadores que podem aparecer nas expresses
regulares (

,. e ). O operador

o de maior precedncia, seguido do operador
., sendo o operador o de menor precedncia. Outra conveno que adotamos
2. EXPRESSES REGULARES 21
a omisso do operador . nas expresses regulares, assim como o operador . de
multiplicao geralmente omitido em expresses algbricas.
EXEMPLO 2.4. A expresso regular r
1
do exemplo acima pode ser re-escrita,
de acordo com nossas convenes, como r

1
= 0

011

00.
Uma expresso regular sobre representa uma linguagem L

. Se r
uma ER, denotamos por L(r) a linguagem representada ou denotada ou gerada
por r.
DEFINIO 2.5. Dada uma expresso regular r sobre , podemos denir a
linguagem L(r) recursivamente a partir das seguintes regras.
(1) Se , ento L() = ;
(2) L() = ;
(3) L() = ;
(4) L(r
1
r
2
) = L(r
1
) L(r
2
);
(5) L(r
1
.r
2
) = L(r
1
).L(r
2
);
(6) L(r

) = L(r)

EXEMPLO 2.6. Voltando ao exemplo que utilizamos como motivao no in-


cio deste captulo, vamos descrever cada um daqueles trs padres de palavras que
foram escritos em portugus naquela seo utilizando agora a notao das expres-
ses regulares.
(1) Para descrever a ocorrncia de um nmero arbitrrio de 0s, podemos
utilizar a expresso regular 0

, uma vez que


L(0

) = L(0)

= 0

= , 0, 00, 000, . . ..
Analogamente, para descrever uma quantidade par qualquer de 0s, pode-
mos utilizar a expresso regular (00)

. Logo, para descrever uma quanti-


dade mpar qualquer de 0s, podemos utilizar a expresso regular (00)

0.
Desta forma, o primeiro padro descrito no incio do captulo pode ser
representado pela expresso regular r
1
= (00)

010

.
22 2. EXPRESSES REGULARES
(2) O segundo padro pode ser representado pela expresso regular r
2
=
1

(00)

010

.
(3) O terceiro padro pode ser representado pela expresso regular r
3
=
(011)

(00)

010

.
EXEMPLO 2.7. Seja = 0, 1 e r
4
= (01 100)

. Ento
L(r
4
) = L((01 100)

) = L(01 100)

= (L(01) L(100))

=
= (01 100)

= 01, 100

=
= , 01, 100, 0101, 01100, 10001, 100100, 010101, 0101100, . . ..
OBSERVAO. Repare que duas expresses regulares distintas podem deno-
tar a mesma linguagem, isto , podemos ter duas expresses regulares r
1
e r
2
tais
que r
1
,= r
2
, mas L(r
1
) = L(r
2
). Este o caso, por exemplo, das expresses
(0 1)

e ((0

1)

).
claro que qualquer conjunto que possa ser representado a partir dos conjuntos
unitrios e e das operaes de unio, concatenao e estrela pode ser
denotado por uma expresso regular. Resta-nos praticar um pouco a construo de
uma expresso regular que denote um conjunto dado, a partir da descrio deste
conjunto.
EXEMPLO 2.8. Suponhamos que = a, b, c. Para obter todas as palavras
em um certo subconjunto de devemos usar o operador estrela (

). Assim,
Linguagem formada por todas as palavras Expresso regular
(vazias ou no) que s contm a a

nos smbolos a, b e c (a b c)

que no contm a (b c)

em a e cujo comprimento par (a a)

EXEMPLO 2.9. Outro exemplo interessante consiste na linguagem formada


pelas palavras que contm exatamente um a. Isto signica que os outros smbolos
2. EXPRESSES REGULARES 23
da palavra tm que ser bs ou cs. Como estes smbolos tanto podem aparecer antes
como depois do a, uma tal palavra ser da forma uav, onde u e v so palavras que
contm apenas b e c. Isto nos remete expresso regular (b c)

a (b c)

.
EXEMPLO 2.10. Duas variaes, dignas de nota, do ltimo exemplo acima
so a linguagem formada por todas as palavras que contm exatamente dois as,
que corresponde a
(b c)

a(b c)

a(b c)

e a linguagem formada por todas as palavras que contm um nmero par de as, que
denotada por
((b c)

a(b c)

a(b c)

EXEMPLO 2.11. Um exemplo um pouco mais difcil a linguagem formada


pelas palavras que contm um nmero mpar de as. Precisamos adicionar um a
extra expresso acima. O problema que este a pode aparecer em qualquer lugar
da palavra, de modo que no podemos simplesmente concaten-lo no incio ou no
m da expresso acima. A sada tomar
((b c)

a(b c)

a(b c)

a((b c)

a(b c)

a(b c)

.
Agora que j conhecemos a notao das expresses regulares, que nos permite
descrever de forma uniforme e compacta algumas linguagens, resta-nos mostrar
que dado qualquer AFD A, podemos descrever L(A) atravs de uma expresso
regular. Isto , precisamos resolver o seguinte problema.
PROBLEMA 2.12. Dado um AFD A = (, Q, q
0
, F, ), quero construir uma
expresso regular r tal que L(r) = L(A), isto , tal que a linguagem gerada por r
seja exatamente a linguagem aceita por A.
Estudaremos um algoritmo que resolve este problema no prximo captulo.
Encerramos com trs exemplos de natureza mais prtica. Um dos primeiros
passos do processo de compilao de uma linguagem de programao conhecido
como anlise lxica. Nesta etapa, o compilador identica, por exemplo, quais
24 2. EXPRESSES REGULARES
foram os nmeros inteiros e as variveis utilizadas no programa. claro que esta
uma etapa necessria para que seja possvel interpretar corretamente o programa.
Na prtica, isto pode ser feito com um autmato nito. Assim, para identicar
as variveis, construmos um autmato nito que aceita a linguagem que descreve
as variveis de uma linguagem. Isto feito em duas etapas. Primeiro obtemos
uma expresso regular que denote as variveis da linguagem de programao. Em
seguida, construmos um autmato nito que aceite esta linguagem.
Contudo, pr esta estratgia em prtica depende de sermos capazes de resolver
algoritmicamente o seguinte problema, que , de certa forma, o inverso do pro-
blema que j descrevemos acima.
PROBLEMA 2.13. Dada uma expresso regular r, construir um autmato -
nito que aceite a linguagem gerada por r.
Abordaremos este problema detalhadamente mais adiante nestas notas. Entre-
tanto, j estamos em condies de obter expresses regulares para as linguagens
que descrevem inteiros e variveis de um programa, como veremos a seguir.
EXEMPLO 2.14. Para comear determinaremos uma expresso regular no al-
fabeto 0, 1, . . . , 9 que denote os inteiros positivos no sistema decimal. pri-
meira vista pode parecer que a expresso seja simplesmente
(0 1 9)

.
O problema que isto inclui palavras como 00000, que no correspondem a um
nmero formado de maneira correta. A soluo no permitir que as palavras
comecem com o smbolo 0, tomando
(1 9)(0 1 9)

.
EXEMPLO 2.15. J a expresso que denota os inteiros no negativos
0 (1 9)(0 1 9)

.
3. EXERCCIOS 25
EXEMPLO 2.16. Finalmente, suponhamos que uma certa linguagem de pro-
gramao tem por variveis todas as palavras nos smbolos 0, 1, . . . , 9, A, B, C,
. . . , Z que no comeam por um nmero inteiro. A expresso regular que denota
as variveis nesta linguagem de programao
(A B Z)(A B Z 0 1 9)

.
3. Exerccios
(1) Seja = 0, 1. Se L
1
= 0 e L
2
= 1

, determine:
a) L
1
L
2
e L
1
L
2
;
b) L

1
e L

2
;
c) (L
1
L
2
)

;
d) L

1
L
2
;
e) L
1
;
f) L
2
L

1
.
(2) Se L uma linguagem em um alfabeto ento L
R
= w
R
: w L. Se
L = 0 1

calcule L
R
.
(3) Seja L uma linguagem no alfabeto . Considerando que
L

= L L.L L.L.L . . . e
L
+
= L L.L L.L.L . . . ,
o que podemos concluir a respeito de L se L
+
= L

?
(4) Sejam
1
e
2
dois alfabetos e seja :
1

2
uma aplicao. Se L
uma linguagem no alfabeto
1
, mostre que (L

) = (L)

.
(5) Descreva em portugus o conjunto denotado por cada uma das expresses
regulares abaixo:
a) 1

0;
b) 1

0(0)

c) 111 001;
d) (1 00)

;
26 2. EXPRESSES REGULARES
e) (0(0)

1)

;
f) (0 1)(0 1)

00;
(6) Expresse cada uma das seguintes linguagens no alfabeto 0, 1 usando
uma expresso regular:
a) o conjunto das palavras de um ou mais zeros seguidos de um 1;
b) o conjunto das palavras de dois ou mais smbolos seguidos por trs ou
mais zeros;
c) o conjunto das palavras que contm uma sequncia de 1s, de modo
que o nmero de 1s na sequncia congruente a 2 mdulo 3, seguido
de um nmero par de zeros.
(7) Se r e s so expresses regulares, vamos escrever r s se e somente se
L(r) = L(s). Supondo que r, s e t so expresses regulares, mostre que:
a) (r r) r;
b) ((r s) (r t)) (r (s t));
c) ((s r) (t r)) ((s t) r);
d) (r

) r

;
e) (r r

) (r

r);
f) r

;
g) ( (r r

)) r

;
h) ((r s)

r) (r (s r)

);
i) (r s)

(r

(r

.
(8) Usando as identidades do exerccio anterior, prove que
((abb)

(ba)

(b aa)) (abb)

(( (b(ab)

a))b (ba)

(aa)).
Observe que alguns parnteses e o smbolo foram omitidos para faci-
litar a leitura.
CAPTULO 3
Relao entre AFDs e Expresses Regulares
Conforme j vimos, uma linguagem regular uma linguagem que aceita por
algum AFD. No captulo anterior, estudamos as expresses regulares, uma forma
uniforme e compacta de descrever algumas linguagens. Neste captulo, vamos
mostrar que toda linguagem regular pode ser denotada por uma expresso regu-
lar (de forma que o nome expresso regular realmente apropriado). Para isso,
vamos mostrar que, para todo AFD A, podemos construir uma expresso regular
r tal que L(A) = L(r) e que podemos fazer isto atravs de um mtodo algort-
mico. Na verdade, existe mais de um algoritmo capaz de calcular r, mas um que
bastante simples e intuitivo o algoritmo de substituio desenvolvido por John
Brzozowski.
1. Introduo
Desejamos obter um algoritmo que, dado um autmato nito /, determine a
linguagem L(/) que ele aceita. O algoritmo recursivo, e para poder descrev-lo
comeamos por generalizar a noo de linguagem aceita por um autmato.
Seja / um autmato nito denido pelos ingredientes (, Q, q
1
, F, ). Para
cada q Q denimos L
q
como sendo a linguagem
L
q
= w

: (q, w)

(f, ) onde f F.
Em outras palavras, L
q
formada pelas palavras que levam o autmato do estado
q a algum estado nal. Quando os estados do autmato forem numerados como
q
1
, . . . , q
n
, escrevermos L
i
em vez de L
q
i
para simplicar a notao. Portanto, se
q
1
o estado inicial de /, ento
L
q
1
= L
1
= L(/).
27
28 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
Sejam p e q estados de /, e digamos que (p, ) = q. Esta transio estabe-
lece uma relao entre as linguagens L
p
e L
q
. De fato, temos que (p, ) (q, ) ao
passo que, se w L
q
, ento (q, w)

(f, ). Combinado estas duas computaes


obtemos
(p, w) (q, w)

(f, ).
Portanto, L
q
L
p
. Mais uma vez, com a nalidade de no sobrecarregar a
notao, eliminaremos as chaves, escrevendo simplesmente L
q
L
p
.
A no ser que o alfabeto tenha apenas um smbolo, no h a menor chance
de que L
q
L
p
seja uma igualdade. Isto porque teremos uma incluso como
esta para cada . Portanto, se =
1
, . . . ,
n
e se (p,
i
) = q
i
, ento
n
_
i=1

i
L
q
i
L
p
.
Desta vez, porm, a incluso , de fato, uma igualdade, desde que p no seja
um estado nal do autmato! Para ver isto suponhamos que u L
p
. Podemos
isolar o primeiro smbolo de u, escrevendo u =
i
w, para algum
i
. Mas,
pela denio de L
p
,
(p, u) = (p,
i
w)

(f, ),
para algum f F. Por outro lado, como (p,
i
) = q
i
, temos que (p,
i
) (q
i
, ).
Combinando estas duas computaes, temos que
(p, u) = (p,
i
w) (q
i
, w)

(f, ),
de onde segue que w L
q
i
.
Precisamos ainda analisar o que acontece quando p um estado nal do aut-
mato. Considerando em detalhe o argumento do pargrafo acima, vemos que as-
sumimos implicitamente que u ,= , j que estamos explicitando o seu primeiro
smbolo. Entretanto, se p for um estado nal, teremos, alm disso, que L
p
.
1. INTRODUO 29
Resumindo, provamos que, se =
1
, . . . ,
n
, e se (p,
i
) = q
i
, ento
L
p
=
_

n
i=1

i
L
q
i
se p / F

n
i=1

i
L
q
i
se p F
O algoritmo que desejamos segue diretamente desta equao, como mostra o
seguinte exemplo.
EXEMPLO 3.1. Considere o autmato nito determinstico / com alfabeto
0, 1 e cujo grafo
I
\ __
q
1
0

\ __
q
2
1

0
,

\ __ ` _
q
3
0,1
.
.
.
.
.
.
.
.
.
.
.
.
.
\ __
q
4
0,1

Deste grafo extramos as seguintes equaes


L
1
= 0L
2
1L
4
L
2
= 1L
3
0L
4
L
3
= 0L
4
1L
4
(j que q
3
estado nal)
L
4
= 0L
4
1L
4
.
Observe que q
4
um estado morto, de modo que nada escapa de q
4
. Em
particular, nenhuma palavra leva o autmato de q
4
a um estado nal. Portanto,
L
4
= . Isto simplica drasticamente as equaes anteriores, que passam a ser
L
1
= 0L
2
L
2
= 1L
3
L
3
=
L
4
= .
30 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
Podemos agora resolver este sistema de equaes por mera substituio. Assim,
substituindo a terceira equao na segunda, obtemos
L
2
= 1L
3
= 1 = 1.
Finalmente, substituindo esta ltima equao na primeira, obtemos
L
1
= 0L
2
= 10 = 10.
Como L
1
= L(/), obtivemos uma descrio da linguagem aceita por /.
Como seria de esperar, as coisas nem sempre so to diretas. Anal, o aut-
mato deste exemplo tinha um comportamento muito simples. Vejamos o que acon-
tece em um exemplo menos elementar.
EXEMPLO 3.2. Seja ^ o autmato nito determinstico de alfabeto 0, 1 e
grafo
I
\ __
q
1
0,1

\ __ ` _
q
2
0,1

As equaes correspondentes a L
1
e L
2
so:
L
1
= 0L
2
1L
2
L
2
= 0L
1
1L
1
(j que q
2
estado nal)
Continuando a denotar 0 e 1 por 0 e 1, podemos re-escrever estas equaes
como
L
1
= (0 1)L
2
L
2
= (0 1)L
1
.
primeira vista, tudo o que temos que fazer para resolver este sistema substituir
a segunda equao na primeira. Contudo, ao fazer isto obtemos
L
1
= (0 1)((0 1)L
1
),
2. LEMA DE ARDEN 31
ou seja,
(1.1) L
1
= (0 1)
2
L
1
(0 1),
de modo que L
1
ca escrito em termos do prprio L
1
. Parece claro que nenhuma
substituio pode nos tirar desta encrenca. O que fazer ento?
2. Lema de Arden
Na verdade, ao aplicar o mtodo de substituio para resolver sistemas de equa-
es e achar a linguagem aceita por um autmato vamos nos deparar muitas vezes
com equaes em que uma linguagem escrita em termos dela prpria. Equaes
que sero, frequentemente, ainda mais complicadas que (1.1). Convm, portanto,
abordar deste j o problema em um grau de generalidade suciente para dar cabo
de todas as equaes que apaream como resultado do algoritmo de substituio.
Para isso, suponhamos que um alfabeto e que A e B so linguagens em .
Digamos, que X seja uma outra linguagem em que satisfaa
X = AX B.
O problema que queremos resolver consiste em usar esta equao para determinar
X.
Uma coisa que podemos fazer substituir X = AXB de volta nela prpria.
Isso d
(2.1) X = A(AX B) B = A
2
X (A )B,
e no parece adiantar de nada porque anal de contas continuamos com um X do
lado direito da equao. Mas no vamos nos deixar abater por to pouco: faamos
a substituio mais uma vez. Desta vez, substituiremos X = AX B em (2.1), o
que nos d
X = A
2
(AX B) (AB B) = A
3
X (A
2
A )B.
32 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
Repetindo o mesmo procedimento k vezes, chegamos equao
X = A
k+1
X (A
k
A
k1
A
2
A )B.
O problema que o X continua presente. Mas, e se repetssemos o processo in-
nitas vezes? Neste caso, perderamos de vista o termo que contm X que seria
empurrado para o innito, e sobraria apenas
(2.2) X = ( A A
2
)B.
Para poder fazer isto de maneira formal, vamos recordar a operao estrela de
Kleene. Em geral, se A uma linguagem no alfabeto , ento A

denida como
a reunio de todas as potncias de A; isto ,
A

= A A
2
A
3
.
Por exemplo, se = 0, 1 e A = 01, ento
A

= (01)
j
: j 0 = , 01, 0101, 010101, . . . .
A equao (2.2) sugere que, continuando o processo de substituio indeni-
damente, deveramos obter X = A

B. Este um conjunto perfeitamente bem


denido, resta-nos vericar se realmente uma soluo da equao X = AXB.
Para isso, substituiremos X por A

B do lado direito da equao:


AX B = A(A

B) B = AA

B B.
Como A

= A A
2
A
3
, obtemos
AA

B B = A( A A
2
A
3
)B B,
que d
AA

B B = (A A
2
A
3
A
4
)B B.
2. LEMA DE ARDEN 33
Pondo B em evidncia em todo o lado direito, obtemos
AA

B B = ( A A
2
A
3
A
4
)B = A

B.
Conclumos que A(A

B) B = A

B, de modo que A

B , de fato, uma soluo


da equao X = AX B.
Infelizmente, isto ainda no suciente para completar os clculos do algo-
ritmo de substituio. O problema que obtivemos uma soluo da equao de-
sejada, mas ainda no sabemos se esta soluo corresponde ao maior conjunto
X

que satisfaz X = AX B. Se no for este o caso, quando usarmos


A

B como soluo estaremos perdendo algumas palavras do conjunto aceito pelo


autmato, o que no queremos que acontea.
Suponhamos, ento, que X o maior subconjunto de

que satisfaz X =
AX B. Como j sabemos que A

B satisfaz esta equao, podemos escrever


X = A

B C, onde C um conjunto (disjunto de A

B) que contm as possveis


palavras excedentes. Substituindo X = A

B C em X = AX B, temos
(2.3) A

B C = A(A

B C) B = A

B AC,
j que, como vimos, A(A

B) B = A

B. Intersectando ambos os membros de


(2.3) com C, e lembrando que, por hiptese, C A

B = , chegamos a
C = AC C = (A )C.
Temos, ento, duas possibilidades. A primeira que A no contenha . Neste caso
A = , de modo que C = ; ou seja, A

B o maior conjunto soluo da equa-


o X = AXB. A outra possibilidade que A contenha , e neste caso estamos
encrencados. Por sorte, esta segunda possibilidade nunca ocorre na soluo das
equaes que advm do algoritmo de substituio! Voc pode conrmar isto lendo
a demonstrao detalhada do algoritmo de substituio na seo 4. Vamos resumir
tudo o que zemos em um lema, provado originalmente por D. N. Arden em 1960.
34 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
LEMA DE ARDEN. Sejam A e B linguagens em um alfabeto . Se / A
ento o maior subconjunto de

que satisfaz X = AX B X = A

B.
EXEMPLO 3.3. Vamos aplicar o que aprendemos para resolver a equao
(1.1), que resultou da aplicao do mtodo de substituio ao segundo exemplo
da seo anterior. A equao
L
1
= (0 1)
2
L
1
(0 1).
Aplicando o Lema de Arden com X = L
1
, A = (0 1)
2
e B = (0 1), teremos
que
L
1
= X = A

B = ((0 1)
2
)

(0 1).
Conclumos, assim, que a linguagem aceita pelo autmato ^
L(^) = ((0 1)
2
)

(0 1).
3. O Algoritmo de Substituio
Antes de fazer outro exemplo, vamos descrever em mais detalhes o algoritmo
de substituio que usamos para determinar a linguagem aceita pelos autmatos da
seo 1. Este algoritmo foi inventado por J. A. Brzozowski em 1964.
Algoritmo de substituio
Entrada: Ingredientes (, Q, q
0
, F, ), onde Q = q
1
, . . . , q
n
e q
0
= q
1
, de um
autmato nito determinstico /.
Sada: Uma expresso regular r tal que L(r) = L(/).
Primeira etapa: Escreva as equaes para as linguagens L
j
, para cada 1 j n.
Segunda etapa: Comeando por L
n
e acabando em L
1
, substitua L
j
em todas as
equaes anteriores, aplicando primeiro o Lema de Arden se L
j
for expressa em
termos dela prpria.
Terceira etapa: A linguagem aceita por / corresponde expresso obtida para
L
1
.
3. O ALGORITMO DE SUBSTITUIO 35
Uma descrio detalhada deste algoritmo, e uma demonstrao de que faz o
que pedido, pode ser encontrada na seo 4. Por enquanto, nos contentaremos
com a descrio acima.
EXEMPLO 3.4. Vamos aplicar ao autmato no alfabeto 0, 1 cujo grafo
\ __
q
5
0,1
.
I
\ __
q
1
1

0
\ __
q
2
0

1
,

\ __
q
3
0

1
\ __ ` _
q
4
0,1
.
As equaes correspondentes a autmato so
L
1
= 0L
2
1L
5
L
2
= 1L
3
0L
5
L
3
= 0L
1
1L
4
L
4
= 0L
4
1L
4

L
5
= 0L
5
1L
5
.
Uma olhada no grafo mostra que q
5
um estado morto, de modo que L
5
= . Com
isto as equaes se simplicam:
L
1
= 0L
2
L
2
= 1L
3
L
3
= 0L
1
1L
4
L
4
= 0L
4
1L
4

L
5
= .
36 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
A equao para L
4
nos d
L
4
= (0 1)L
4
,
de modo que precisamos aplicar o Lema de Arden. fazendo isto obtemos
L
4
= (0 1)

= (0 1)

.
Substituindo em L
3
,
L
3
= 0L
1
1(0 1)

.
De modo que, da segunda equao, segue que
L
2
= 1(0L
1
1(0 1)

) = 10L
1
11(0 1)

.
Com isso, resulta da primeira equao que
L
1
= 010L
1
011(0 1)

.
Usando o Lema de Arden mais uma vez,
L
1
= 010

(011(0 1)

),
que a linguagem aceita pelo autmato.
Antes de encerrar a seo precisamos fazer algumas consideraes sobre a
aplicao do Lema de Arden.
Em primeiro lugar, o que aconteceria se no tivssemos notado que q
5
um
estado morto? Neste caso teramos de confrontar a equao L
5
= 0L
5
1L
5
, ou
seja L
5
= (0 1)L
5
. Como L
5
aparece dos dois lados da equao, ser necessrio
aplicar o Lema de Arden. Note que, neste caso X = L
1
, A = (0 1) e B = , de
modo que
L
1
= X = (0 1)

= ,
que o resultado esperado.
4. ANLISE FORMAL DO ALGORITMO DE SUBSTITUIO 37
O segundo comentrio diz respeito aplicao do Lema de Arden equao
L
4
= 0L
4
1L
4
.
Na aplicao que zemos anteriormente, tomamos A = (0 1) e B = . Mas o
que aconteceria se escolhssemos A = 0 e B = 1L
4
? Neste caso,
L
4
= 0

(1L
4
) = 0

1L
4
0

,
e continuamos com L
4
dos dois lados da equao. Mas, ao invs de nos deixar
intimidar, aplicaremos o Lema de Arden a esta ltima equao, o que nos d
(3.1) L
4
= (0

1)

.
Note que se isto estiver correto (e est!) ento devemos ter que os conjuntos
(0

1)

e (0 1)

so iguaisquer dizer, tm os mesmos elementos. Portanto,


deve ser possvel mostrar que toda palavra no alfabeto 0, 1 pertence ao conjunto
(0

1)

. Fica por sua conta se convencer disto. Finalmente, se adotarmos esta


ltima maneira de expressar L
4
, a descrio da linguagem aceita pelo autmato
que resulta do algoritmo de substituio
010

(011(0

1)

).
Em particular, o algoritmo de substituio pode retornar linguagens diferentes, to-
das corretas, dependendo da maneira como for aplicado.
4. Anlise Formal do Algoritmo de Substituio
Nesta seo damos uma descrio detalhada do algoritmo de substituio; isto
, uma descrio cuidadosa o suciente para servir, tanto para programar o algo-
ritmo, quanto para provar que funciona como esperado. Na verdade, encerramos
a seo justamente com uma demonstrao de que o algoritmo est correto. Con-
tudo, se voc no pretende programar o algoritmo, nem sente necessidade de uma
demonstrao formal, talvez seja melhor pular esta seo.
38 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
Comeamos com algumas denies um tanto tcnicas. Para t = 0, . . . , m
seja
t
o alfabeto denido por

t
=
_

_
se t = 0

1
, . . . ,
t
se t 1.
Seja agora
t
o conjunto formado pelas expresses regulares em
t
da forma
_
it

i

i
,
onde
i
,= uma expresso regular em
0
= . Note que
0
o conjunto das
expresses regulares em .
Dado
t
, seja L() a linguagem obtida de acordo com as seguintes regras:
(1) L() = ;
(2) L() = ;
(3) L(
i
) = L
i
;
com L
i
como denido na seo 1, e se e so expresses regulares em
t
ento
(4) L( ) = L() L();
(5) L( ) = L() L();
(6) L(

) = L()

.
Estamos, agora, prontos para dar uma descrio minuciosa do funcionamento
do algoritmo.
Algoritmo de Substituio
Entrada: um autmato nito determinstico / cujos ingredientes so (, Q, q
0
,
F, ), onde Q = q
1
, . . . , q
n
e q
0
= q
1
.
Sada: uma expresso regular r tal que L(r) = L(/).
Etapa 1: Para cada estado q
i
escreva uma expresso regular em
m
da forma
E
i
=
_
(
j

j(i)
) : (q
i
,
j
) = q
j(i)

4. ANLISE FORMAL DO ALGORITMO DE SUBSTITUIO 39


se q
m
no estado nal, ou
E
i
=
_
(
j

j(i)
) : (q
i
,
j
) = q
j(i)

se q
m
estado nal; e inicialize k = m.
Etapa 2: Se E
k
j est escrito como uma expresso regular em
k1
, v para
(3), seno E
k
da forma
E
k
=
k
B
onde B
k1
. Neste caso escreva E
k
=

B e v para para a Etapa 3. Observe


que pode acontecer que B = ; se isto ocorrer ento E
k
= .
Etapa 3: Subtraia 1 de k. Se k = 0, ento L(/) denotada pela expresso re-
gular E
1
no alfabeto
0
e podemos parar; seno, substitua
k
por E
k
na expresso
regular E
i
para i ,= k e volte Etapa 2.
Resta-nos apenas dar uma demonstrao de que este algoritmo funciona. Fa-
remos isso usando induo nita.
DEMONSTRAO. Digamos que, para um certo inteiro 0 k m estamos
para executar o (m k)-simo lao deste algoritmo. Queremos mostrar que, ao
nal deste lao
(1) E
i

k1
e
(2) L(E
i
) = L
i
,
para i = 1, . . . , m. Para fazer isto, podemos supor que, chegados a este lao,
temos E
i

k
e L(E
i
) = L
i
para i = 1, . . . , m. Observe que estas duas ltimas
armaes so claramente verdadeiras quando k = m.
Comeamos considerando a execuo da Etapa 2 no (m k)-simo lao. Se
j temos que E
k

k1
ento nada h a fazer nesta etapa. Por outro lado, se
E
k
/
k1
, ento como E
k

k
podemos escrever
(4.1) E
k
=
k

k
B,
40 3. RELAO ENTRE AFDS E EXPRESSES REGULARES
onde B
k1
. Seja F =

k
B. Temos de (4.1) e (2) que
A
k
= L(E
k
) = L(
k
) A
k
L(B).
Logo, pelo lema de Arden,
A
k
= L(
k
)

L(B),
mas isto igual a L(F). Como o algoritmo manda fazer E
k
= F, obtemos, ao
nal desta etapa, que E
k

k1
e L(E
k
) = A
k
.
Finalmente, na etapa 3, basta substituir
k
por F na expresso regular de E
j
sempre que j ,= k. Note que segue imediatamente disto que E
j

k1
e que
L(E
j
) = A
j
.
5. ltimo Exemplo
Nesta seo, retornamos ao exemplo da seo inicial do captulo anterior e
mostramos como obter, utilizando o algoritmo de substituio, uma notao com-
pacta na forma de expresso regular para a linguagem aceita por aquele autmato.
EXEMPLO 3.5. Reproduzimos novamente abaixo o grafo daquele autmato.
I
\ __
q
1
0

\ __
q
2
0

1 ,

\ __ ` _
q
3
1

As equaes para este autmato so as seguintes:


L
1
= 0.L
2
1.L
1
L
2
= 0.L
1
1.L
3
L
3
= 0.L
3
1.L
1

6. EXERCCIOS 41
Aplicando o Lema de Arden a L
3
, com A = 0 e B = 1.L
1
, obtemos
L
3
= 0

.(1.L
1
) = 0

1L
1
0

.
Substituindo L
3
nas equaes de L
1
e L
2
, obtemos as seguintes equaes:
L
1
= 0L
2
1L
1
L
2
= 0L
1
1(0

1L
1
0

) = (0 10

1)L
1
10

Substituindo L
2
na equao de L
1
, obtemos
L
1
= 0((0 10

1)L
1
10

) 1L
1
= (0(0 10

1) 1)L
1
010

.
Aplicando o Lema de Arden a L
1
, com A = 0(0 10

1) 1 e B = 010

, obtemos
L
1
= (0(0 10

1) 1)

010

.
Esta a expresso regular que denota a linguagem aceita pelo autmato.
6. Exerccios
(1) Determine a linguagem aceita por cada um dos seguintes autmatos ni-
tos. Em cada caso o estado inicial q
1
e o alfabeto a, b, c
a) F
1
= q
5
e a funo de transio dada por:

1
a b c
q
1
q
2
q
3
q
4
q
2
q
2
q
4
q
5
q
3
q
4
q
3
q
5
q
4
q
4
q
4
q
5
q
5
q
4
q
4
q
5
b) F
2
= q
4
e
2
=
1
.
c) F
3
= q
2
e a funo de transio dada por:
42 3. RELAO ENTRE AFDS E EXPRESSES REGULARES

3
a b c
q
1
q
2
q
2
q
1
q
2
q
3
q
2
q
1
q
3
q
1
q
3
q
2
(2) Para cada um dos autmatos nitos determinsticos, no alfabeto 0, 1,
dados abaixo:
esboce o diagrama de estados;
encontre os sorvedouros e os estados mortos;
determine a expresso regular da linguagem aceita pelo autmato
usando o algoritmo de substituio.
a) Os estado so q
1
, . . . , q
4
, o estado inicial q
1
, o conjunto de estados
nais q
2
e a funo de transio dada por:
0 1
q
1
q
2
q
4
q
2
q
3
q
1
q
3
q
4
q
4
q
4
q
4
q
4
b) Os estado so q
1
, . . . , q
5
, o estado inicial q
1
, o conjunto de estados
nais q
3
, q
4
e a funo de transio dada por:
0 1
q
1
q
2
q
4
q
2
q
2
q
3
q
3
q
5
q
5
q
4
q
5
q
5
q
5
q
5
q
5
c) Os estado so q
1
, . . . , q
4
, o estado inicial q
1
, o conjunto de estados
nais q
1
e a funo de transio dada por:
6. EXERCCIOS 43
0 1
q
1
q
2
q
4
q
2
q
3
q
1
q
3
q
4
q
2
q
4
q
4
q
4
d) Os estado so q
1
, q
2
, q
3
, o estado inicial q
1
, o conjunto de estados
nais q
1
e a funo de transio dada por:
0 1
q
1
q
1
q
2
q
2
q
3
q
2
q
3
q
1
q
2
e) Os estado so q
1
, . . . , q
6
, o estado inicial q
1
, o conjunto de estados
nais q
4
e a funo de transio dada por:
0 1
q
1
q
5
q
2
q
2
q
5
q
3
q
3
q
4
q
3
q
4
q
4
q
4
q
5
q
6
q
2
q
6
q
6
q
4
CAPTULO 4
Autmatos Finitos No-Determinsticos
Neste captulo, apresentamos e estudamos uma generalizao simples dos aut-
matos nitos determinsticos. Retiramos da funo de transio do autmato a
propriedade do determinismo, obtendo os autmatos nitos no-determinsticos.
1. Autmatos Finitos No-Determinsticos (AFNDs)
DEFINIO 4.1. Um autmato nito no-determinstico (abreviado como
AFND) A uma 5-upla A = (, Q, q
0
, F, ), onde:
, Q, q
0
e F so denidos da mesma forma que em um AFD e
a funo de transio no-determinstica. Esta funo tem o formato
: Q( ) T(Q),
isto , para cada par formado por um estado do conjunto Q e um sm-
bolo do alfabeto ou o smbolo , a funo de transio fornece como
resposta um conjunto de elementos de Q.
OBSERVAO. T(Q) denota o conjunto das partes de Q, ou seja, o conjunto
dos subconjuntos de Q. Como Q um conjunto nito, se Q possui n elementos,
T(Q) possui 2
n
elementos.
EXEMPLO 4.2. Se S = 1, 2, 3, ento
T(S) = , 1, 2, 3, 1, 2, 1, 3, 2, 3, 1, 2, 3.
OBSERVAO. Nestas notas, sempre iremos diferenciar funes de transio
determinsticas e no-determinsticas atravs da notao. Utilizamos uma letra
delta minscula () para transies determinsticas e uma letra delta maiscula ()
para transies no-determinsticas.
45
46 4. AUTMATOS FINITOS NO-DETERMINSTICOS
Vamos analisar as diferenas entre a funo de transio : Q Q de
um AFD e a funo de transio : Q( ) T(Q) de um AFND.
A resposta da funo um elemento do conjunto Q, ou seja, um estado do
AFD para onde o autmato ir ao executar a transio. J a resposta da funo
um elemento do conjunto T(Q), ou seja, um conjunto de estados do AFND. Este
conjunto de estados representa as possibilidades de estados para onde o autmato
poder ir ao executar a transio. Isto signica que, quando umAFNDexecuta uma
transio, o estado para onde ele vai escolhido aleatoriamente dentre o conjunto
de possibilidades oferecido pela resposta da funo de transio. Esta uma das
fontes de no-determinismo do autmato.
Outra diferena entre a funo de transio determinstica e a funo de transi-
o no-determinstica est nas entradas destas funes. A entrada da funo deter-
minstica sempre um par formado por um estado do autmato e um smbolo do
alfabeto. J a entrada da funo no-determinstica admite duas possibilidades.
A primeira um par no mesmo formato anterior e a segunda um par formado por
um estado do autmato e o smbolo . As transies com entrada neste segundo
formato oferecem ao AFND a possibilidade de mudar de estado sem consumir ne-
nhum smbolo da palavra sendo processada pelo autmato, uma possibilidade que
no existia nos AFDs. Esta uma segunda fonte de no-determinismo do aut-
mato.
Vamos analisar um exemplo concreto de AFND.
EXEMPLO 4.3. Seja A o AFND A = (, Q, q
0
, F, ), onde:
= 0, 1;
Q = q
1
, q
2
, q
3
, q
4
;
q
0
= q
1
;
F = q
4
;
A funo dada pela tabela abaixo.
1. AUTMATOS FINITOS NO-DETERMINSTICOS (AFNDS) 47
0 1
q
1
q
2
, q
3
q
3

q
2
q
4

q
3
q
3
q
2

q
4
q
1
, q
2
q
4
q
3

A partir desta tabela, temos que (q


1
, 0) = q
2
, q
3
, (q
1
, 1) = q
3
, (q
1
,
) = e assim por diante. Isto signica que, se o autmato est atualmente no
estado q
1
e o prximo smbolo da palavra a ser processado 0, a funo de tran-
sio oferece duas possibilidades para o prximo estado do autmato: q
2
ou q
3
.
O autmato ir ento escolher aleatoriamente entre estas duas possibilidades. J
se o autmato est atualmente no estado q
1
e o prximo smbolo da palavra a ser
processado 1, a funo de transio oferece apenas uma possibilidade para o
prximo estado do autmato: q
3
. Desta forma, este ser certamente o estado do
autmato aps executar a transio. Finalmente, como (q
1
, ) = , isto signica
que a funo de transio no oferece nenhuma possibilidade para que o aut-
mato, estando em q
1
, faa uma mudana de estado sem consumir nenhum smbolo
da palavra sendo processada.
Analisando um pouco mais a tabela, temos que (q
2
, 1) = (q
2
, ) = .
Desta forma, se o autmato est atualmente no estado q
2
e o prximo smbolo da
palavra a ser processado 1, ento a funo no oferece nenhuma possibilidade
de transio para o autmato. O autmato no pode consumir o smbolo 1 e mudar
de estado porque (q
2
, 1) = e tambm no pode mudar de estado sem consumir
nenhum smbolo da palavra porque (q
2
, ) = . Assim, caso o autmato esteja
no estado q
2
e o prximo smbolo da palavra seja 1, ele ir travar sem completar o
processamento da palavra. Um AFD sempre processa a palavra que recebe como
entrada completamente. Vemos que isto pode no acontecer em todos os casos com
um AFND.
Para nalizar a anlise da tabela, temos que (q
4
, 0) = q
1
, q
2
e (q
4
, ) =
q
3
. Desta forma, se o autmato est atualmente no estado q
4
e o prximo sm-
bolo da palavra a ser processado o 0, ele tem a possibilidade de duas escolhas
48 4. AUTMATOS FINITOS NO-DETERMINSTICOS
aleatrias para realizar com relao ao seu prximo estado. A primeira escolha
se ele ir realizar a transio consumindo o smbolo 0 ou se ir realizar a transio
sem consumir nenhum smbolo da palavra que est processando. Caso ele opte
pela segunda alternativa, como apenas q
3
est no conjunto (q
4
, ), o autmato
ir para o estado q
3
. Caso ele opte pela primeira alternativa, ele ir ento realizar
uma escolha aleatria entre os dois estados que a transio (q
4
, 0) oferece como
possibilidades: q
1
e q
2
.
DEFINIO 4.4. As transies da forma (q, ), para algum q Q, so
chamadas de -transies.
OBSERVAO. Um AFND tambm admite uma representao atravs de um
grafo direcionado com arestas rotuladas, de maneira anloga representao dos
AFDs. Os smbolos do conjunto aparecem como rtulos das arestas do
grafo, que so rotuladas de acordo com a funo de transio . Se, para um
determinado q Q e para um determinado , temos q

(q, )
(lembrando que (q, ) um conjunto), ento colocamos no grafo uma aresta
direcionada do vrtice de q para o vrtice de q

e rotulamos esta aresta com o


smbolo .
EXEMPLO 4.5. O grafo que representa o AFND do exemplo anterior mos-
trado abaixo.
I
\ __
q
1
0

\ __
q
2
0

\ __
q
3
0

\ __ ` _
q
4

OBSERVAO. Ao representarmos a funo de transio na forma de ta-


bela, o no-determinismo da transio se traduz no fato de que a tabela agora pre-
enchida por subconjuntos de Q e no mais por elementos de Q como nos AFNDs.
Um caso particular importante de se salientar que alguns campos da tabela podem
ser preenchidos com o conjunto vazio () que denota a ausncia de possibilidades
1. AUTMATOS FINITOS NO-DETERMINSTICOS (AFNDS) 49
de transio. J ao representarmos o AFND como um grafo, o no-determinismo
da transio se traduz na liberdade para que um vrtice tenha vrias arestas rotu-
ladas por um mesmo smbolo saindo dele ou mesmo para que no tenha nenhuma
aresta rotulada por um dado smbolo saindo dele.
Um AFND tambm processa uma palavra que recebe como entrada e fornece
como sada uma resposta do tipo Sim/No. O AFND A = (, Q, q
0
, F, ) inicia
seu processamento no estado q
0
e recebe como entrada uma palavra w

. Ele
l um smbolo de w de cada vez, comeando pelo seu primeiro smbolo mais
esquerda. Se o autmato se encontra em um estado q, ele pode ir para algum
estado q

(q, ) sem ler nenhum smbolo da entrada (desde que (q, ) ,= )


ou ele pode ler o prximo smbolo da entrada (denotado por ) e, aps a leitura,
ele ir para algum estado q

(q, ).
A partir destas transies de estado, podemos denir a noo de uma compu-
tao do autmato com uma palavra w.
DEFINIO 4.6. Uma congurao do AFND A um par formado por um
estado de Ae uma palavra de

(umelemento de Q

). Oprimeiro componente
de uma congurao representa o estado atual do autmato, enquanto o segundo
componente representa o trecho da palavra de entrada que ainda no foi lida pelo
autmato.
DEFINIO 4.7. A relao de congurao seguinte (notao ) denida
como (q, w) (q

, w

) se
(1) w = w

e q

(q, ) OU
(2) w = w

e q

(q, ).
OBSERVAO. Em um AFD, cada congurao (q, w) possui exatamente
uma congurao seguinte, se w ,= , ou nenhuma congurao seguinte no caso
em que w = . J em um AFND, uma congurao (q, w) pode possuir uma,
vrias ou mesmo nenhuma congurao seguinte.
50 4. AUTMATOS FINITOS NO-DETERMINSTICOS
DEFINIO 4.8. Se C
0
, . . . , C
n
so conguraes de A e se C
0
. . . C
n
,
ento temos uma computao em A, notao C
0

C
n
(em particular, assumimos
que C
0

C
0
).
OBSERVAO. Como uma congurao pode possuir vrias conguraes
seguintes, o autmato pode ter a possibilidade de realizar diversas computaes
distintas com uma mesma palavra w. Devido s -transies, possvel tambm
a existncia de computaes innitas em um AFND, o que nunca pode acontecer
em um AFD. Finalmente, devido possibilidade de que a resposta para algumas
transies seja o conjunto vazio, possvel a existncia de computaes em um
AFND que travam sem conseguir ler a palavra da entrada completamente, o que
tambm nunca pode acontecer em um AFD.
Como uma mesma palavra w pode produzir diversas computaes distintas em
um AFND, a questo de quando uma palavra ou no aceita pelo autmato se torna
mais sutil. Algumas computaes com w podem ser innitas, outras podem travar
sem ler w completamente, outras ainda podem ler w completamente e terminarem
em um estado que no nal e, nalmente, outras podem ler w completamente
e terminarem em um estado que nal. Como classicamos w neste caso? Esta
palavra aceita ou rejeitada?
A denio abaixo estabelece os critrios que utilizaremos para determinar se
uma palavra ou no aceita por um AFND.
DEFINIO 4.9. Dizemos que uma palavra w

aceita ou reconhecida
pelo AFND A se existe pelo menos uma computao nita (q
0
, w)

(f, ) onde
f F. Isto , uma palavra w aceita se existe pelo menos uma computao nita
tal que
(1) w completamente lida E
(2) O AFND termina a computao em algum de seus estados nais.
Caso contrrio, dizemos que a palavra rejeitada ou no aceita ou no reconhecida
pelo AFND A.
1. AUTMATOS FINITOS NO-DETERMINSTICOS (AFNDS) 51
OBSERVAO. importante ressaltar que uma computao em que o aut-
mato trava sem conseguir ler a palavra w completamente nunca uma computao
que satisfaz os critrios acima, mesmo que o travamento ocorra em um dos estados
nais do autmato.
OBSERVAO. Vemos que as denies de aceitao e rejeio so de certa
forma assimtricas em um AFND. Para uma palavra w ser aceita, basta que uma
computao satisfaa os critrios acima. J para uma palavra w ser rejeitada,
necessrio que todas as possveis computaes com w no satisfaam os critrios
acima.
DEFINIO 4.10. Denimos a linguagem aceita por um um AFND A com
alfabeto , denotada por L(A), como sendo o conjunto de todas as palavras w

que so aceitas por A. Observe que temos L(A)

.
EXEMPLO 4.11. Consideramos o autmato descrito no exemplo anterior. Va-
mos descrever o comportamento do autmato ao receber como entrada a palavra
w
1
= 11101.
(q
1
, 11101) (q
3
, 1101) (q2, 101) X
Gracamente:
\ __
q
1
1
\ __
q
3
1
\ __
q
2
1
\ __
X
No existe nenhuma outra computao possvel neste autmato para a palavra w
1
e esta computao trava sem processar a parte 101 da palavra. Logo, esta palavra
no aceita pelo autmato.
EXEMPLO 4.12. Consideramos o autmato descrito no exemplo anterior. Va-
mos descrever o comportamento do autmato ao receber como entrada a palavra
w
2
= 0011. Neste caso, temos diversas possibilidades de computaes neste aut-
mato para a palavra w
2
. Vamos descrev-las.
(1) (q
1
, 0011) (q
2
, 011) (q
4
, 11) (q
4
, 1) (q
4
, )
(2) (q
1
, 0011) (q
2
, 011) (q
4
, 11) (q
4
, 1) (q
4
, ) (q
3
, )
(3) (q
1
, 0011) (q
2
, 011) (q
4
, 11) (q
4
, 1) (q
3
, 1) (q
2
, )
52 4. AUTMATOS FINITOS NO-DETERMINSTICOS
(4) (q
1
, 0011) (q
2
, 011) (q
4
, 11) (q
3
, 11) (q
2
, 1) X
(5) (q
1
, 0011) (q
3
, 011) (q
3
, 11) (q
2
, 1) X
Vemos que destas cinco computaes possveis, duas travam sem ler a palavra w
2
completamente, duas leem toda a palavra e terminam em estados que no so nais
(q
3
e q
2
) e uma l toda a palavra e termina em um estado nal (q
4
). Desta forma,
como existe pelo menos uma computao nita que l toda a palavra e termina
em um estado nal, a palavra w
2
aceita pelo autmato. De fato, uma vez que a
computao que aceita w
2
foi logo a primeira descrita e precisamos de apenas uma
computao desta forma para determinar que a palavra aceita, temos que para
efeitos prticos era desnecessrio ter calculado as demais computaes possveis.
OBSERVAO. Um AFD um caso particular de um AFND. Considere um
AFND em que a funo de transio satisfaz as seguintes propriedades:
(1) (q, ) = , para todo q Q E
(2) (q, ) um conjunto unitrio para todo par (q, ), onde q Q e .
Neste caso, o que temos na prtica um AFD escrito no formato de um AFND,
uma vez que retiramos todas as possibilidades de no-determinismo. Logo, um
AFD um caso particular de um AFND.
2. Algoritmo de Construo de Subconjuntos
Vimos, na seo anterior, que um AFD um caso particular de um AFND.
Desta forma, as linguagens que so aceitas por algum AFD (as linguagens re-
gulares) so aceitas tambm por algum AFND. Entretanto, ser que a recproca
tambm verdadeira? Isto , ser que qualquer linguagem L que seja aceita por
algum AFND tambm ser aceita por algum AFD ou os AFNDs so capazes de
aceitar algumas linguagens que esto fora da classe das linguagens regulares?
indiscutvel que a transio no-determinstica possui muito menos amarras
do que a transio determinstica. Isto parece indicar que AFNDs podem ser capa-
zes de aceitar algumas linguagens que no sejamaceitas por AFDs ao se utilizarem
dessa exibilidade maior de suas funes de transio. Entretanto, provavelmente
no sentido inverso da intuio inicial da maioria das pessoas, isto no verdade.
2. ALGORITMO DE CONSTRUO DE SUBCONJUNTOS 53
Mesmo com esta exibilizao nas funes de transio, os AFNDs no possuem
maior poder computacional do que os AFDs, isto , se existir um AFND que aceite
uma dada linguagem L, tambm existe um AFD que aceita L.
Vamos mostrar este resultado de forma algortmica, isto , dado um AFND
A = (, Q, q
0
, F, ), vamos descrever um algoritmo que permite construir, a par-
tir dos componentes de A, um AFD A
d
= (, Q
d
, q
d
0
, F
d
, ) tal que L(A
d
) =
L(A). Isto signica que o AFD A
d
construdo pelo algoritmo aceita exatamente a
mesma linguagem que o AFND A original, porm sem fazer uso de qualquer tipo
de no-determinismo. Este algoritmo que permite calcular o AFD A
d
a partir do
AFND A conhecido como Algoritmo de Construo de Subconjuntos.
Para compreendermos como podemos representar o comportamento de um
AFND utilizando apenas transies determinsticas, vamos analisar em paralelo a
computao de dois autmatos: um determinstico, que foi descrito em um exem-
plo no captulo 2, e um no-determinstico, descrito no exemplo acima.
EXEMPLO 4.13. Colocamos abaixo os grafos destes dois autmatos.
I
\ __
q
1
0

\ __
q
2
0

1 ,

\ __ ` _
q
3
1

I
\ __
q
1
0

\ __
q
2
0

\ __
q
3
0

\ __ ` _
q
4

Vamos imaginar agora, apenas para efeito de melhor compreenso, que as com-
putaes nestes autmatos so controladas por um relgio que comea a contagem
de tempo no instante t = 0 e a cada novo instante de tempo, aumenta sua conta-
gem em uma unidade, isto , t = 1, t = 2 e assim por diante. A cada incremento na
contagem do relgio, os autmatos consomem um smbolo da palavra na entrada
e realizam uma transio com este smbolo. No caso de um AFND, ele tambm
tem a opo de realizar -transies entre os incrementos do relgio. Vamos ento,
com esta ideia em mente, mostrar abaixo os possveis estados em que cada um dos
autmatos pode estar durante uma computao com a palavra w = 0011 em cada
54 4. AUTMATOS FINITOS NO-DETERMINSTICOS
um dos instantes de tempo t = 0 at t = 4. Como um smbolo da palavra consu-
mido em cada incremento de tempo, o processamento da palavra concludo em
t = 4.
Vamos mostrar primeiro os possveis estados em que o AFD descrito acima
pode estar em cada um dos instantes de tempo.
0

O
O
O
O
O
O
O
0

O
O
O
O
O
O
O
1

O
O
O
O
O
O
O
1

O
O
O
O
O
O
O
\ __
q
1
\ __
q
2
\ __
q
1
\ __
q
1
\ __
q
1
Vemos que com uma transio determinstica, existe sempre exatamente uma
nica possibilidade de estado em que o autmato pode estar em cada instante de
tempo. Vamos agora mostrar os possveis estados em que o AFND descrito acima
pode estar em cada instante de tempo.
0

O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
0

O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
1

O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
1

O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
O
\ __
q
1

\ __
q
2
\ __ ` _
q
4

\ __ ` _
q
4

\ __ ` _
q
4

\ __
q
3

\ __
q
3
\ __
q
3
\ __
q
3
\ __
q
2
\ __
q
2
Vemos que, no caso de uma transio no-determinstica, em alguns instantes
de tempo, existem mais do que uma possibilidade de estado onde o autmato pode
estar, dependendo das escolhas aleatrias realizadas por eles. Entretanto, anali-
sando o diagrama acima, sabemos que, se o AFND est no estado q
1
, ento, aps
2. ALGORITMO DE CONSTRUO DE SUBCONJUNTOS 55
consumir um smbolo 0, ele estar em um dos estados do conjunto q
2
, q
3
. Analo-
gamente, se o AFND est em um dos estados do conjunto q
2
, q
3
, q
4
, ento, aps
consumir umsmbolo 1, ele continuar emumdos estados do conjunto q
2
, q
3
, q
4
.
Desta forma, se passarmos a pensar em termos de conjuntos de estados do
AFND ao invs de em termos de estados individuais, nos tornamos capazes de
descrever as transies de forma completamente determinada, como representado
abaixo:
q
1

0
q
2
, q
3

0
q
3
, q
4

1
q
2
, q
3
, q
4

1
q
2
, q
3
, q
4
.
Esta a ideia que utilizamos para construir um AFD A
d
que aceita a mesma
linguagem que um dado AFND A. Os estados de A
d
sero todos os possveis
conjuntos de estados de A. Isto , se o conjunto de estados de A Q, ento o
conjunto de estados de A
d
ser T(Q).
Para que uma palavra seja aceita pelo AFND, deve existir ao menos uma com-
putao nita no autmato que processe a palavra inteira e termine em um estado
nal. Dito de outra forma, uma palavra ser aceita se o conjunto de estados onde o
autmato pode estar no instante nal de tempo (o instante aps o processamento do
ltimo smbolo) contiver ao menos um estado nal do AFND. Desta forma, como
queremos que o AFND A e o AFD A
d
aceitem as mesmas palavras, se F o con-
junto de estados nais de A e S um estado de A
d
(S um conjunto de estados de
A), S ser estado nal de A
d
se S F ,= .
J descrevemos os conjuntos Q
d
e F
d
do AFD A
d
. Para descrevermos q
d
0
e , precisamos de uma maneira de descrever as -transies que podem ocorrer
no AFND entre os incrementos do relgio. Seja S um conjunto de estados de
A. Denimos o conjunto E(S) como o conjunto de todos os estados alcanveis
a partir de algum estado do conjunto S por uma sequncia de zero ou mais -
transies, isto , E(S) = p Q : (q, )

(p, ), onde q S.
EXEMPLO 4.14. No AFND do exemplo anterior, temos E(q
1
) = q
1
,
uma vez que no h -transies saindo de q
1
. Analogamente, E(q
2
) = q
2
e
E(q
3
) = q
3
. J no caso de q
4
, temos uma -transio saindo para q
3
. Ento,
56 4. AUTMATOS FINITOS NO-DETERMINSTICOS
E(q
4
) = q
3
, q
4
. Com estes conjuntos, podemos calcular E(S) para qual-
quer conjunto S de estados do AFND (S Q). Por exemplo, E(q
2
, q
4
) =
q
2
, q
3
, q
4
.
OBSERVAO. Repare que, para qualquer conjunto S, sempre temos S
E(S), uma vez que consideramos a possibilidade de zero ou mais -transies.
O estado inicial q
d
0
de A
d
ser o conjunto de todos os estados onde o AFND
A poder estar no instante de tempo t = 0. Este conjunto formado pelo estado
inicial q
0
de A e por todos os estados que podem ser alcanados a partir de q
0
por
-transies. Isto , q
d
0
= E(q
0
).
Finalmente, vamos descrever as transies de A
d
, isto , a funo . Se S um
estado de A
d
(S um conjunto de estados de A), e , o estado T = (S, )
ser justamente o conjunto de possveis estados em que o AFND A poder estar no
prximo instante de tempo, como ilustrado no diagrama acima. Para calcular T,
procedemos em duas etapas. Primeiramente, para cada estado q S de A, calcu-
lamos o conjunto de estados (q, ) e tomamos a unio de todos estes conjuntos.
Vamos denotar este novo conjunto por S

. S

contm os possveis estados em que


o AFND A poder estar aps o incremento no relgio. Entretanto, este no ainda
o conjunto de todos os possveis estados onde A pode estar neste novo instante de
tempo, pois nos resta ainda a possibilidade de A realizar -transies. Desta forma,
o conjunto T ser T = E(S

).
Resumidamente, temos abaixo a lista dos componentes Q
d
, q
d
0
, F
d
e de A
d
dados em funo dos componentes Q, q
0
, F e do AFND original A.
Q
d
= T(Q);
q
d
0
= E(q
0
);
F
d
= S Q
d
: S F ,= e
(S, ) = E(
qS
(q, )).
Vemos pela construo acima que, apesar de todo AFND possuir um AFD
equivalente, no sentido de que ambos aceitam a mesma linguagem, o AFD poder
2. ALGORITMO DE CONSTRUO DE SUBCONJUNTOS 57
ter um tamanho exponencialmente maior do que o AFND original (j que se [Q[ =
n, [Q
d
[ = [T(Q)[ = 2
n
).
Entretanto, nem sempre todos os estados no conjunto T(Q) so realmente ne-
cessrios. Todos os estados de Q
d
que no podem ser alcanados a partir do estado
inicial q
d
0
podem ser removidos de A
d
sem nenhum prejuzo. Isto nos sugere que
a melhor abordagem para a construo do AFD A
d
uma abordagem incremental.
Comeamos com o estado inicial q
d
0
e calculamos as suas transies. Vemos quais
novos estados aparecemcomo resultado destas transies e repetimos este processo
com os novos estados. Continuamos assim at que no surjam mais novos estados
como resultado do clculo das transies.
Vamos ilustrar esta abordagem incremental atravs de exemplos.
EXEMPLO 4.15. Vamos construir o AFD equivalente ao AFND descrito no
exemplo acima. Comeamos calculando o estado inicial q
d
0
= E(q
0
) = E(q
1
)
= q
1
, j que no existem -transies saindo de q
1
. Logo, vamos iniciar nossa
tabela de transies da funo do nosso AFD com a linha
0 1
q
1

Vamos calcular (q
1
, 0) e (q
1
, 1).
(q
1
, 0) = E(
q{q
1
}
(q, 0)) = E((q
1
, 0)) = E(q
2
, q
3
) = q
2
, q
3
.
(q
1
, 1) = E(
q{q
1
}
(q, 1)) = E((q
1
, 1)) = E(q
3
) = q
3
.
Assim, surgiram dois novos estados aps o clculo destas transies: q
2
, q
3
e
q
3
. Adicionamos estes estados tabela e continuamos os clculos para estes
novos estados.
0 1
q
1
q
2
, q
3
q
3

q
2
, q
3

q
3

(q
2
, q
3
, 0) = E(
q{q
2
,q
3
}
(q, 0)) = E((q
2
, 0) (q
3
, 0)) =
58 4. AUTMATOS FINITOS NO-DETERMINSTICOS
= E(q
4
q
3
) = E(q
3
, q
4
= q
3
, q
4
.
(q
2
, q
3
, 1) = E(
q{q
2
,q
3
}
(q, 1)) = E((q
2
, 1) (q
3
, 1)) =
= E( q
2
) = E(q
2
) = q
2
.
(q
3
, 0) = E(
q{q
3
}
(q, 0)) = E((q
3
, 0)) = E(q
3
) = q
3
.
(q
3
, 1) = E(
q{q
3
}
(q, 1)) = E((q
3
, 1)) = E(q
2
) = q
2
.
Surgiram dois novos estados aps o clculo destas transies: q
3
, q
4
e q
2
.
Adicionamos estes estados tabela e continuamos os clculos para estes novos
estados.
0 1
q
1
q
2
, q
3
q
3

q
2
, q
3
q
3
, q
4
q
2

q
3
q
3
q
2

q
3
, q
4

q
2

Continuamos os clculos desta forma at que no surjam novos estados no clculo


das transies. A tabela completa da funo car da seguinte forma:
0 1
q
1
q
2
, q
3
q
3

q
2
, q
3
q
3
, q
4
q
2

q
3
q
3
q
2

q
3
, q
4
q
1
, q
2
, q
3
q
2
, q
3
, q
4

q
2
q
3
, q
4

q
1
, q
2
, q
3
q
2
, q
3
, q
4
q
2
, q
3

q
2
, q
3
, q
4
q
1
, q
2
, q
3
, q
4
q
2
, q
3
, q
4


q
1
, q
2
, q
3
, q
4
q
1
, q
2
, q
3
, q
4
q
2
, q
3
, q
4

Como o nico estado nal do AFND original era q


4
, os estados nais do nosso
AFD so q
3
, q
4
, q
2
, q
3
, q
4
e q
1
, q
2
, q
3
, q
4
.
3. EXERCCIOS 59
EXEMPLO 4.16.
I
\ __
q
1
0

\ __
q
2
0

\ __
q
3
0

\ __ ` _
q
4
1

Considere o AFND descrito acima. Vamos calcular o AFD equivalente a ele. Co-
meamos calculando q
d
0
= E(q
0
) = E(q
1
) = q
1
. Agora calculamos incre-
mentalmente a tabela de transio .
0 1
q
1
q
2
q
3

q
2
q
1
, q
2
, q
4
q
2

q
3
q
1
q
2
, q
4

q
1
, q
2
, q
4
q
1
, q
2
, q
4
q
2
, q
3

q
2
, q
4
q
1
, q
2
, q
4
q
2
, q
3

q
2
, q
3
q
1
, q
2
, q
4
q
2
, q
4

Como o nico estado nal do AFND original era q


4
, os estados nais do nosso
AFD so q
1
, q
2
, q
4
e q
2
, q
4
. Repare tambm que, com a abordagem incremen-
tal, no precisamos construir os 16 estados de T(Q). A construo de 6 estados
foi suciente.
3. Exerccios
(1) Desenhe o diagrama de estados de cada um dos seguintes autmatos ni-
tos no determinsticos e construa o autmato nito determinstico equi-
valente a cada um deles. Em cada caso o estado inicial q
1
.
a) F
1
= q
4
e a funo de transio dada por:
60 4. AUTMATOS FINITOS NO-DETERMINSTICOS

1
a b c
q
1
q
1
, q
2
, q
3

q
2
q
4

q
3
q
4

q
4

b)
2
=
1
e F
2
= q
1
, q
2
, q
3
.
c) F
3
= q
2
e a funo de transio dada por:

3
a b
q
1
q
2

q
2
q
1
, q
3

q
3
q
1
, q
3

(2) Seja A um autmato nito determinstico com um nico estado nal.
Considere o autmato nito no determinstico A

obtido invertendo os
papis dos estados inicial e nal e invertendo tambm a direo de cada
seta no diagrama de estado. Descreva L(A

) em termos de L(A).
(3) Mostre que todo AFND pode ser convertido em outro equivalente que
possui apenas um nico estado nal.
CAPTULO 5
Operaes com Autmatos Finitos e Linguagens Regulares
No captulo 3 vimos como obter a expresso regular da linguagem aceita por
um autmato nito. Neste captulo, iremos resolver o problema inverso; isto ,
dada uma expresso regular r em um alfabeto , construmos um autmato nito
que aceita L(r). Na verdade, o autmato que resultar de nossa construo no ser
determinstico. Mas isto no um problema, j que sabemos como convert-lo em
um autmato determinstico usando a construo de subconjuntos.
Na segunda parte deste captulo, iremos analisar as chamadas propriedades de
fechamento das linguagens regulares com relao s seis operaes de linguagens
que denimos: unio, concatenao, estrela de Kleene, interseo, complemento e
diferena.
1. Consideraes Gerais
Seja r uma expresso regular r no alfabeto . Nossa estratgia consistir em
utilizar a expresso regular r como uma receita para a construo de um autmato
nito no determinstico /(r) que aceita L(r). Entretanto, como vimos no cap-
tulo 2, r denida, de maneira recursiva, a partir dos smbolos de , e , por
aplicao sucessiva das operaes de unio, concatenao e estrela. Por isso, efe-
tuaremos a construo de /(r) passo a passo, a partir dos autmatos que aceitam
os smbolos de , e .
Contudo, para que isto seja possvel, precisamos antes resolver alguns pro-
blemas. O primeiro, e mais simples, consiste em construir autmatos nitos que
aceitem um smbolo de , ou ou . Estes autmatos funcionaro como os to-
mos da construo. Os problemas mais interessantes dizem respeito construo
de novos autmatos a partir de autmatos j existentes. Suponhamos, ento, que
/
1
e /
2
so autmatos nitos no determinsticos. Precisamos saber construir
61
62 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
(1) um autmato /
u
que aceita L(/
1
) L(/
2
);
(2) um autmato /
c
que aceita L(/
1
) L(/
2
); e
(3) um autmato /
1
que aceita L(/
1
)

.
Se formos capazes de inventar maneiras de construir todos estes autmatos, ento
seremos capazes de reproduzir a montagem de r passo a passo no domnio dos
autmatos nitos, o que nos levar a um autmato nito que aceita L(r), como
desejamos.
Comearemos descrevendo os tomos desta construo; isto , os autmatos
que aceitam smbolos de , e . Seja . Um autmato simples que aceita
dado pelo grafo
I
\ __
q
1

\ __ ` _
q
2
O autmato que aceita ainda mais simples
I
\ __ ` _
q
1
Para obter o que aceita basta no declarar nenhum estado como sendo nal. A
maneira mais simples de fazer isto alterar o autmato acima, como segue.
I
\ __
q
1
Construdos os tomos, falta-nos determinar como podem ser conectados para ob-
ter estruturas maiores e mais complicadas. Passamos, assim, soluo dos proble-
mas enunciados acima.
2. Unio
Suponhamos que / e /

so autmatos nitos no determinsticos em um


mesmo alfabeto . Mais precisamente, digamos que
(2.1) / = (, Q, q
0
, F, ) e /

= (, Q

, q

0
, F

).
2. UNIO 63
Assumiremos, tambm, que QQ

= . Observe que esta hiptese no representa


nenhuma restrio expressiva, j que para alcan-la basta renomear os estados de
/

, no caso de serem denotados pelo mesmo nome que os estados de /.


Um outro detalhe que vale a pena mencionar que, tanto nesta construo,
como na da concatenao, estamos supondo que ambos os autmatos esto de-
nidos para um mesmo alfabeto. Novamente, esta restrio apenas aparente j
que os autmatos no precisam ser determinsticos. De fato, podemos aumentar o
alfabeto de entrada de um autmato no determinstico o quanto quisermos, sem
alterar o seu comportamento. Para isso basta decretar que as transies pelos no-
vos smbolos so todas vazias. No caso da unio, isto signica que, se / e /

tiverem alfabetos de entrada e

diferentes, ento podemos considerar ambos


como autmatos no alfabeto

. Para mais detalhes veja o exerccio 1.


Vejamos como deve ser o comportamento de um autmato nito /
u
para que
aceite L(/) L(/

). O autmato /
u
aceitar uma palavra w

somente
quando w for aceita por / ou por /

. Mas, para descobrir isto, /


u
deve ser
capaz de simular estes dois autmatos. Como estamos partindo do princpio de
que /
u
no determinstico, podemos deix-lo escolher qual dos dois autmatos
vai querer simular em uma dada computao. Portanto, ao receber uma palavra w,
o autmato /
u
:
escolhe se vai simular /ou /

;
executa a simulao escolhida e aceita w apenas se for aceita pelo aut-
mato cuja simulao est sendo executada.
Uma maneira de realizar isto em um autmato nito criar um novo estado inicial
q
0
cuja nica funo realizar a escolha de qual dos dois autmatos ser simulado.
Mais uma vez, como /
u
no determinstico, podemos deix-lo decidir, por si
prprio, qual o autmato que ser simulado. Para isto, basta acrescentarmos uma
-transio do novo estado inicial para cada um dos estados iniciais q
0
e q

0
.
O comportamento geral de /
u
pode ser ilustrado em uma gura, como segue.
As transies que foram acrescentadas como parte da construo de /
u
aparecem
tracejadas.
64 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES

\
q
0

` _
q
0

` _
q

Como a gura sugere, os estados de /


u
so os mesmos de / e /

, exceto
por q
0
. Vamos formalizar a construo, listando os vrios elementos de /
u
um a
um:
Alfabeto: ;
Estados: q
0
Q Q

;
Estado inicial: q
0
;
Estados nais: F F

;
Funo de transio:

u
(q, ) =
_

_
q
0
, q

0
, se q = q
0
e =
, se q = q
0
e ,=
(q, ), se q Q

(q, ), se q Q

3. CONCATENAO 65
EXEMPLO 5.1. Vejamos como a construo se comporta em um exemplo.
Considere o autmato nito determinstico /
par
, com grafo
I
\ __ ` _
q
1
b

\ __
q
2
b

e o autmato nito no determinstico /


ab
cujo grafo
I
\ __
q

1
a
\ __
q

2
b
\ __ ` _
q

3
J sabemos que / aceita a linguagem formada pelas palavras no alfabeto a, b
que tm uma quantidade par de as, e que L(/

) = ab. Aplicando a constru-


o discutida acima para construir um autmato /
u
que aceita L(/) L(/

),
obtemos
I
\ __
q
0

\ __ ` _
q
1
b

\ __
q
2
b

\ __
q

1
a
\ __
q

2
b
\ __ ` _
q

3
A chave para entender a razo do funcionamento desta construo est em
perceber que inicialmente as nicas transies possveis no autmato so as -
transies a partir do estado inicial. Ao realizar uma destas transies, o autmato
car para sempre preso em um dos seus dois setores: o setor que uma cpia de
/ou o setor que uma cpia de /

. Assim, ele ca impossibilitado de, no meio


do processamento abandonar a simulao de /para continuar de acordo com/

ou vice-versa. Ele dever realizar a simulao completa de /ou de /

.
3. Concatenao
A segunda operao de linguagens que precisamos transcrever para os aut-
matos a concatenao. Suponhamos, mais uma vez, que temos dois autmatos
66 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
/e /

no mesmo alfabeto , cujos elementos so


/ = (, Q, q
0
, F, ) e /

= (, Q

, q

0
, F

).
Continuaremos assumindo que Q Q

= .
Nosso objetivo construir um autmato /
c
que aceite a concatenao L(/)
L(/

). Assim, dada uma palavra w

, o autmato /
c
precisa vericar se
existe um prexo de w que aceito por /e que seguido de um suxo aceito por
/

. Naturalmente isto sugere conectar os autmatos / e /

em srie; quer
dizer, um depois do outro. Alm disso, para que o prexo esteja emL(/) o ltimo
estado de / alcanado em uma computao por w deve ser nal. Finalmente,
mais fcil construir um modelo no determinstico de /
c
, j que no temos como
saber exatamente onde acaba o prexo de w que pertence a L(/).
Podemos ilustrar a construo em uma gura, como segue.

_
_
_
_
_
_
_
_

\
q
0



/
` _
q

.
.
.
.
.
.
.
.

As setas correspondentes s transies entre os autmatos /e /

foram tra-
cejadas para dar maior clareza gura. Observe tambm que os estados que seriam
nais em/aparecem com a bolinha central vazada ( em vez de ). Fizemos isto
porque os estados nais de /no continuam sendo estados nais em /
c
.
Formalizaremos a construo, listando os vrios elementos de /
c
um a um:
Alfabeto: ;
Estados: Q Q

;
Estado inicial: q
0
;
Estados nais: F

;
4. ESTRELA 67
Funo de transio:

c
(q, ) =
_

_
(q, ) se q Q F
(q, ) se q F e ,=
(q, ) q

0
se q F e =

(q, ) se q Q

EXEMPLO 5.2. Vejamos como a construo se comporta quando aplicada


aos autmatos utilizados no exemplo da seo 2. Comearemos concatenando
/
par
com /
ab
:
I
\ __
q
1
b

\ __
q
2
b

\ __
q

1
a
\ __
q

2
b
\ __ ` _
q

3
Observe que o estado q
1
deixou de ser nal nesta concatenao.
EXEMPLO 5.3. Por outro lado, se concatenarmos /
ab
com /
par
, ento te-
remos o seguinte grafo resultante:
I
\ __
q

1
a
\ __
q

2
b
\ __
q

\ __ ` _
q
1
b

\ __
q
2
b

4. Estrela
Tendo mostrado como construir um autmato para a concatenao, no parece
to difcil lidar com a estrela. Anal, se L uma linguagem, ento L

obtida
concatenando L com ela prpria mais e mais vezes; isto , calculando a unio das
L
j
, para todo j 0. Portanto, uma maneira de realizar um autmato /que aceite
L consistiria em conectar a sada de /com sua entrada. Com isso, a concatenao
passaria innitas vezes pelo prprio /, e teramos um novo autmato /

que
aceita L

. Vamos testar esta ideia em um exemplo e ver o que acontece.


68 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
EXEMPLO 5.4. Considere o autmato nito ^ no alfabeto a, b, cujo grafo
dado por
I
\ __
q
1
a
\ __
q
2
b
,

\ __ ` _
q
3
a

A linguagem aceita por ^ denotada pela expresso regular (aba)

ab, como
fcil de ver.
Para concatenar ^ com ele prprio precisamos criar -transies entre seus
estados nais e o seu estado inicial. Neste exemplo, h apenas o estado nal q
3
.
Por isso precisamos criar uma nova -transio de q
3
para q
1
, obtendo o seguinte
autmato
I
\ __
q
1
a
\ __
q
2
b
,

\ __ ` _
q
3

A transio acrescentada foi desenhada tracejada para que possa ser mais facil-
mente identicada.
Infelizmente, no pode ser verdade que este autmato aceita L(^)

. Anal,
pertence a L(^)

e no aceito pelo autmato que acabamos de construir. A essa


altura, sua reao pode ser:
No seja por isso! Para resolver este problema basta marcar q
1
como sendo estado nal do novo autmato.
Vamos fazer isto e ver o que acontece. O grafo do autmato passaria a ser o se-
guinte:
I
\ __ ` _
q
1
a
\ __
q
2
b
,

\ __ ` _
q
3

4. ESTRELA 69
Contudo, este autmato aceita a palavra aba que no pertence a
L(^)

= ((aba)

ab)

.
O problema no est em nossa ideia original de concatenar um autmato com
ele prprio, mas sim na emenda que adotamos para resolver o problema de fazer
o novo autmato aceitar . Ao declarar q
1
como sendo estado nal, no levamos
em conta que o autmato admite transies que retornam ao estado q
1
. Isto fez
com que outras palavras, alm de , passassem a ser aceitas pelo novo autmato.
Mas no isso que queremos. A construo original funcionava perfeitamente,
exceto porque no era aceita. Uma maneira simples de contornar o problema
inspirar-se na unio, e criar um novo estado q
0
para fazer o papel de estado inicial.
Este estado tambm ser um estado nal. Alm disso, nenhuma transio do novo
autmato aponta para q
0
. Isto garante que a introduo de q
0
leva aceitao de
apenas uma nova palavra, que .
EXEMPLO 5.5. Esboamos abaixo o grafo do autmato resultante desta cons-
truo, no exemplo que vimos considerando.
I
\ __ ` _
q
0

\ __
q
1
a
\ __
q
2
b
,

\ __ ` _
q
3

Em geral, quando dado um autmato


/ = (, Q, q
0
, F, )
podemos construir um autmato /

que aceita L(/)

segundo o modelo estabe-


lecido no exemplo anterior. Como no caso da unio e da concatenao, podemos
ilustrar o autmato /

em uma gura nas quais as novas transies aparecem


70 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
tracejadas.

` _ \
q
0

\
q
0


Formalizaremos a construo, listando os vrios elementos de /

, como se-
gue:
Alfabeto: ;
Estados: q
0
Q;
Estado inicial: q
0
;
Estados nais: F q
0

Funo de transio:

(q, ) =
_

_
q
0
se q = q
0
e =
se q = q
0
e ,=
(q, ) se q Q F
(q, ) q
0
se q F
Com a concluso deste mtodo para obter um AFND equivalente a uma dada
expresso regular e com os outros mtodos estudados nos captulos anteriores, ob-
temos a equivalncia entre as trs estruturas estudadas at agora: AFDs, AFNDs
e expresses regulares. Isto pode ser resumido no teorema abaixo.
TEOREMA 5.6. As seguintes armaes so equivalentes entre si:
(1) L uma linguagem regular.
(2) L aceita por algum AFD.
(3) L aceita por algum AFND.
(4) L pode ser gerada por uma expresso regular.
5. EXEMPLO MAIS EXTENSO 71
5. Exemplo Mais Extenso
Nesta seo, vamos mostrar, atravs de um exemplo, como utilizar o mtodo
desenvolvido neste captulo para, a partir de uma expresso regular r, construir um
AFND A tal que L(A) = L(r).
EXEMPLO 5.7. Vamos considerar a expresso regular r = 00

(10)

. Iremos
construir o AFND equivalente a esta expresso regular incrementalmente, a partir
de AFNDs para as expresses regulares atmicas 0 e 1.
(1) ANFD para 0:
I


0

(2) ANFD para 1:


I


1

(3) ANFD para 0

:
I

.
(4) ANFD para 10:
I


1

(5) ANFD para 00

:
I


0

.
(6) ANFD para (10)

:
I



72 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
(7) ANFD para r = 00

(10)

:
I




OBSERVAO. importante ressaltar que os AFNDs obtidos atravs da apli-
cao do mtodo descrito neste captulo no possuem, em geral, o menor nmero
possvel de estados. Entretanto, ele um mtodo geral o suciente para poder ser
aplicado a qualquer expresso regular dada.
6. Propriedades de Fechamento das Linguagens Regulares
Nesta seo, vamos discutir as propriedades de fechamento das linguagens re-
gulares com relao s seis operaes de linguagens que denimos: unio, conca-
tenao, estrela de Kleene, interseo, complemento e diferena.
DEFINIO 5.8. Uma classe de linguagens fechada com relao a uma
operao de linguagens se, quando tomamos duas linguagens quaisquer (ou ape-
nas uma linguagem no caso das operaes de estrela de Kleene e complemento)
denidas sobre o mesmo alfabeto dentro desta classe e aplicamos a elas esta
operao, a linguagem resultante tambm est dentro desta mesma classe de lin-
guagens.
OBSERVAO. importante ressaltar que estaremos considerando sempre a
unio, concatenao, interseo e diferena de pares de linguagens denidas sobre
o mesmo alfabeto.
(1) Unio, concatenao e estrela de Kleene:
Queremos mostrar que as linguagens regulares so fechadas com re-
lao a estas trs operaes. Para isso, precisamos mostrar que a unio e a
concatenao de duas linguagens regulares quaisquer tambm so lingua-
gens regulares e que a estrela de uma linguagem regular qualquer tambm
uma linguagem regular.
6. PROPRIEDADES DE FECHAMENTO DAS LINGUAGENS REGULARES 73
J conhecemos trs maneiras equivalentes de descrever uma lingua-
gem regular: AFDs, AFNDs e expresses regulares. Podemos utilizar
qualquer uma destas trs estruturas para mostrar o fechamento das lin-
guagens regulares com relao a alguma operao, escolhendo a que for
mais conveniente para a operao em questo.
No caso das operaes de unio, concatenao e estrela, podemos
mostrar o resultado de diversas formas. Vamos comear mostrando este
resultado de maneira bem simples atravs de expresses regulares. Se L
1
e L
2
so linguagens regulares, ento existem expresses regulares r
1
e
r
2
que geram L
1
e L
2
, respectivamente. Mas se r
1
e r
2
so expresses
regulares, ento, pelas regras de formao das expresses regulares, r
1

r
2
, r
1
.r
2
e r

1
tambm so expresses regulares e estas expresses geram,
respectivamente, as linguagens L
1
L
2
, L
1
.L
2
e L

1
. Como existem
expresses regulares que geram as linguagens L
1
L
2
, L
1
.L
2
e L

1
, ento
elas tambm so linguagens regulares. Logo, a classe das linguagens
regulares fechada com relao s operaes de unio, concatenao e
estrela.
Um argumento anlogo pode ser feito com a utilizao de AFNDs.
Se L
1
e L
2
so linguagens regulares, ento existem AFNDs A
1
e A
2
que aceitam L
1
e L
2
, respectivamente. Estudamos neste captulo um
mtodo para construir, a partir de AFNDs que aceitam L
1
e L
2
, AFNDs
que aceitem L
1
L
2
, L
1
.L
2
e L

1
. Como existem AFNDs que aceitam
as linguagens L
1
L
2
, L
1
.L
2
e L

1
, ento elas tambm so linguagens
regulares.
Finalmente, para o caso especco da operao de unio, podemos
apresentar um terceiro argumento, que utilizar AFDs. Se L
1
e L
2
so linguagens regulares, ento existem AFDs B
1
= (, Q, q
0
, F, ) e
B
2
= (, Q

, q

0
, F

) que aceitam L
1
e L
2
, respectivamente. Quere-
mos construir um AFD B

= (, Q

, q
0

, F

) que aceite L
1
L
2
.
74 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
A ideia para a construo deste autmato simular em paralelo a com-
putao dos autmatos B
1
e B
2
com uma mesma palavra, executando
as transies nos dois autmatos de forma sincronizada. Se pelo menos
um dos autmatos aceitar a palavra, ela est na unio das linguagens e
o nosso novo autmato dever aceitar. Se os dois autmatos rejeitarem
a palavra, ento o nosso novo autmato tambm dever rejeit-la. Para
implementar esta ideia, os estados do nosso novo autmato sero pares
(q, q

), onde q estado de B
1
e q

estado de B
2
. Temos ento:
Q

= QQ

;
q
0

= (q
0
, q

0
);
F

= F Q

QF

(B
1
termina em estado nal ou B
2
termina
em estado nal) e

((q, q

), ) = ((q, ),

(q

, )) (execuo sincronizada das tran-


sies).
(2) Interseo:
Para mostrar que a interseo de duas linguagens regulares tambm
sempre uma linguagem regular, vamos utilizar um argumento anlogo
ao ltimo argumento que utilizamos para a operao de unio. Se L
1
e
L
2
so linguagens regulares, ento existem AFDs B
1
= (, Q, q
0
, F, )
e B
2
= (, Q

, q

0
, F

) que aceitam L
1
e L
2
, respectivamente. Quere-
mos construir um AFD B

= (, Q

, q
0

, F

) que aceite L
1
L
2
.
Novamente, a ideia para a construo deste autmato simular em pa-
ralelo a computao dos autmatos B
1
e B
2
com uma mesma palavra,
executando as transies nos dois autmatos de forma sincronizada. O
que muda em relao operao de unio, a condio de aceitao do
novo autmato. No caso da interseo, se ambos os autmatos aceitarem
a palavra, ela est na interseo das linguagens e o nosso novo autmato
dever aceitar. Se pelo menos um dos autmatos rejeitar a palavra, ento
o nosso novo autmato tambm dever rejeit-la. Temos ento:
Q

= QQ

;
7. EXERCCIOS 75
q
0

= (q
0
, q

0
);
F

= F F

(B
1
e B
2
terminam em estado nal) e

((q, q

), ) = ((q, ),

(q

, )) (execuo sincronizada das tran-


sies).
(3) Complemento:
Se L uma linguagem regular, ento existe um AFD A = (, Q, q
0
,
F, ) que aceita L
1
. Para obtermos um AFD que aceita L, basta alte-
rarmos o conjunto de estados nais do autmato A, obtendo o autmato
A

= (, Q, q
0
, F

, ), onde F

= Q F. Isto , basta invertermos os


estados nais e os no-nais.
OBSERVAO. Este raciocnio da inverso de estados nais e no-
nais para a obteno de um autmato que aceite o complemento da lin-
guagem aceita pelo autmato original s funciona com autmatos deter-
minsticos.
(4) Diferena:
Sejam L
1
e L
2
linguagens regulares. Queremos mostrar que L
1
L
2
tambm sempre uma linguagem regular. Temos que L
1
L
2
= L
1

L
2
. Mas j mostramos acima que se L
2
regular, ento L
2
tambm ser
regular. Por outro lado, tambm mostramos acima que se L
1
e L
2
so
regulares, ento L
1
L
2
tambm ser regular. Ento L
1
L
2
tambm
ser regular.
7. Exerccios
(1) Sejam

dois alfabetos. Suponha que / um autmato nito no


determinstico no alfabeto . Construa formalmente um autmato nito
no determinstico /

no alfabeto

, de modo que L(/) = L(/

).
Prove que sua construo funciona corretamente.
SUGESTO: Dena todas as transies de /

por smbolos de


como sendo vazias.
76 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
(2) Determine, usando o algoritmo descrito neste captulo, autmatos nitos
no determinsticos que aceitem as linguagens cujas expresses regulares
so dadas abaixo:
a) (10 001 010)

;
b) (1 0)

00101;
c) ((0 0) (0 0 0))

.
(3) Converta cada um dos autmatos nitos no determinsticos obtidos no
exerccio anterior em um autmato nito determinstico.
(4) Sejam L e L

linguagens regulares. Mostre que L L

regular.
(5) SejamLe L

linguagens tais que L regular, LL

regular e LL

= .
Mostre que L

regular.
(6) Sejam M e M

autmatos nitos no determinsticos em um alfabeto .


Neste exerccio discutimos uma maneira de denir um autmato nito
no determinstico N que aceita a concatenao L(M) L(M

) diferente
da que foi mostrada neste captulo. Seja a funo de transio de M.
Para construir o grafo de N a partir dos grafos de M e M

procedemos
da seguinte maneira. Toda vez que um estado q de M satisfaz
para algum , o conjunto (q, ) contmumestado
nal,
acrescentamos uma transio de q para o estado inicial de M

, indexada
por .
a) Descreva detalhadamente todos os ingredientes de N. Quem so os
estados nais de N?
b) Mostre que se / L(M) ento N aceita L(M) L(M

).
c) Se L(M) ento pode ser necessrio acrescentar mais uma transi-
o para que o autmato aceite L(M) L(M

). Que transio esta?


(7) Seja L uma linguagem que regular. Denimos o posto de L como sendo
o menor inteiro positivo k para o qual existe um autmato nito determi-
nstico A com k estados e tal que L = L(A).
7. EXERCCIOS 77
a) Se L
1
e L
2
so linguagens regulares cujos postos so k
1
e k
2
respec-
tivamente, determine m (em termos de k
1
e k
2
) de modo que o posto
de L
1
L
2
seja menor ou igual a m.
b) Considere a armao: se L
1
L
2
so linguagens regulares ento
o posto de L
1
tem que ser menor ou igual que o posto de L
2
. Esta
armao verdadeira ou falsa? Justique sua resposta com cuidado!
(8) Seja = 0, 1. Seja L
1

a linguagem que consiste das palavras


onde h pelo menos duas ocorrncias de 0 e L
2

a linguagem que
consiste das palavras onde h pelo menos uma ocorrncia de 1.
a) Construa expresses regulares para L
1
e L
2
.
b) A partir destas expresses regulares, construa autmatos nitos no
determinsticos que aceitem L
1
e L
2
.
c) Use os algoritmos deste captulo para criar autmatos nitos no de-
terminsticos que aceitem L
1
L
2
, L
1
L
2
, L

1
e L

2
.
(9) Explique por que o raciocnio da inverso de estados nais e no-nais
para a obteno de um autmato que aceite o complemento da lingua-
gem aceita pelo autmato original pode no funcionar quando estamos
utilizando autmatos no-determinsticos.
(10) Seja M um autmato nito determinstico no alfabeto , com estado
inicial q
1
, conjunto de estados Q e funo de transio . Dizemos que
M tem reincio se existem q Q e tais que
(q, ) = q
1
.
Em outras palavras, no grafo de M h uma seta que aponta para q
1
.
(a) Mostre como possvel construir, a partir de um autmato nito
determinstico M qualquer, um autmato nito determinstico M

sem reincio tal que L(M) = L(M

).
(b) Mostre que, para um autmato nito sem reincio, a ideia original
apresentada neste captulo para a construo do autmato que aceita
78 5. OPERAES COM AUTMATOS FINITOS E LINGUAGENS REGULARES
a estrela de uma linguagem ir funcionar, ao contrrio do que mos-
tramos no caso geral.
(11) Cada uma das linguagens a seguir a interseo de duas linguagens mais
simples. Emcada caso, construa AFDs para as linguagens mais simples e
depois combine-as utilizando a construo que estudamos neste captulo
para obter um AFD para a linguagem dada. Em todos os casos, =
a, b.
(a) Palavras que possuem pelo menos dois as e pelo menos trs bs.
(b) Palavras que possuem um nmero par de as e no mximo trs bs.
(c) Palavras que possuem comprimento mpar e uma quantidade par de
bs.
(12) Cada uma das linguagens a seguir o complemento de uma linguagem
mais simples. Em cada caso, construa um AFD para a linguagem mais
simples e depois transforme-o utilizando a construo que estudamos
neste captulo para obter um AFD para a linguagem dada. Em todos
os casos, = a, b.
(a) Palavras que no contm exatamente dois as.
(b) Palavras que no contm a subpalavra ba.
(c) Palavras que no contm 3 as consecutivos.
CAPTULO 6
Lema do Bombeamento para Linguagens Regulares
O objetivo deste captulo desenvolver um mtodo que nos permita mostrar
que uma dada linguagem no regular. Nossa estratgia ser a seguinte. Em
primeiro lugar, mostraremos que toda linguagem regular satisfaz certa propriedade,
conhecida como propriedade do bombeamento. Assim, para provar que uma dada
linguagem no regular basta constatar que no satisfaz esta propriedade. Isto ,
provaremos que uma linguagem no regular atravs de uma demonstrao por
contradio.
1. Propriedade do Bombeamento
Comeamos por introduzir a terminologia bsica e obter uma primeira aproxi-
mao para a propriedade de bombeamento das linguagens regulares.
EXEMPLO 6.1. Considere o autmato M da gura abaixo.
I
` _
q
1
0

` _
q
2
1

` _
q
3
0

` _
q
4
0

` _
q
5
1

` _ \
q
6
0,1

` _
q
7
0,1
_
FIGURA 1
Entre as palavras aceitas por este autmato temos:
w = 01011001.
Se considerarmos o caminho indexado pela palavra w = 01011001, vemos que in-
clui um ciclo que comea emq
2
e acaba emq
4
. Este ciclo corresponde subpalavra
79
80 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
y = 101 de 01011001. Mais precisamente, podemos decompor w na forma
w = 0
..
x
101
..
y
1001
..
z
= xyz.
Observe que podemos percorrer o ciclo indexado por y vrias vezes e ainda assim
obter uma palavra que aceita por M. Por exemplo, percorrendo o ciclo 3 vezes
obtemos
xy
3
z = 0
..
x
101
..
y
101
..
y
101
..
y
1001
..
z
,
que aceita por M. De fato, podemos at remover a subpalavra y de w e ainda as-
sim continuaremos com uma palavra aceita pelo autmato, neste caso xz = 01001.
Resumindo, vericamos que a palavra w = xyz aceita por M e que admite uma
subpalavra y ,= que pode ser removida ou repetida vrias vezes sem que a pala-
vra resultante que fora de L(M). Sempre que isto acontecer diremos que y uma
subpalavra de w que bombevel em L(M).
Naturalmente, o ponto chave o fato da subpalavra y indexar um ciclo no grafo
de M. Na verdade, esta no a nica subpalavra bombevel de w uma vez que
podemos considerar o ciclo como comeando em qualquer um de seus vrtices.
Assim, se tomarmos o incio do ciclo como sendo q
4
, conclumos que a subpalavra
110 tambm bombevel; isto ,
010(110)
k
01 L(M) para todo k 0.
conveniente estabelecer a noo de bombeabilidade em um contexto mais
geral que o das linguagens regulares. Seja L uma linguagem em um alfabeto e
seja w L. Dizemos que y

uma subpalavra de w bombevel em L se


(1) y ,= ;
(2) existem x, z

tais que w = xyz;


(3) xy
k
z L para todo k 0.
A nica funo da condio (1) excluir o caso trivial y = da denio de
palavra bombevel; j (2) signica que y subpalavra de w. Quanto a (3), o ponto
crucial a observar que, para que y seja bombevel preciso que seja possvel
1. PROPRIEDADE DO BOMBEAMENTO 81
omiti-la ou repeti-la no interior de w tantas vezes quanto desejarmos sem que a
palavra resultante deixe de pertencer a L.
EXEMPLO 6.2. Para entender melhor este ponto, considere o autmato M

da
gura 2.
I
` _
q
1
1

` _ \
q
2
0

` _ \
q
3
0

` _ \
q
4
0

1
.

` _ \
q
5
0

` _ \
q
6
0,1

` _
q
7
0,1
_
FIGURA 2
claro que 0 uma subpalavra de 10 L(M

). Alm disso, podemos repetir


a subpalavra 0 vrias vezes e ainda assim obter uma palavra em L(M

); de fato, 1,
10, 10
2
, 10
3
e 10
4
pertencem a L(M

). Apesar disto, 0 no uma subpalavra de


10 bombevel em L(M

), porque se k 5 ento 10
k
/ L(M

).
Permanecendo com o autmato M

da gura 2, vemos que


L(M

) = 1, 10, 10
2
, 10
3
, 10
4
.
Em particular, no h nenhuma palavra de L(M

) que admita uma subpalavra bom-


bevel. Isto no surpreendente. De fato, se uma linguagem admite uma palavra
que tem uma subpalavra bombevel, ento claro que a linguagem innita.
H dois pontos importantes nesta discusso que voc no deve esquecer:
nenhuma palavra de uma linguagem nita L admite subpalavra bombe-
vel em L;
para que uma subpalavra seja bombevel preciso que possa ser repetida
qualquer nmero de vezes sem que a palavra resultante saia de L.
82 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
2. Lema do Bombeamento
Diante do que acabamos de ver, uma pergunta se impe de maneira natural:
dada uma linguagem L, como achar uma palavra de L que admita uma subpalavra
bombevel?
Em primeiro lugar, esta pergunta s faz sentido se L for innita. Alm disso,
vamos nos limitar, de agora em diante, s linguagens regulares. Sendo assim, va-
mos supor que L

uma linguagem innita que aceita por um autmato


nito determinstico M no alfabeto .
Se conhecemos M o problema fcil de resolver: basta achar um ciclo em M.
Mas suponha que, apesar de conhecer L, sabemos de M apenas que tem n estados.
Ser que esta informao suciente para achar uma palavra de L que tenha uma
subpalavra bombevel em L? A resposta sim, e mais uma vez trata-se apenas de
achar um ciclo em M. S que, como no conhecemos M, no temos uma maneira
de identicar qual este ciclo. Mesmo assim somos capazes de saber que um tal
ciclo tem que existir. Fazemos isto recorrendo a um princpio que aprendemos a
respeitar ainda criana, quando brincamos de dana das cadeiras.
PRINCPIO DA CASA DO POMBO. Se, em um pombal, h mais pombos que
casas, ento dois pombos vo ter que ocupar a mesma casa.
Nossa aplicao deste princpio depende de termos, de um lado uma linguagem
innita, de outro um autmato nito determinstico. De fato, como L innita,
ter palavras de comprimento arbitrariamente grande. Em particular, podemos es-
colher uma palavra w cujo comprimento muito maior que o nmero n de estados
de M. Considere o caminho indexado por w no grafo de M. Como M tem n
estados e w tem muito mais do que n smbolos, este caminho tem que passar duas
vezes por um mesmo estado. Mas um caminho no grafo de M no qual h estados
repetidos tem que conter um ciclo. Entretanto, j sabemos que um ciclo no cami-
nho indexado por w nos permite determinar uma subpalavra bombevel de w. Com
isto provamos a seguinte propriedade do bombeamento das linguagens regulares:
2. LEMA DO BOMBEAMENTO 83
Seja M um autmato nito determinstico. Se w uma palavra
de L(M) de comprimento maior ou igual ao nmero de estados
do autmato, ento w admite uma subpalavra bombevel em
L(M).
O lema do bombeamento, que o principal resultado deste captulo, no passa
de uma verso renada da propriedade do bombeamento enunciada acima.
LEMA DO BOMBEAMENTO. Seja M um autmato nito determinstico com
n estados e seja L a linguagem aceita por M. Se w uma palavra de L com
comprimento maior ou igual a n ento existe uma decomposio de w na forma
w = xyz, onde
(1) y ,= ([y[ > 0);
(2) [xy[ n;
(3) xy
k
z L para todo k 0.
Antes de passar demonstrao, observe que (1) e (3) nos dizem apenas que
y subpalavra de w bombevel em L. A nica novidade a condio (2). Esta
condio tcnica permite simplicar vrias demonstraes de no regularidade,
reduzindo o nmero de casos que precisam ser considerados.
DEMONSTRAO. A estratgia adotada no incio da seo consistiu em con-
siderar o caminho no grafo de M indexado por w. Como observamos no captulo
1, isto formalizado atravs da computao de M determinada por w.
Seja o alfabeto de M. Ento podemos escrever w =
1

n
, onde
1
, . . . ,

n
so elementos de no necessariamente distintos. Seja q
1
o estado inicial de
M. Temos, ento, uma computao
(q
1
, w) = (q
1
,
1

n
) (q
2
,
2

n
) (q
n
,
n
) (q
n+1
, ).
Observe que tambm no estamos supondo que os estados q
1
, . . . , q
n+1
so todos
distintos. De fato, dois destes estados tm que coincidir, porque M s tem n es-
tados. Digamos que q
i
= q
j
, onde 1 i < j n + 1. Qualquer escolha de i e
j que satisfaa as condies acima suciente para provar (1) e (3); mas no (2).
84 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
Para garantir (2) precisamos escolher q
j
como sendo o primeiro estado que coin-
cide com algum estado anterior. Assumindo desde j que i e j so inteiros entre 1
e n + 1, precisamos fazer a seguinte hiptese sobre j:
Hiptese: j o menor inteiro para o qual existe i < j tal que q
i
= q
j
.
Levando tudo isto em conta, podemos reescrever a computao na forma
(q
1
, w) = (q
1
,
1

n
)

(q
i
,
i

n
)

(q
j
,
j

n
)

(q
n
,
n
) (q
n+1
, ).
O ciclo que procuramos est identicado pelo trecho da computao que vai de q
i
a q
j
= q
i
. Isto sugere que devemos tomar
x =
1

i1
, y =
i

j1
e z =
j

n+1
.
Alm disso, como i < j temos que
y =
i

j1
,= ,
de forma que a condio (1) satisfeita. Usando esta notao, a computao ca
(q
1
, w) = (q
1
, xyz)

(q
i
, yz)

(q
j
, z)

(q
n+1
, ).
Note que, como q
i
= q
j
, a palavra y leva a computao do estado q
i
ao estado q
i
.
Desta forma, repetindo ou omitindo y, podemos fazer este trecho repetir-se vrias
vezes no interior da computao sem alterar o estado em que computao termina,
que continuar a ser q
n+1
. Por exemplo, repetindo y uma vez temos a palavra
xy
2
z, que d lugar computao
(q
1
, xy
2
z)

(q
i
, y
2
z)

(q
j
, yz) = (q
i
, yz)

(q
j
, z)

(q
n+1
, ).
Como w = xyz L(M) por hiptese, ento q
n+1
um estado nal de M. Por-
tanto, xy
2
z L(M). De maneira semelhante xy
k
z L(M) para todo k 0, o
que prova (3).
Falta-nos apenas explicar porque (2) vale. Mas, [xy[ = j 1. Entretanto, q
j
o primeiro estado que coincide com algum estado anterior. Isto , q
1
, . . . , q
j1
3. APLICAES DO LEMA DO BOMBEAMENTO 85
so todos estados distintos. Como M tem n estados, isto signica que j 1 n.
Portanto, [xy[ n, o que completa a demonstrao.
Vamos fazer uma pausa e entender exatamente o que acabamos de provar. Se
L regular, L aceita por algum AFD. Podemos no saber exatamente que AFD
esse, mas sabemos que ele existe e ele possuir alguma quantidade positiva n de
estados. O lema acima nos diz que, se tomarmos uma palavra de L com compri-
mento maior ou igual a esta quantidade n, garantidamente existir para ela uma
decomposio satisfazendo as propriedades do lema. Desta forma, o que o lema
nos mostra que, se L regular, ento existe um inteiro positivo n associado a L
(que chamamos de comprimento de bombeamento) tal que, toda palavra w L
onde [w[ n possui uma decomposio satisfazendo as propriedades do lema.
Em resumo, se L regular, L satisfaz o lema do bombeamento acima para algum
valor inteiro positivo de n.
Podemos pensar nesta ltima armao na forma contrapositiva. Se L re-
gular, ento L satisfaz o lema para algum valor inteiro positivo de n. Logo, se L
no satisfaz o lema para nenhum valor de n, ento L no pode ser regular. Ser
a armao nesta forma contrapositiva que utilizaremos para mostrar que algumas
linguagens no so regulares.
OBSERVAO. Antes de passar s aplicaes preciso chamar a ateno para
o fato de que a recproca do lema do bombeamento falsa. Isto , o fato de uma
linguagem L satisfazer o lema do bombeamento para algum inteiro positivo n no
garante que L seja regular. Portanto, no possvel provar regularidade usando
o lema do bombeamento. Voltaremos a discutir este ponto mais adiante em um
exemplo.
3. Aplicaes do Lema do Bombeamento
O maior obstculo aplicao do lema do bombeamento est na interpretao
correta do seu enunciado. Seja M um autmato nito determinstico com n es-
tados. Segundo o lema do bombeamento, dada qualquer palavra w L(M) de
86 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
comprimento maior ou igual a n, existe uma subpalavra y ,= que bombevel
em L(M). Note que o lema no diz que qualquer subpalavra de w bombevel,
mas apenas que existe uma subpalavra de w que bombevel.
EXEMPLO 6.3. Considere a linguagem L no alfabeto 0 formada pelas pa-
lavras de comprimento par. fcil construir um autmato nito com 2 estados que
aceita L, portanto esta uma linguagem regular e n = 2. Vamos escolher uma pa-
lavra de L de comprimento maior que 2; digamos, 0
6
. No verdade que qualquer
subpalavra de 0
6
bombevel em L. Por exemplo, 0 uma subpalavra de 0
6
, j
que temos uma decomposio 0
6
= 0
2
0 0
3
; mas bombeando 0 obtemos
0
2
0
k
0
3
= 0
5+k
,
que no pertence a L se k por par. De fato, para que a subpalavra seja bombevel
em L preciso que tenha comprimento par. Assim, neste exemplo, poderamos
escolher as subpalavras 0
2
, 0
4
ou 0
6
para bombear.
Tudo isto pode parecer bvio. O problema que um nvel adicional de di-
culdade surge nas aplicaes, porque desejamos usar o lema para provar que uma
linguagem no regular. Imagine que temos uma linguagem L e que, por alguma
razo, desconamos que L no regular. Para provar que L de fato no regular
podemos proceder por contradio.
Suponha, ento, por contradio, que L seja aceita por algum autmato nito
determinstico com n estados. De acordo com o lema do bombeamento qualquer
palavra w L de comprimento maior ou igual a n ter que admitir uma subpalavra
bombevel. Assim, para obter uma contradio, basta achar uma palavra satisfa-
zendo esta condio de comprimento em L (o que uma boa notcia!) que no
tenha nenhuma subpalavra bombevel (o que uma m notcia!).
Um ltimo comentrio antes de passar aos exemplos. Neste esboo de de-
monstrao por contradio, supusemos que L aceita por um autmato nito
determinstico com n estados. Entretanto, ao fazer esta hiptese no podemos
especicar um valor numrico para n. De fato, se escolhermos n = 100, tudo o
3. APLICAES DO LEMA DO BOMBEAMENTO 87
que teremos provado que a linguagem no pode ser aceita por um autmato com
100 estados. Mas nada impediria, em princpio, que fosse aceita por um autmato
com 101 estados. Resta-nos aplicar estas consideraes gerais em alguns exemplos
concretos.
EXEMPLO 6.4. Considere a linguagem no alfabeto 0 denida por
L
primos
= 0
p
: p um primo positivo.
A primeira coisa a observar que esta linguagem innita. Isto uma consequn-
cia de teorema provado pelo matemtico grego Euclides por volta de 300 a. C.,
segundo o qual existem innitos nmeros primos.
Em seguida devemos considerar se seria possvel construir um autmato nito
que aceitasse esta linguagem. Para isto, seria necessrio que o autmato pudesse
determinar se um dado nmero p primo ou no. Em outras palavras, o autmato
teria que se certicar que p no divisvel pelos inteiros positivos menores que
p. Como a quantidade de inteiros menores que p aumenta com p, isto requer uma
memria innita; que exatamente o que um autmato nito no tem. Esta
uma boa indicao de que L
primos
no regular. Vamos comprovar nosso palpite
usando o lema do bombeamento.
Suponha, ento, por contradio, que L
primos
aceita por um autmato nito
determinstico com n estados. Precisamos escolher uma palavra com comprimento
maior ou igual a n em L
primos
. Para fazer isto, basta escolher um primo q > n.
A existncia de um tal primo consequncia imediata do teorema de Euclides
mencionado acima. Portanto, 0
q
uma palavra de L
primos
de comprimento maior
que n.
Nestas circunstncias, o lema do bombeamento garante que existe uma de-
composio 0
q
= xyz de modo que y ,= bombevel em L
primos
. Como o
que desejamos contradizer esta armao, temos que mostrar que 0
q
no admite
nenhuma subpalavra bombevel. Neste exemplo, fcil executar esta estratgia
neste grau de generalidade. De fato, uma subpalavra no vazia qualquer de 0
q
tem
que ser da forma 0
j
para algum 0 < j q. Mas x e z tambm so subpalavras
88 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
de 0
q
; de modo que tambm so cadeias de zeros. Tomando, x = 0
i
, teremos que
z = 0
qij
.
Bombeando y, conclumos que
xy
k
z = 0
i
(0
j
)
k
0
qij
= 0
i+jk+(qij)
= 0
q+(k1)j
deve pertencer a L
primos
para todo k 0. Mas isto s pode ocorrer se q +(k 1)j
for um nmero primo para todo k 0. Entretanto, tomando k = q + 1, obtemos
q + (k 1)j = q + qj = q(1 + j)
que no pode ser primo porque tanto q quanto j + 1 so nmeros maiores que 1.
Temos assim uma contradio, o que conrma nossas suspeitas de que L
primos
no
regular.
Note que a condio (2) do lema do bombeamento no foi usada em nenhum
lugar nesta demonstrao. Como frisamos anteriormente, esta uma condio
tcnica que serve para simplicar o tratamento de exemplos mais complicados,
como veremos a seguir.
EXEMPLO 6.5. Nosso prximo exemplo a linguagem
L = a
m
b
m
: m 0
no alfabeto a, b. Tambm neste caso fcil dar um argumento heurstico que
nos leva a desconar que L no pode ser regular. Lembre-se que o autmato l a
entrada da esquerda para a direita. Assim, ele ler toda a sequncia de as antes de
chegar aos bs. Portanto, o autmato tem que lembrar quantos as viu para poder
comparar com o nmero de bs. Mas a memria do autmato nita, e no h
restries sobre a quantidade de as em uma palavra de L.
Para provar que L no regular, vamos recorrer ao lema do bombeamento. Su-
ponha, por contradio, que L aceita por um autmato nito determinstico com
n estados. Em seguida temos que escolher uma palavra w de L com comprimento
maior ou igual a n; digamos que w = a
n
b
n
. Como [w[ = 2n > n, tem que existir
3. APLICAES DO LEMA DO BOMBEAMENTO 89
uma decomposio
a
n
b
n
= xyz
de forma que as condies (1), (2) e (3) do lema do bombeamento sejam satisfeitas.
Mas que decomposies de a
n
b
n
satisfazem estas condies? Dessa vez co-
mearemos analisando (2), segundo a qual [xy[ n. Isto , xy um prexo de
a
n
b
n
de comprimento menor ou igual a n. Como a
n
b
n
comea com n letras a,
conclumos que a o nico smbolo que x e y podem conter. Portanto,
x = a
i
e y = a
j
.
Alm disso, j ,= 0 pela condio (1). J z rene o que sobrou da palavra w, de
modo que
z = a
nij
b
n
.
Observe que no h razo pela qual xy tenha que ser igual a a
n
, de modo que
podem sobrar alguns as em z.
Resta-nos bombear y. Fazendo isto temos que
xy
k
z = a
i
(a
j
)
k
a
nij
b
n
= a
n+(k1)j
b
n
,
um elemento de L para todo k 0. Contudo, a
n+(k1)j
b
n
s pode pertencer a L
se os expoentes de a e b coincidirem. Porm
n + (k 1)j = n para todo k 0
implica que j = 0, contradizendo a condio (1) do lema do bombeamento.
Antes de passar ao prximo exemplo convm considerar a escolha que zemos
para a palavra de comprimento maior que n. No parece haver nada de extraordi-
nrio nesta escolha, mas a verdade que nem toda escolha de w seria satisfatria.
Por exemplo, assumindo que n 2, teramos que [a
n1
b
n1
[ = 2n 2 n.
Entretanto, esta no uma boa escolha para w. A razo que
a
n1
b
n1
= xyz e [xy[ n
90 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
no excluem a possibilidade de y conter um b. Isto nos obrigaria a considerar dois
casos separadamente, a saber, y = a
j
e y = a
j
b, o que complicaria um pouco a de-
monstrao. Diante disto, podemos descrever o papel da condio (2) como sendo
o de restringir os possveis y. O problema que isto no se d automaticamente
mas, como no exemplo acima, depende de uma escolha adequada para w.
Por sorte, na maioria dos casos, muitas escolhas para w so possveis. Neste
exemplo, bastaria tomar w = a
r
b
r
com r n. Entretanto, para algumas lin-
guagens a escolha da palavra requer bastante cuidado, como mostra o prximo
exemplo.
EXEMPLO 6.6. Um argumento heurstico semelhante ao usado para a lingua-
gem anterior sugere que
L = a
m
b
r
: m r
no deve ser regular. Vamos provar isto usando o lema do bombeamento.
Suponhamos, por contradio, que L seja aceita por um autmato nito deter-
minstico com n estados. Neste exemplo, como no anterior, uma escolha possvel
para uma palavra de comprimento maior que n em L a
n
b
n
. Da condio (2) do
lema do bombeamento conclumos que, se a
n
b
n
= xyz, ento
x = a
i
e y = a
j
.
J condio (1) nos garante que j ,= 0. Como z = a
nij
b
n
, obteremos, ao
bombear y, que
xy
k
z = a
i
(a
j
)
k
a
nij
b
n
= a
n+(k1)j
b
n
.
Mas, para que esta palavra esteja em L preciso que
n + (k 1)j n,
donde segue que (k1)j 0. Por sua vez, j ,= 0 fora que k1 0, ou seja, que
k 1. Mas, para que y seja bombevel preciso que xy
k
z L para todo k 0, e
3. APLICAES DO LEMA DO BOMBEAMENTO 91
no apenas k 1. Portanto, temos uma contradio com o lema do bombeamento,
o que prova que L no regular.
Desta vez, estivemos perto de no chegar a lugar nenhum! De fato, uma con-
tradio s obtida porque tomando k = 0,
a
n+(k1)j
b
n
= a
nj
b
n
no pertence a L. Entretanto, neste exemplo, muitas escolhas aparentemente ade-
quadas de w no levariam a nenhuma contradio. Por exemplo, fcil se deixar
sugestionar pelo sinal e escolher w = a
n+1
b
n
. Esta palavra tem comprimento
maior que n e qualquer decomposio da forma a
n+1
b
n
= xyz requer que x e y
s tenham as. Entretanto, tomando
x = a
i
, y = a
j
e z = a
n+1ij
b
n
,
e bombeando y, obtemos
xy
k
z = a
n+1+(k1)j
b
n
que pertence a L desde que 1 (1 k)j. Infelizmente, neste caso isto no
leva a contradio nenhuma, a no ser que j > 1, e no temos como descartar a
possibilidade de j ser exatamente 1.
A prxima linguagem requer uma escolha ainda mais sutil da palavra w.
EXEMPLO 6.7. Considere agora a linguagem
L
uu
= uu : u 0, 1

.
Como nos exemplos anteriores, fcil descrever um argumento heurstico para
justicar porque seria de esperar que L
uu
no fosse regular, e deixaremos isto
como exerccio. Para provar a no regularidade de L
uu
pelo lema do bombeamento,
suporemos que esta linguagem aceita por um autmato nito determinstico com
n estados.
92 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
O principal problema neste caso escolher uma palavra de comprimento maior
que n que nos permita chegar facilmente a uma contradio. A escolha mais bvia
u = 0
n
, que, infelizmente, no leva a nenhuma contradio, como mostra o
exerccio 5. Felizmente uma variao simples desta palavra se mostra adequada, a
saber u = 0
n
1. Neste caso, w = 0
n
10
n
1 tem comprimento 2n+2 > n, e qualquer
decomposio
0
n
10
n
1 = xyz
satisfaz
x = 0
i
, y = 0
j
e z = 0
nij
10
n
1
para algum i 0 e j 1. Bombeando y obtemos
xy
k
z = 0
n+(k1)j
10
n
1
Para saber se esta palavra pertence ou no a L
uu
precisamos descobrir se pode ser
escrita na forma vv para algum v 0, 1

. Igualando
0
n+(k1)j
10
n
1 = vv
conclumos que v tem que terminar em 1. Como s h um outro 1 na palavra,
v = 0
n+(k1)j
1 = 0
n
1.
Isto , n+(k1)j = n. Como j ,= 0, esta igualdade s verdadeira se k = 1. Mas
isto contradiz o lema do bombeamento, segundo o qual xy
k
z deveria pertencer a
L
uu
para todo k 0.
Os exemplos anteriores mostram que a demonstrao pelo lema do bombe-
amento de que uma certa linguagem L no regular obedece a um padro, que
esboamos abaixo:
Suponhamos, por contradio, que L seja aceita por um aut-
mato nito determinstico com n estados.
3. APLICAES DO LEMA DO BOMBEAMENTO 93
Escolha uma palavra w L, de comprimento maior ou
igual a n, de modo que as possibilidades para uma decom-
posio da forma w = xyz sejam bastante limitadas.
Bombeie y e mostre que se xy
k
z L ento uma contradi-
o obtida para pelo menos um valor de k 0.
As principais diculdades em fazer funcionar esta estratgia so as seguintes:
a escolha de uma palavra w adequada;
a identicao correta da condio que a pertinncia xy
k
z L impe
sobre os dados do problema.
No exerccio 7 temos um exemplo de demonstrao em que vrios erros foram
cometidos na aplicao desta estratgia. Resolver este exerccio pode ajud-lo a
evitar os erros mais comuns que surgem na aplicao do lema do bombeamento.
Infelizmente o lema do bombeamento est longe de ser uma panaceia infalvel.
Para ilustrar isto, vamos considerar mais um exemplo.
EXEMPLO 6.8. Seja L a linguagem no alfabeto a, b, c formada pelas pala-
vras da forma a
i
b
j
c
r
para as quais i, j, r 0 e, se i = 1 ento j = r. Mostraremos
que a nica palavra de L que no admite uma subpalavra bombevel .
H dois casos a considerar. No primeiro, i ,= 1 e j e r no so ambos nulos.
Neste caso a subpalavra bombevel y = b se j ,= 0 ou y = c se r ,= 0. O
segundo caso consiste em supor que i = 1, ou que i ,= 1 mas j = r = 0. Desta
vez, podemos tomar y = a como sendo a palavra bombevel.
Como cada palavra de L se encaixa em um destes dois casos, provamos que
toda palavra de L admite uma subpalavra bombevel. Entretanto, esta linguagem
no regular. Assim, constatamos neste exemplo que:
a recproca do lema do bombeamento falsa; isto , no basta que o
resultado do lema do bombeamento seja verdadeiro para que a linguagem
seja regular;
nem sempre o lema do bombeamento basta para mostrar que uma lingua-
gem no regular.
94 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
Como vimos no captulo anterior, a interseo de duas linguagens regulares
tambm uma linguagem regular. Para provar que a linguagem acima no re-
gular, precisamos deste resultado em conjunto com o lema do bombeamento. Seja
L
1
a linguagem acima. Vamos considerar L
2
a linguagem gerada pela expres-
so regular ab

. Logo, L
2
regular. Se L
1
fosse regular, ento, pelo fecha-
mento das linguagens regulares por interseo, L
1
L
2
tambm seria regular. Mas
L
1
L
2
= ab
j
c
j
: j 0, que no regular como pode ser mostrado utilizando-
se o lema do bombeamento de forma anloga ao seu uso no exemplo 6.5. Desta
forma, temos uma contradio e L
1
no regular.
Finalizamos o captulo com um exemplo nal de aplicao do lema do bom-
beamento.
EXEMPLO 6.9. Considere a linguagem L = 0
j
2
: j 0. Vamos mostrar
que ela no regular. Suponha, por contradio, que ela seja aceita por um aut-
mato nito determinstico com n estados. Vamos considerar a palavra w = 0
n
2
.
[w[ = n
2
n, j que n 1. Ento, pelo lema do bombeamento, w admite uma
decomposio w = xyz satisfazendo as propriedades do lema.
Vamos considerar a palavra xy
2
z. Temos [xy
2
z[ = [xyz[ +[y[ = [w[ +[y[ =
n
2
+[y[. Como [y[ > 0, temos que [xy
2
z[ > [w[ = n
2
.
Como [x[ 0, temos que [y[ [xy[. Por outro lado, pela hiptese do lema,
temos [xy[ < n. Assim, [y[ [xy[ n. Isto pode ser usado no seguinte clculo.
[xy
2
z[ = [w[ +[y[ n
2
+ n = n(n + 1) < (n + 1)
2
.
Reunindo os resultados, temos n
2
< [xy
2
z[ < (n + 1)
2
. Isto signica que
o comprimento de [xy
2
z[ est entre dois quadrados consecutivos. Isto , o com-
primento de [xy
2
z[ no um quadrado perfeito, o que nos diz que xy
2
z / L.
Desta forma, temos uma contradio com o lema do bombeamento que arma que
xy
k
z L para todo k 0. Assim, L no uma linguagem regular.
4. EXERCCIOS 95
4. Exerccios
(1) Considere o autmato nito determinstico / no alfabeto 0, 1, com
estado inicial q
1
, conjunto de estados nais q
5
, q
6
, q
8
e funo de tran-
sio dada pela seguinte tabela:
0 1
q
1
q
2
q
6
q
2
q
6
q
3
q
3
q
4
q
2
q
4
q
2
q
5
q
5
q
5
q
5
q
6
q
7
q
4
q
7
q
8
q
4
q
8
q
4
q
5
a) Esboce o diagrama de estados do autmato M.
b) Ache uma subpalavra de 010011101000 que possa ser bombeada na
linguagem L(M).
c) Seja w = 00. Verique que w, w
2
L(M). w bombevel em
L(M)?
(2) Considere a linguagem L no alfabeto 0, 1 dada por
L = 10, 101
2
0, 101
2
01
3
0, 101
2
01
3
01
4
0, . . . .
a) Mostre que L innita mas no admite nenhuma palavra que tenha
uma subpalavra bombevel.
b) Mostre que L no regular.
(3) Seja M um autmato nito determinstico e L a linguagem aceita por M.
Vimos que para encontrar uma palavra de L que contm uma subpalavra
bombevel basta encontrar um caminho no grafo de M que contenha um
ciclo. Suponha agora que no conhecemos M, mas que conhecemos uma
96 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
expresso regular r que denota L. De que forma podemos usar r para
achar uma palavra de L que tem uma subpalavra bombevel?
(4) Ache uma palavra que contenha uma subpalavra bombevel na linguagem
denotada pela expresso regular
(1 1 0) (((1 0)

0) 0).
(5) Considere a linguagem
L
uu
= uu : u 0, 1

.
Mostre que, tomando u = 0
n
, a palavra uu admite uma subpalavra bom-
bevel em L
uu
.
SUGESTO: Tome uma subpalavra de comprimento par.
(6) Mostre que se L uma linguagem regular innita, ento L admite pelos
menos uma palavra que tem uma subpalavra bombevel.
(7) Considere a linguagem
L = 0
2
n
: n 0.
Determine os erros cometidos na demonstrao abaixo de que L no
regular. Corrija estes erros e d uma demonstrao correta da no regula-
ridade de L.
Suponha que L aceita por um autmato nito determinstico.
Seja w = 0
2
n
. Pelo lema do bombeamento podemos decompor
w na forma w = xyz, onde
x = 0
r
, y = 0
s
e z = 0
2
n
rs
.
Bombeando y obtemos
xy
k
z = 0
2
n
+(k1)s
.
4. EXERCCIOS 97
Mas para que esta palavra pertena a L preciso que 2
n
+(k
1)s = 2
n
, o que s possvel se (k 1)s = 0. Como s ,= 0,
conclumos que k s pode ser igual a 1, o que contradiz o lema
do bombeamento.
(8) Verique quais das linguagens dadas abaixo so regulares e quais no
so. Em cada caso justique cuidadosamente sua resposta.
a) 0
i
1
2i
: i 1;
b) (01)
i
: i 1;
c) 1
2n
: n 1;
d) 0
n
1
m
0
n+m
: n, m 1;
e) 1
2
n
: n 0;
f) w : w = w
r
onde w 0, 1;
g) wxw
r
: w, x 0, 1

.
Se w uma palavra em um alfabeto ento w
r
a palavra obtida inver-
tendo-se a ordem das letras em w. Portanto se uma palavra satisfaz w =
w
r
ento um palndromo.
(9) Uma palavra w no alfabeto (, ) balanceada se:
a) em cada prexo de w o nmero de (s no menor que o nmero de )s
e
b) o nmero de (s em w igual ao nmero de )s.
Isto , w balanceada se pode ser obtida a partir de uma expresso arit-
mtica corretamente escrita pela omisso das variveis, nmeros e sm-
bolos das operaes. Mostre que a linguagem L que consiste nas palavras
balanceadas no alfabeto (, ) no regular.
(10) Use o lema do bombeamento para mostrar que, se uma linguagem L con-
tm uma palavra de comprimento maior ou igual a n e aceita por um
autmato nito determinstico com n estados, ento L innita. Use isto
para descrever um algoritmo que permite decidir se a linguagem aceita
por um autmato nito determinstico dado ou no innita.
98 6. LEMA DO BOMBEAMENTO PARA LINGUAGENS REGULARES
(11) Seja M um autmato nito determinstico com n estados e seja L a lin-
guagem aceita por M.
a) Use o lema do bombeamento para mostrar que se L contm uma pa-
lavra de comprimento maior ou igual que 2n, ento ela contm uma
palavra de comprimento menor que 2n.
b) Mostre que L innita se e somente se admite uma palavra de com-
primento maior ou igual a n e menor que 2n.
c) Descreva um algoritmo baseado em (3) que, tendo como entrada um
autmato nito determinstico M, determina se L(M) nita ou in-
nita.
SUGESTO: Para provar (a) use o lema do bombeamento com k = 0.
(12) Seja / um autmato nito determinstico com n estados e um alfabeto
de m smbolos.
a) Use (a) para mostrar que L(/) no vazia se e somente se contm
uma palavra de comprimento menor ou igual a n.
b) Explique como isto pode ser usado para criar um algoritmo que ve-
rica se a linguagem de um autmato nito determinstico ou no
vazia.
c) Suponha que a linguagem aceita por / vazia. Quantas so as pa-
lavras que tero que ser testadas antes que o algoritmo de (b) possa
chegar a esta concluso? O que isto nos diz sobre a ecincia deste
algoritmo?
CAPTULO 7
Gramticas Regulares
Neste captulo, vamos estudar umnovo tipo de estrutura, as gramticas. Vamos
ento apresentar uma classe de gramticas, as chamadas gramticas regulares ou
gramticas lineares direita, que podem ser usadas para descrever a classe de
linguagens que estamos estudando, as linguagens regulares.
O estudo de gramticas neste captulo servir como uma ponte entre o nosso
estudo das linguagens regulares nesta parte das notas e o estudo da classe de lingua-
gens seguinte, que se iniciar no prximo captulo. Esta nova classe de linguagens
a classe das linguagens livres de contexto e ela ser inicialmente denida atravs
de gramticas.
1. Gramticas
Nesta seo, apresentaremos a denio de gramtica com grande nvel de
generalidade. Na prxima seo e no prximo captulo, estudaremos classes espe-
ccas de gramticas.
DEFINIO 7.1. Uma gramtica G uma qudrupla G = (T, V, S, R), onde:
T um conjunto nito de smbolos, chamados de smbolos terminais;
V um conjunto nito de smbolos, chamados de variveis ou smbolos
no-terminais;
S V o smbolo inicial e
R um conjunto nito de regras.
DEFINIO 7.2. Uma regra de uma gramtica (um elemento do conjunto R
da gramtica) tem o formato u v, onde:
u e v so palavras no alfabeto (T V ), isto , u, v (T V )

e
u contm pelo menos um smbolo do conjunto V , isto , u / T

.
99
100 7. GRAMTICAS REGULARES
DEFINIO 7.3. Dada uma gramtica G = (T, V, S, R) e dados x, y (T
V )

, dizemos que y pode ser derivado em um passo a partir de x em G, notao


x y, ou que x y uma derivao em um passo em G, se:
(1) x = x

.u.x

;
(2) y = x

.v.x

E
(3) u v R (u v uma regra de G),
onde u, v, x

, x

(T V )

.
O que a denio acima nos diz que uma derivao em um passo substitui
em x uma subpalavra que ocorre como lado esquerdo de uma regra de G pelo lado
direito desta mesma regra.
OBSERVAO. Repare na diferena de notao. A seta utilizada em
regras da gramtica, enquanto a seta utilizada em derivaes em um passo.
DEFINIO 7.4. Uma derivao x

y uma sequncia de zero ou mais


derivaes em um passo de forma que
x x
1
x
2
. . . y.
DEFINIO 7.5. Denimos a linguagem gerada por uma gramtica G =
(T, V, S, R), denotada por L(G), como sendo o conjunto de palavras
L(G) = w T

: S

w,
isto , o conjunto das palavras formadas somente por smbolos terminais para as
quais existe alguma derivao em G a partir do smbolo inicial S.
OBSERVAO. importante lembrar que, pela denio das regras de uma
gramtica, o lado esquerdo de uma regra nunca contm apenas smbolos terminais.
Isto signica que, quando uma palavra w formada apenas por terminais produzida
por uma derivao, a derivao necessariamente se encerra nesta palavra, j que
nenhuma subpalavra de w ir casar com nenhum lado esquerdo de alguma regra
para mais uma derivao em um passo.
2. GRAMTICAS REGULARES 101
2. Gramticas Regulares
Nesta seo, apresentamos a primeira classe de gramtica com que trabalhare-
mos. So as chamadas gramticas regulares. Elas possuem este nome pois, como
veremos mais adiante, as linguagens que so geradas pelas gramticas regulares
so justamente as linguagens regulares que temos estudado. As gramticas regula-
res tambm so chamadas de gramticas lineares direita.
A denio de qualquer classe de gramtica feita atravs de alguma restrio
nos tipos de regra que podem aparecer no conjunto de regras da gramtica. As
gramticas regulares so as que impe as restries mais fortes s regras que so
permitidas.
DEFINIO 7.6. Uma gramtica regular uma gramtica G = (T, V, S, R)
onde todo elemento de R tem um dos seguintes formatos:
(1) X aY ;
(2) X a OU
(3) X ,
onde X, Y V e a T.
De acordo com os formatos acima, conclumos que do lado esquerdo de qual-
quer regra de uma gramtica regular pode aparecer apenas uma varivel isolada e
do lado direito de qualquer regra de uma gramtica regular pode aparecer ou ou
um terminal isolado ou um nico terminal seguido de uma nica varivel.
EXEMPLO 7.7. A gramtica G = (T, V, S, R) onde T = 0, 1, V =
X, Y, Z, S = X e R = X 0X, X 1Y, Y 0; Y 1X, Y
1Z, Z uma gramtica regular, j que todas as suas regras se encaixam em
um dos trs formatos da denio acima.
Conforme vimos na seo anterior, para determinar que uma palavra w T

pertence a L(G) precisamos construir uma derivao a partir do smbolo inicial S


que termine na palavra w. No exemplo atual, o smbolo inicial a varivel X, logo
102 7. GRAMTICAS REGULARES
a seguinte derivao mostra que 0011 L(G):
X 0X 00X 001Y 0011Z 0011.
No primeiro passo da derivao, casamos a varivel X com o lado esquerdo da
regra X 0X e a substitumos pelo lado direito desta regra. No segundo passo,
casamos a varivel X que ocorre na palavra 0X com o lado esquerdo desta mesma
regra e realizamos novamente a mesma substituio. No terceiro passo, casamos
a varivel X que ocorre na palavra 00X com o lado esquerdo da regra X
1Y e a substitumos pelo lado direito desta regra. No quarto passo, casamos a
varivel Y que ocorre na palavra 001Y com o lado esquerdo da regra Y 1Z e a
substitumos pelo lado direito desta regra. Finalmente, no quinto passo, casamos a
varivel Z que ocorre na palavra 0011Z com o lado esquerdo da regra Z e a
substitumos pelo lado direito desta regra. Como a palavra obtida aps este passo
de derivao (0011) contm apenas terminais, no mais possvel casar nenhuma
subpalavra dela com o lado direito de nenhuma regra e a derivao termina neste
ponto. Assim, 0011 L(G).
Repare que, ao longo da derivao acima, alguma escolhas foram realizadas.
Por exemplo, no primeiro passo, casamos a varivel X com o lado esquerdo da
regra X 0X, mas poderamos igualmente ter casado esta varivel com o lado
esquerdo da regra X 1Y . O mesmo ocorre no segundo passo. Da mesma forma,
outras escolhas de casamento e substituio eram possveis nos demais passos.
Cada conjunto de escolhas vai produzir uma palavra de T

diferente no nal do
processo de derivao. Todas estas derivaes distintas so corretas e todas as
palavras resultantes pertencero a L(G).
Conforme podemos ver no exemplo de derivao acima, a cada passo da de-
rivao a palavra contm uma nica varivel, que sempre ocorre na extremidade
direita da palavra (a nica exceo a palavra aps o ltimo passo da derivao,
que no contm nenhuma varivel). devido a essa caracterstica das derivaes
em gramticas regulares que elas tambm so conhecidas como gramticas linea-
res direita.
3. GRAMTICAS REGULARES E AUTMATOS FINITOS 103
3. Gramticas Regulares e Autmatos Finitos
Nesta seo, vamos mostrar que toda linguagem gerada por uma gramtica
regular uma linguagem regular e que toda linguagem regular pode ser gerada por
uma gramtica regular.
Para mostrar a primeira armativa, vamos mostrar que a linguagem gerada por
uma gramtica regular G aceita por um AFND. Dada uma gramtica regular G =
(T, V, S, R), queremos um mtodo para construir um AFND A = (, Q, q
0
, F, )
tal que L(A) = L(G), isto , a linguagem aceita por A seja a mesma linguagem
gerada por G. Em primeiro lugar, como G gera palavras de T

e A aceita palavras
de

, se quisermos que as linguagens coincidam, precisamos ter = T.


Vamos agora aos outros componentes do AFND. Como vimos na seo ante-
rior, a cada passo da derivao a palavra contm sempre uma nica varivel, com
exceo do ltimo passo da derivao, em que a palavra no contm nenhuma va-
rivel. De maneira semelhante, a cada passo da derivao um nico novo terminal
acrescentado palavra, com a possvel exceo do ltimo passo, que no acres-
centar um novo terminal caso a regra utilizada possua como lado direito. Assim,
podemos considerar os estados do nosso AFND como as variveis que vo apare-
cendo na extremidade direita da palavra a cada passo da derivao, com um estado
extra para representar o ltimo passo em que nenhuma varivel ocorre. O estado
inicial ser a varivel que aparece no incio da derivao, isto , o smbolo inicial
S da gramtica. Como estado nal, usaremos o estado extra que representa justa-
mente o nal da derivao, quando no ocorre mais nenhuma varivel na palavra.
Finalmente, a transio do autmato deve simular cada passo da derivao. Se te-
mos uma palavra em que uma dada varivel X aparece na extremidade direita e,
aps um passo da derivao, foi acrescentado o terminal a palavra e a varivel
que agora aparece na extremidade direita da palavra Y , ento temos que fazer
Y (X, a). Listamos abaixo todos os componentes do AFND A de acordo com
esta ideia:
= T;
Q = V q
f
;
104 7. GRAMTICAS REGULARES
q
0
= S;
F = q
f
;
:
(1) Para cada regra no formato X aY , adiciono Y ao conjunto
(X, a);
(2) Para cada regra no formato X a, adiciono q
f
ao conjunto (X,
a);
(3) Para cada regra no formato X , adiciono q
f
ao conjunto (X,
).
EXEMPLO 7.8. Vamos construir o AFND equivalente gramtica regular do
exemplo acima. O seu grafo descrito abaixo.
I
\ __
X
0

\ __
Z

\ __
Y
1

0
\ __ ` _ q
f
Repare que este autmato possui realmente no-determinismo, ento no podera-
mos utilizar este mtodo, conforme foi apresentado, com AFDs.
Vamos mostrar agora, lado a lado, a derivao que zemos acima para a palavra
0011 e a computao desta palavra no autmato que acabamos de construir.
X 0X (X, 0011) (X, 011)
00X (X, 11)
001Y (Y, 1)
0011Z (Z, )
0011 (q
f
, )
Podemos notar a sincronia entre as variveis que aparecem nas palavras da
derivao e nos estados do autmato na computao.
3. GRAMTICAS REGULARES E AUTMATOS FINITOS 105
Vamos agora ao sentido inverso. Dado um AFD A = (, Q, q
0
, F, ), quero
um mtodo para construir uma gramtica regular G = (T, V, S, R) tal que L(G) =
L(A). Neste caso, pelo mesmo argumento anterior, precisamos ter T = .
Vamos agora aos outros componentes da gramtica regular, seguindo a mesma
ideia do argumento anterior. As variveis da gramtica que vo aparecendo na
extremidade direita da palavra durante os passos de uma derivao devem acompa-
nhar os estados do autmato ao longo de sua computao. Listamos abaixo todos
os componentes da gramtica regular G de acordo com esta ideia:
T = ;
V = Q;
S = q
0
;
R:
(1) Se q

= (q, a), adiciono q aq

ao conjunto R;
(2) Se q F, adiciono q ao conjunto R.
EXEMPLO 7.9. Vamos construir a gramtica regular ao autmato abaixo.
I
\ __
q
1
0

\ __
q
2
1

\ __
q
3
0

\ __ ` _
q
4
0

De acordo com nosso mtodo, temos:


T = = 0, 1;
V = Q = q
1
, q
2
, q
3
, q
4
;
S = q
0
= q
1
;
R = q
1
0q
2
, q
1
1q
3
, q
2
0q
4
, q
2
1q
1
, q
3
0q
2
, q
3

1q
3
, q
4
0q
3
, q
4
1q
2
, q
4
.
106 7. GRAMTICAS REGULARES
Vamos mostrar agora, lado a lado, a computao da palavra w = 01100 no
AFD acima e a derivao desta palavra na gramtica que construmos.
(q
1
, 01100) (q
2
, 1100) q
1
0q
2
(q
1
, 100) 01q
1
(q
3
, 00) 011q
3
(q
2
, 0) 0110q
2
(q
4
, ) 01100q
4
01100
Podemos novamente notar a sincronia entre os estados do autmato na com-
putao e as variveis que aparecem nas palavras da derivao.
Com a concluso deste mtodo para transformar gramticas regulares em aut-
matos nitos e vice-versa, obtemos a equivalncia entre as quatro estruturas estu-
dadas at agora: AFDs, AFNDs, expresses regulares e gramticas regulares.
Isto pode ser resumido no teorema abaixo, que estende um teorema apresentado
anteriormente.
TEOREMA 7.10. As seguintes armaes so equivalentes entre si:
(1) L uma linguagem regular.
(2) L aceita por algum AFD.
(3) L aceita por algum AFND.
(4) L pode ser gerada por uma expresso regular.
(5) L pode ser gerada por uma gramtica regular.
4. Exerccios
(1) Determine gramticas regulares que gerem as linguagens denotadas pelas
seguintes expresses regulares:
a) (0

1) 0;
b) (0

1) (1

0);
c) ((0

1) (1

0))

.
4. EXERCCIOS 107
(2) Ache uma gramtica regular que gere a seguinte linguagem
w 0, 1

: w no contm a sequncia aa.


(3) Ache autmatos nitos que aceitem as linguagens geradas pelas gram-
ticas regulares no alfabeto 0, 1 e smbolo inicial S, com as seguintes
regras:
a) S 011X, S 11S, X 101Y , Y 111.
b) S 0X, X 1101Y , X 11X, Y 11Y , X 1.
(4) Seja L uma linguagem regular no alfabeto . Mostre que L pode
ser gerada por uma gramtica regular cujas regras so dos tipos
X Y ou
X ,
onde X, Y so variveis e um smbolo de .
(5) Considere uma nova classe de gramticas que uma pequena generali-
zao das gramticas regulares. Nesta classe, ao invs de permitirmos
apenas um terminal do lado direito das regras, permitiremos uma palavra
formada por terminais. Formalmente, nesta nova classe de gramticas, as
regras devem ter um dos seguintes formatos:
(a) X wY OU
(b) X w,
onde X, Y V e w T

. Toda gramtica regular umcaso particular de


gramtica desta nova classe. Entretanto, apesar dessa generalidade maior
nos formatos das regras, mostre que, se G uma gramtica desta nova
classe, sempre existe uma gramtica regular G

tal que L(G

) = L(G).
Parte 2
Linguagens Livres de Contexto
CAPTULO 8
Linguagens Livres de Contexto e Gramticas Livres de
Contexto
Neste captulo, continuaremos o nosso estudo das gramticas. Estudaremos
aqui uma segunda classe de gramticas, que fundamental na descrio das lin-
guagens de programao: as gramticas livres de contexto.
1
1. Gramticas e Linguagens Livres de Contexto
J vimos no captulo anterior que uma gramtica descrita pelos seguintes
ingredientes: terminais, variveis, smbolo inicial e regras. claro que, em ltima
anlise, quando pensamos em uma gramtica o que nos vem a cabea so suas
regras; os outros ingredientes so, de certo modo, circunstanciais. Assim, o que
diferencia uma classe de gramticas da outra o tipo de regras que nos permitido
escrever. No caso de gramticas regulares, as regras so extremamente rgidas:
uma varivel s pode ser levada na concatenao de algum terminal com alguma
varivel, sendo que a varivel tem que estar direita do terminal, ou ento levada
em um terminal isolado ou em .
J as gramticas livres de contexto, que estudaremos neste captulo, admitem
regras muito mais exveis. De fato, a nica restrio que esquerda da seta s
pode aparecer uma varivel isolada. Esta uma restrio que j existia nas gram-
ticas regulares. Por outro lado, as restries que existiam nas gramticas regulares
sobre o que poderia ocorrer direita da seta no existem mais nas gramticas livres
de contexto. Talvez voc esteja se perguntando: mas o que mais poderia aparecer
esquerda de uma seta? Voltaremos a esta questo na seo 2, depois de considerar
vrios exemplos de gramticas que so livres de contexto. Mas antes dos exemplos
precisamos dar uma denio formal do que uma gramtica livre de contexto.
1
Agradecemos a David Boechat pelas correes a uma verso anterior deste captulo
111
112 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
DEFINIO 8.1. Seja G uma gramtica com conjunto de terminais T, con-
junto de variveis V e smbolo inicial S V . Dizemos que G livre de contexto
se todas as suas regras so do tipo X w, onde X V e w (T V )

.
Observe que as regras de uma gramtica regular se encaixam neste formato.
Portanto, toda gramtica regular livre de contexto. Por outro lado, evidente que
nem toda gramtica livre de contexto regular.
EXEMPLO 8.2. Um exemplo simples dado pela gramtica G
1
com terminais
T = 0, 1, variveis V = S, smbolo inicial S e conjunto de regras
S 0S1, S .
Como do lado esquerdo de cada seta s h uma varivel, G
1
livre de contexto.
Contudo, G
1
no regular porque S 0S1 tem um terminal direita de uma
varivel.
EXEMPLO 8.3. Outro exemplo simples a gramtica G
2
com terminais T =
0, 1, variveis V = S, X, smbolo inicial S e conjunto de regras
S X1X, X 0X, X .
Mais uma vez, apesar de ser claramente livre de contexto, esta gramtica no
regular, devido regra S X1X.
Os dois exemplos construdos acima esto relacionados a linguagens que so
velhas conhecidas nossas. Entretanto, para constatar isto precisamos entender
como possvel construir uma linguagem a partir de uma gramtica livre de con-
texto. Isto se faz de maneira anloga ao que j ocorria com gramticas regulares.
DEFINIO 8.4. Seja G uma gramtica livre de contexto com terminais T,
variveis V , smbolo inicial S e conjunto R de regras, e sejam w, w

(T V )

.
Dizemos que w

pode ser derivada em um passo a partir de w em G, notao


w
G
w

, se w

pode ser obtida a partir de w substituindo-se uma varivel que


aparece em w pelo lado direito de alguma regra da gramtica ( que possua esta
1. GRAMTICAS E LINGUAGENS LIVRES DE CONTEXTO 113
mesma varivel no seu lado esquerdo. Em outras palavras, para que w
G
w

preciso que:
(1) exista uma decomposio da forma w = uXv, onde u, v (T V )

e
X V ;
(2) exista uma regra X em R E
(3) w

= uv.
Como j estamos acostumados a fazer, dispensaremos o Gsubscrito na notao
acima quando no houver dvidas quanto gramtica que est sendo considerada
(isto , quase sempre!).
Como j ocorria com as gramticas regulares, geramos palavras a partir de uma
gramtica livre de contexto pelo encadeamento de vrias derivaes em um passo.
DEFINIO 8.5. Dizemos que w

pode ser derivada a partir de w em G se


existem palavras w
1
, . . . , w
n1
(T V )

tais que
w = w
0
w
1
w
n1
w
n
= w

Chamamos a isto uma derivao de w

a partir de w em G e escrevemos w

.
OBSERVAO. conveniente adotar a conveno de que w pode ser derivada
dela prpria em zero passos, de modo que faz sentido escrever w

w.
DEFINIO 8.6. O conjunto de todas as palavras de T

que podem ser de-


rivadas a partir do smbolo inicial S na gramtica G a linguagem gerada por
G. Denotando por L(G) a linguagem gerada por G e usando a notao denida
acima, temos que
L(G) = w T

: existe uma derivao S

w em G.
Nos captulos anteriores, estivemos estudando as linguagens regulares. Agora,
com as gramticas livres de contexto, podemos denir uma nova classes de lingua-
gens: as linguagens livres de contexto.
114 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
DEFINIO 8.7. Dizemos que L uma linguagem livre de contexto se existe
uma gramtica livre de contexto Gtal que L = L(G), isto , se possvel construir
uma gramtica livre de contexto que gere a linguagem L.
Vejamos analisar agora alguns exemplos concretos.
EXEMPLO 8.8. Seja G
1
a gramtica denida acima. Temos que
S 0S1 0
2
S1
2
0
2
1
2
.
Note que S 0S1 e 0S1 0
2
S1
2
so derivaes de um passo em G
1
porque,
em ambos os casos a palavra direita de foi obtida da que est esquerda
trocando-se S por 0S1. Isto permitido porque S 0S1 uma regra de G
1
. J
0
2
S1
2
0
2
1
2
foi obtida trocando-se S por . Podemos fazer isto por que S
tambm uma regra de (
1
. Toda esta cadeia de derivaes pode ser abreviada
como
S

0
2
1
2
.
Por outro lado, 0
2
S1
2
0
2
1
3
no uma derivao legtima em G
1
porque neste
caso a regra usada foi S 1, que no pertence a G
1
.
Do que zemos acima, segue que 0
2
1
2
L(G
1
). Mas podemos ser muito
mais ambiciosos e tentar determinar todas as palavras de L(G
1
). Para comear,
note que se S
n
w em G
1
e w / T

, ento w = 0
n
S1
n
. Para provar isto, basta
usar induo em n. Por outro lado, como a nica regra de G
1
que permite eliminar
a varivel S S , conclumos que toda palavra derivada a partir de S em (
1

da forma 0
n
1
n
, para algum inteiro n 0. Assim,
L(G
1
) = 0
n
1
n
: n 0.
J vimos no captulo 6 que esta linguagem no regular. Em particular, no
existe nenhuma gramtica regular que gere L(G
1
).
Desta forma, mostramos que toda linguagem regular uma linguagem livre
de contexto, mas nem toda linguagem livre de contexto uma linguagem regular.
Formalizamos isto no teorema abaixo.
1. GRAMTICAS E LINGUAGENS LIVRES DE CONTEXTO 115
TEOREMA 8.9. A classe das linguagens regulares um subconjunto prprio
da classe das linguagens livres de contexto.
EXEMPLO 8.10. Passando gramtica G
2
, temos a derivao
S X1X 0X1X 0
2
X1X 0
2
X1 0
2
1.
Note que, na derivao acima, algumas ocorrncias da varivel X foram sublinha-
das. Fizemos isto para indicar qual instncia da varivel X foi aplicada a regra
da gramtica que leva ao passo seguinte da derivao. Assim, no segundo passo da
derivao, aplicamos a regra X 0X ao X mais esquerda. Com isto, este X
foi trocado por 0X, mas nada foi feito ao segundo X. Coisa semelhante ocorreu
no passo seguinte. Alm disso, a regra X 0X nunca foi aplicada ao segundo
X.
Fica claro a partir deste exemplo que, a cada passo de uma derivao, apenas
uma ocorrncia de uma varivel pode ser substituda pelo lado direito de uma seta.
Alm disso, cada ocorrncia de uma varivel tratada independentemente da outra.
Sempre que for conveniente, sublinharemos a instncia da varivel qual a
regra est sendo aplicada em um determinado passo da derivao.
Vamos tentar, tambm neste caso, determinar todas as palavras que podem ser
derivadas a partir de S em G
2
. Suponhamos que S

w em G
2
. fcil ver que
em w h um nico 1 e pode haver, no mximo, duas ocorrncias de X, uma de
cada lado do 1. Assim, w pode ser de uma das seguintes formas
0
n
X10
m
X ou 0
n
10
m
X ou 0
n
X10
m
ou 0
n
10
m
Portanto, se w T

e S

w, ento w = 0
n
10
m
, para inteiros m, n 0.
Conclumos que
L(G
2
) = 0
n
10
m
: n, m 0.
Mas esta , na verdade, uma linguagem regular, que pode ser descrita na forma
L(G
2
) = 0

10

. Temos assim um exemplo de gramtica livre de contexto que no


regular mas que gera uma linguagem regular.
116 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
Recapitulando, toda linguagem regular livre de contexto. Isto ocorre porque
uma linguagem regular sempre pode ser gerada por uma gramtica regular. Mas,
como j vimos, toda gramtica regular tambm livre de contexto. Por outro lado,
nem toda linguagem livre de contexto regular. Por exemplo, vimos que a lingua-
gem 0
n
1
n
: n 0 no regular. No entanto, ela gerada pela gramtica G
1
e,
portanto, livre de contexto. Na seo 3, veremos mais exemplos de linguagens
livres de contexto, incluindo vrias que no so regulares.
Antes que voc comece a alimentar falsas esperanas, bom esclarecer que
existem linguagens que no so livres de contexto. Para mostrar, diretamente da
denio, que uma linguagem L no livre de contexto seria necessrio provar
que no existe nenhuma gramtica livre de contexto que gere L, o que no parece
possvel. Como no caso de linguagens regulares, a estratgia mais prtica consiste
em mostrar que h uma propriedade que satisfeita por todas as linguagens livres
de contexto, mas que no satisfeita por L. Veremos como fazer isto mais adiante
nestas notas.
2. Gramticas que No So Livres de Contexto
hora de voltar questo de como seria uma gramtica que no livre de
contexto.
Lembre-se que o que caracteriza as gramticas livres de contexto o fato de
que todas as suas regras tm apenas uma varivel (e nenhum terminal) do lado
esquerdo da seta. Na prtica, isto signica que sempre que X aparece em uma
palavra, ele pode ser trocado por w, desde que X w seja uma regra da gramtica.
Para uma gramtica no ser livre de contexto basta que, do lado esquerdo da
seta de alguma de suas regras, aparea algo mais complicado que uma varivel
isolada.
3. MAIS EXEMPLOS 117
EXEMPLO 8.11. Um exemplo simples, mas importante, a gramtica com
terminais a, b, c, variveis S, X, Y , smbolo inicial S e regras
S abc S aXbc
Xb bX Xc Y bc
2
bY Y b aY a
2
aY a
2
X.
Considere uma derivao nesta gramtica que comece comS aXbc. Queremos,
no prximo passo, substituir o X por alguma coisa. Mas, apesar de haver duas
regras com X esquerda da seta na gramtica, s uma delas pode ser aplicada.
Isto ocorre porque na palavra aXbc o X vem seguido de b, e a nica regra em que
X aparece neste contexto Xb bX. Aplicando esta regra, obtemos
S aXbc abXc abY bc
2
.
Continuando desta forma, podemos derivar a palavra a
2
b
2
c
2
nesta gramtica. A
derivao completa a seguinte:
S aXbc abXc abY bc
2
aY b
2
c
2
a
2
b
2
c
2
.
De maneira semelhante, podemos derivar qualquer palavra da forma a
n
b
n
c
n
, com
n 1. De fato, pode-se mostrar que o conjunto das palavras desta forma constitui
toda a linguagem gerada pela gramtica dada acima.
Mostraremos mais adiante nestas notas que esta linguagemno pode ser gerada
por nenhuma gramtica livre de contexto.
3. Mais Exemplos
Nesta seo, veremos mais exemplos de linguagens e gramticas livres de con-
texto.
EXEMPLO 8.12. Comeamos com uma gramtica que gera frmulas que se-
jam expresses aritmticas envolvendo apenas os operadores soma e multiplicao,
118 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
alm dos parnteses. Isto , expresses da forma
(3.1) ((x + y) x) (z + w) y),
onde x, y, z e w so variveis (no sentido em que o termo usado em lgebra).
Note que, para saber se uma dada expresso legtima, no precisamos co-
nhecer as variveis que nela aparecem, mas apenas sua localizao em relao aos
operadores. Assim, podemos construir uma gramtica mais simples, em que as
posies ocupadas por variveis em uma expresso so todas marcadas com um
mesmo smbolo. Este smbolo chamado de identicador, e abreviado id. Por-
tanto, o identicador id ser um terminal da gramtica que vamos construir, junta-
mente com os operadores + e e os parnteses ( e ). Substituindo as variveis da
expresso (3.1) pelo identicador, obtemos
(3.2) ((id + id) id) (id + id) id).
Em resumo, queremos construir uma gramtica livre de contexto G
exp
, com
conjunto terminais +, , (, ), id, que gere todas as expresses aritmticas legti-
mas nos operadores + e . Note que G
exp
deve gerar todas as expresses legtimas,
e apenas estas. Isto , queremos gerar expresses como (3.2), mas no como
(+id)id .
Na prtica, estas expresses aritmticas so produzidas recursivamente, so-
mando ou multiplicando expresses mais simples, sem esquecer de pr os parn-
teses no devido lugar. Para obter a gramtica, podemos criar uma varivel E (de
expresso), e introduzir as seguintes regras para combinao de expresses:
E E + E
E E E
E (E).
3. MAIS EXEMPLOS 119
Finalmente, para eliminar E e fazer surgir o identicador, adicionamos a regra
E id.
Vejamos como derivar a expresso id + id id nesta gramtica. Para deixar
claro o que est sendo feito em cada passo, vamos utilizar a conveno de sublinhar
a instncia da varivel qual uma regra est sendo aplicada:
(3.3) E E + E E + E E id + E E id + id E id + id id.
Construmos esta derivao aplicando em cada passo uma regra da gramtica
a uma varivel escolhida sem nenhum critrio especial. Entretanto, podemos ser
mais sistemticos. Por exemplo, poderamos, em cada passo da derivao, aplicar
uma regra sempre varivel que est mais esquerda da palavra. Usando esta
estratgia, chegamos a uma derivao de id + id id diferente da que foi obtida
acima:
E E + E id + E id + E E id + id E id + id id.
Neste caso, no h necessidade de sublinhar a varivel qual a regra est sendo
aplicada j que, em cada passo, escolhemos sempre a que est mais esquerda da
palavra.
As derivaes deste tipo so muito importantes no desenvolvimento da teoria
e em suas aplicaes. Por isso conveniente ter um nome especial para elas.
DEFINIO 8.13. Seja G uma gramtica livre de contexto e w L(G). Uma
derivao mais esquerda de w em G aquela na qual, em cada passo, a varivel
qual a regra aplicada a que est mais esquerda da palavra. Analogamente,
podemos denir derivao mais direita em uma gramtica livre de contexto.
Uma gramtica como G
exp
usada em uma linguagem de programao com
duas nalidades diferentes. Em primeiro lugar, para vericar se as expresses arit-
mticas de um programa esto bem construdas; em segundo, para informar ao
computador qual a interpretao correta destas expresses. Por exemplo, o com-
putador tem que ser informado sobre a precedncia correta entre os operadores
120 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
soma e multiplicao. Isto necessrio para que, na ausncia de parnteses, o
computador saiba que deve efetuar primeiro as multiplicaes e s depois as so-
mas. Do contrrio, confrontado com id + id id, ele no saberia como efetuar o
clculo da forma correta. Voltaremos a esta questo em mais detalhes mais adiante
nestas notas.
Analisando G
exp
com cuidado, vericamos que permite derivar (id). Apesar
do uso dos parnteses ser desnecessrio neste caso, no se trata de uma expresso
aritmtica ilegtima. Entretanto, no difcil resolver este problema introduzindo
uma nova varivel, como sugerido no exerccio 5.
EXEMPLO 8.14. O segundo exemplo que desejamos considerar o de uma
gramtica que gere a linguagem formada pelos palndromos no alfabeto 0, 1.
Lembre-se que um palndromo uma palavra cujo reexo igual a ela prpria.
Isto , w um palndromo se e somente se w
R
= w. Precisamos de dois fatos
sobre palndromos que so consequncia imediata da denio. Digamos que w
(0 1)

e que 0 ou 1; ento:
(1) w palndromo se e somente se w comea e termina com o mesmo sm-
bolo;
(2) w palndromo se e somente se w tambm palndromo.
Isto sugere que os palndromos podem ser construdos recursivamente onde, a cada
passo, ladeamos um palndromo j construdo por duas letras iguais.
Com isto, podemos passar construo da gramtica. Vamos cham-la de
G
pal
: ter terminais 0, 1 e apenas uma varivel S, que far o papel de smbolo
inicial. As observaes acima sugerem as seguintes regras
S 0S0
S 1S1
Estas regras ainda no bastam, porque apenas com elas no possvel eliminar S
da palavra. Para fazer isto precisamos de, pelo menos, mais uma regra. A primeira
4. PROPRIEDADES DE FECHAMENTO DAS LINGUAGENS LIVRES DE CONTEXTO 121
ideia seria introduzir S . Entretanto, se zermos isto s estaremos gerando
palndromos que no tm um smbolo no meio; isto , os que tm comprimento
par. Para gerar os de comprimento mpar, necessrio tambm introduzir regras
que permitam substituir S por um terminal; isto ,
S 0 e S 1.
Podemos resumir o que zemos usando a seguinte notao. Suponha que G
uma gramtica livre de contexto que tem vrias regras
X w
1
, . . . , X w
k
todas com uma mesma varivel do lado esquerdo. Neste caso, escrevemos abrevi-
adamente
X w
1
[w
2
. . . [w
k
,
onde a barra vertical tem o valor de ou. Como G
pal
tem uma nica varivel,
podemos escrever todas as suas regras na forma
S 0S0 [ 1S1 [ [ 0 [ 1.
De quebra, obtivemos a gramtica G
+
pal
que gera os palndromos de compri-
mento par. A nica diferena entre as duas gramticas que o conjunto de regras
de G
+
pal
ainda mais simples:
S 0S0 [ 1S1 [ .
4. Propriedades de Fechamento das Linguagens Livres de Contexto
Nesta seo, vamos discutir as propriedades de fechamento das linguagens li-
vres de contexto com relao s seis operaes de linguagens, de forma anloga ao
que zemos para as linguagens regulares.
Novamente, para o caso das operaes de unio, concatenao, interseo e
diferena, consideramos apenas pares de linguagens denidas no mesmo alfabeto.
(1) Unio:
122 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
Queremos mostrar que as linguagens livres de contexto so fechadas
com relao operao de unio. Para isso, precisamos mostrar que a
unio de duas linguagens livres de contexto quaisquer tambm uma
linguagem livre de contexto.
At o momento, conhecemos apenas uma maneira de descrever lin-
guagens livres de contexto: as gramticas livres de contexto. Desta forma,
procedemos da seguinte maneira. Se L
1
e L
2
so linguagens livres de
contexto, ento existem gramticas livres de contexto G
1
= (T, V
1
, S
1
,
R
1
) e G
2
= (T, V
2
, S
2
, R
2
) que geram L
1
e L
2
, respectivamente (esta-
mos assumindo que V
1
V
2
= ). Queremos construir uma gramtica
livre de contexto G

= (T, V

, S

, R

que gere L
1
L
2
. A ideia para
a construo desta gramtica muito semelhante a ideia que utilizamos
anteriormente para a construo de um AFND que aceita a unio das lin-
guagens aceitas por dois AFNDs dados.
Como G

deve gerar uma palavra que pertena a L


1
ou a L
2
, o con-
junto de regras de G

precisa conter R
1
e R
2
. Mas queremos tambm
que, depois do primeiro passo, a derivao s possa proceder usando re-
gras de uma das duas gramticas. Fazemos isto criando um novo smbolo
inicial S e duas novas regras
S S
1
e S S
2
.
Assim, o primeiro passo da derivao fora uma escolha entre S
1
e S
2
.
Esta escolha determina de maneira inequvoca se a palavra a ser gerada
estar em L
1
ou L
2
. Em outras palavras, depois do primeiro passo a deri-
vao ca obrigatoriamente restrita s regras de uma das duas gramticas.
Mais precisamente, G

ca denida pelos seguintes ingredientes:


V

= V
1
V
2
S;
S

= S e
R

= R
1
R
2
S S
1
, S S
2
.
4. PROPRIEDADES DE FECHAMENTO DAS LINGUAGENS LIVRES DE CONTEXTO 123
Desta forma, como a linguagem L
1
L
2
gerada por uma gramtica livre
de contexto, ela tambm uma linguagem livre de contexto.
(2) Concatenao:
Podemos proceder de maneira semelhante ao que zemos no caso
anterior da unio para criar uma gramtica G

= (T, V

, S

, R

) que gere
a concatenao L
1
L
2
. Neste caso, as palavras que queremos derivar so
construdas escrevendo uma palavra de L
1
seguida de uma palavra de L
2
.
Como as palavras de L
1
so geradas a partir de S
1
e as de L
2
a partir de
S
2
, basta acrescentar um novo smbolo inicial S e S S
1
S
2
s regras
de R
1
e R
2
. Os ingredientes da gramtica G

so:
V

= V
1
V
2
S;
S

= S e
R

= R
1
R
2
S S
1
S
2
.
(3) Estrela de Kleene:
Novamente, a construo de uma gramtica G

= (T, V

, S

, R

)
que aceite L

1
semelhante ao que zemos nos casos anteriores. A ope-
rao estrela nos permite concatenar L
1
com ela prpria quantas vezes
desejarmos. Como as palavras de L
1
so geradas a partir de S
1
, basta
acrescentar um novo smbolo inicial S e as regras S S
1
S e S ,
que nos permitem criar uma sequncia de quantas cpias quisermos do
smbolo S
1
, a R
1
e R
2
. Os ingredientes da gramtica G

so:
V

= V
1
V
2
S;
S

= S e
R

= R
1
R
2
S S
1
S, S .
(4) Interseo:
No caso das linguagens regulares, vimos que elas so fechadas com
relao a todas as seis operaes de linguagens. Vamos comear agora,
na operao de interseo, a mostrar que isto no verdade para as lin-
guagens livres de contexto. De fato, as linguagens livres de contexto so
124 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
fechadas apenas para as operaes que j analisamos acima: unio, con-
catenao e estrela. Elas no so fechadas para as operaes de interse-
o, complemento e diferena. Isso signica que dadas duas linguagens
livres de contexto, talvez a interseo delas ou a diferena delas ou ambas
no sejamlivres de contexto. Da mesma forma, dada uma linguagemlivre
de contexto, pode ser que o seu complemento no seja livre de contexto.
Para mostrar que as linguagens livres de contexto no so fechadas
por interseo, basta exibirmos um exemplo de duas linguagens L
1
e L
2
tais que L
1
e L
2
so livres de contexto, mas L
1
L
2
no . isto que
faremos a seguir.
Sejam
L
1
= a
n
b
n
c
m
: m, n 0 e
L
2
= a
m
b
n
c
n
: m, n 0.
Estas duas linguagens so livres de contexto. Uma gramtica livre de
contexto G = (T, V, S, R) que gera L
1
a gramtica com T = a, b, c,
V = X, Y, Z, S = X e R = X Y Z, Y aY b, Y , Z
cZ, Z . Uma gramtica livre de contexto anlogo gera L
2
. Temos
que a interseo destas duas linguagens
L
1
L
2
= a
n
b
n
c
n
: n 0.
Conforme j mencionamos anteriormente, esta linguagem no livre de
contexto. Isto ser provado mais adiante nestas notas. Assim, as lingua-
gens livres de contexto no so fechadas com relao interseo.
(5) Complemento:
Vamos mostrar que as linguagens livres de contexto tambm no so
fechadas com relao ao complemento.
Comeamos relembrando uma igualdade entre conjuntos conhecida
como Lei de De Morgan:
L
1
L
2
= L
1
L
2
.
4. PROPRIEDADES DE FECHAMENTO DAS LINGUAGENS LIVRES DE CONTEXTO 125
Sejam L
1
e L
2
linguagens livres de contexto. Suponha, por contra-
dio, que as linguagens livres de contexto so fechadas com relao ao
complemento. Ento, L
1
e L
2
tambm so linguagens livres de contexto.
Como j vimos anteriormente, as linguagens livres de contexto so fe-
chadas com relao unio, logo L
1
L
2
tambm livre de contexto.
Finalmente, como estamos supondo que as linguagens livres de contexto
so fechadas com relao ao complemento, L
1
L
2
tambm livre de
contexto. Mas isto igual a L
1
L
2
, o que signica que L
1
L
2
tambm
livre de contexto. Logo, se as linguagens livres de contexto so fecha-
das com relao ao complemento, ento elas so fechadas com relao
interseo. Mas isto uma contradio com o que mostramos acima
no caso da interseo. Portanto, as linguagens livres de contexto no so
fechadas com relao ao complemento.
(6) Diferena:
Vamos mostrar que as linguagens livres de contexto tambm no so
fechadas com relao diferena.
Seja L uma linguagem livre de contexto. Suponha, por contradio,
que as linguagens livres de contexto so fechadas com relao dife-
rena. Temos que L =

L.

uma linguagem regular (construa


um AFD que aceita

). Logo,

livre de contexto. Como estamos


supondo que as linguagens livres de contexto so fechadas com relao
diferena, ento

L tambm livre de contexto. Mas isto igual a L


pela igualdade anterior, o que signica que L tambm livre de contexto.
Logo, se as linguagens livres de contexto so fechadas com relao di-
ferena, ento elas so fechadas com relao ao complemento. Mas isto
uma contradio com o que mostramos acima no caso do complemento.
Portanto, as linguagens livres de contexto no so fechadas com relao
diferena.
Vamos agora mostrar um exemplo em que utilizamos as construes acima
para combinar gramticas com as operaes de unio, concatenao e estrela.
126 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
EXEMPLO 8.15. Considere a linguagem
L
in
= a
i
b
j
c
k
: i, j, k 0 e i = j ou j = k.
Podemos decomp-la, facilmente, como unio de outras duas, a saber
L
1
= a
i
b
j
c
k
: i, j, k 0 e i = j, e
L
2
= a
i
b
j
c
k
: i, j, k 0 e j = k.
Alm disso, L
1
= L
3
c

e L
2
= a

L
4
, onde
L
3
= a
i
b
j
: i, j 0 e i = j, e L
4
= b
j
c
k
: j, k 0 e j = k.
Chegados a este ponto, j conseguimos obter uma decomposio de L
in
em
linguagens para as quais conhecemos gramticas. De fato, a

e c

so linguagens
regulares para as quais existem gramticas regulares bastante simples. Por outro
lado, a gramtica G
1
denida na seo 1 gera uma linguagem anloga a L
3
e L
4
.
Resumimos os ingredientes destas vrias gramticas na tabela abaixo:
Linguagem L
3
L
4
a

Terminais 0, 1 0, 1 0, 1 0, 1
Variveis S
1
S
2
S
3
S
4
Smbolo inicial S
1
S
2
S
3
S
4
Regras S
1
aS
1
b S
2
bS
2
c S
3
aS
3
S
4
cS
4
S
1
S
2
S
4
S
3

Seguindo a receita dada acima para a gramtica de uma concatenao, obte-
mos:
5. EXERCCIOS 127
Linguagem L
3
c

L
4
Terminais 0, 1 0, 1
Variveis S

, S
1
, S
4
S

, S
2
, S
3

Smbolo inicial S

Regras S

S
1
S
4
S

S
2
S
3
S
1
aS
1
b S
2
bS
2
c
S
1
S
2

S
4
cS
4
S
3
aS
3
S
3
S
4

Resta-nos, apenas, proceder unio destas gramticas, o que nos d uma gra-
mtica livre de contexto para L
in
, com os seguintes ingredientes:
Terminais: 0, 1;
Variveis: S, S

, S

, S
1
, S
2
, S
3
, S
4
;
Smbolo inicial: S;
Regras: S S

, S S

, S

S
1
S
4
, S

S
2
S
3
, S
1
aS
1
b, S
2

bS
2
c, S
1
, S
2
, S
4
cS
4
, S
3
aS
3
, S
3
, S
4
.
5. Exerccios
(1) Considere a gramtica G com variveis S, A, terminais a, b, smbolo ini-
cial S e regras
S AA
A AAA[ a [ bA[ Ab
a) Quais palavras de L(G) podem ser produzidas com derivaes de at
4 passos?
b) D pelo menos 4 derivaes distintas da palavra babbab.
c) Para m, n, p > 0 quaisquer, descreva uma derivao em G da palavra
b
m
ab
n
ab
p
.
128 8. LINGUAGENS LIVRES DE CONTEXTO E GRAMTICAS LIVRES DE CONTEXTO
(2) Determine gramticas livres de contexto que gerem as seguintes lingua-
gens:
a) (01)
i
: i 1;
b) 1
2n
: n 1;
c) 0
i
1
2i
: i 1;
d) w 0, 1

: w em que o nmero de 0s e 1s o mesmo;


e) wcw
r
: w 0, 1

;
f) w : w = w
r
onde w 0, 1.
(3) Considere o alfabeto = 0, 1, (, ), , , . Construa uma gramtica
livre de contexto que gere todas as palavras de

que so expresses
regulares em 0, 1.
(4) A gramtica livre de contexto G cujas regras so
S 0S1 [ 0S0 [ 1S0 [ 1S1 [
no regular. Entretanto, L(G) uma linguagem regular. Ache uma
gramtica regular G

que gere L(G).


(5) Modique a gramtica G
exp
(introduzindo novas variveis) de modo que
no seja mais possvel derivar a expresso (id) nesta gramtica.
(6) Seja G uma gramtica livre de contexto com conjunto de terminais T,
conjunto de variveis V e smbolo inicial S. Dizemos que G linear se
todas as suas regras so da forma
X Y ou X ,
onde X e Y so variveis e , T

. Isto , pode haver no mximo


uma varivel do lado direito de cada regra de G. Uma linguagem linear
se pode ser gerada por alguma gramtica linear. Mostre que se L linear
ento L pode ser gerada por uma gramtica cujas regras so de um dos 3
tipos seguintes:
X Y ou X Y ou X
5. EXERCCIOS 129
onde X uma varivel e um terminal ou = .
(7) Seja Guma gramtica livre de contexto que gere uma linguagemL. Mos-
tre como construir, a partir de G, uma gramtica livre de contexto que
gera L

.
SUGESTO: S SS.
(8) Seja L uma linguagem livre de contexto. Mostre que L
r
= w
r
: w L
tambm livre de contexto.
CAPTULO 9
rvores de Anlise Sinttica
No captulo anterior, vimos como gerar palavras a partir de uma gramtica
livre de contexto por derivao. Neste captulo, consideramos outra maneira pela
qual uma gramtica livre de contexto gera palavras: as rvores de anlise sinttica
ou rvores gramaticais. Esta noo tem origem na necessidade de diagramar a
anlise sinttica de uma sentena em uma linguagem natural, como o portugus ou
o javans.
1. Anlise Sinttica e Linguagens Naturais
At agora, as gramticas formais que introduzimos tm servido basicamente
para gerar palavras que pertencem a uma dada linguagem. J a gramtica da lngua
portuguesa no serve apenas para gerar frases com sintaxe correta, mas tambm
para analisar a estrutura de uma frase e determinar o seu signicado. A isso se
chama anlise sinttica. Descobrir quem fez o qu, e a quem, uma questo de
identicar sujeito, verbo e objetos de uma frase. Entretanto, a noo de derivao
no uma ferramenta adequada para realizar a anlise sinttica em uma gramtica;
para isto precisamos das rvores de anlise sinttica ou rvores gramaticais.
EXEMPLO 9.1. Vejamos como usar uma rvore para diagramar a anlise sin-
ttica da frase
Pedro ligou o computador.
O sujeito da sentena Pedro e o predicado ligou o computador. Por sua vez o
predicado pode ser decomposto no verbo ligou seguido do objeto direto, o compu-
tador. Esta anlise da frase pode ser diagramada em uma rvore como a da gura
abaixo.
131
132 9. RVORES DE ANLISE SINTTICA
sentena)

sujeito) predicado)
.
.
.
.
.
.
.
.
.
.
.
.

verbo) objeto)
Pedro
ligou o computador
Note que as palavras sentena, sujeito, predicado, verbo e objeto direto apa-
recem entre ). Fizemos isto para diferenciar o conceito, da palavra da lngua
portuguesa que o denota. Em outras palavras, sujeito ) indica que na gramtica
da lngua portuguesa h uma varivel chamada de sujeito.
Existe uma estreita relao entre a estrutura da rvore acima e as regras da
gramtica da lngua portuguesa. Lendo esta rvore de cima para baixo, cada bifur-
cao corresponde a uma regra da gramtica portuguesa. As regras que aparecem
na rvore da gura acima so as seguintes:
sentena) sujeito)predicado)
predicado) verbo)objeto direto)
sujeito) Pedro
verbo) ligou
objeto direto) o computador.
Assim podemos usar esta rvore para derivar a frase Pedro ligou o computador a
partir das regras acima:
sentena) sujeito)predicado) sujeito)verbo)objeto direto)
Pedroverbo)objeto direto) Pedro ligou objeto direto)
Pedro ligou o computador
O principal resultado deste captulo mostra que existe uma estreita relao en-
tre rvores gramaticais e derivaes. Antes, porm, precisaremos denir formal-
mente a noo de rvore gramatical de uma linguagem livre de contexto.
2. RVORES DE ANLISE SINTTICA 133
2. rvores de Anlise Sinttica
Nesta seo, alm de introduzir formalmente o conceito de rvore gramati-
cal de uma linguagem livre de contexto, estabelecemos a relao entre rvores e
derivaes.
Lembre-se que uma rvore um grafo conexo que no tem ciclos. As rvores
que usaremos so na verdade grafos orientados. Entretanto, no desenharemos
as arestas destas rvores como setas. Em vez disso, indicaremos que o vrtice v
precede v

desenhando v acima de v

. Alm disso, suporemos sempre que estamos


lidando com rvores que satisfazem as seguintes propriedades:
h um nico vrtice, que ser chamado de raiz, e que no precedido por
nenhum outro vrtice;
os sucessores de um vrtice esto totalmente ordenados.
Se v

e v

so sucessores de v, e se v

precede v

na ordenao dos vrtices, ento


desenharemos v

esquerda de v

. De agora em diante a palavra rvore ser usada


para designar um grafo com todas as propriedades relacionadas acima.
EXEMPLO 9.2. Um exemplo de rvore com estas propriedades, a rvore
genealgica que descreve os descendentes de uma dada pessoa. Note que, em uma
rvore genealgica, os irmos podem ser naturalmente ordenados pela ordem do
nascimento.
A terminologia que passamos a descrever inspirada neste exemplo. Suponha-
mos que T uma rvore e que v

um vrtice de T . Ento h um nico caminho


ligando a raiz a v

. Digamos que este caminho contm um vrtice v. Neste caso,


v ascendente de v

e v

descendente de v;
se v e v

esto separados por apenas uma aresta ento v pai de v

e v

lho de v;
se v

e v

so lhos de um mesmo pai, ento so irmos;


um vrtice sem lhos chamado de folha;
um vrtice que no uma folha chamado de vrtice interior.
134 9. RVORES DE ANLISE SINTTICA
A ordenao entre irmos, que faz parte da denio de rvore, pode ser es-
tendida a uma ordenao de todas as folhas. Para ver como isto feito, digamos
que f

e f

so duas folhas de uma rvore. Comeamos procurando o seu primeiro


ascendente comum, que chamaremos de v. Observe que f e f

tm que ser des-


cendentes de lhos diferentes de v, a no ser que sejam eles prprios lhos de v.
Digamos que f descendente de v

e f

de v

. Como v

e v

so irmos, sabemos
que esto ordenados; digamos que v

precede v

. Neste caso dizemos que f

pre-
cede f

. Esta uma ordem total; isto , todas as folhas de uma tal rvore podem
ser escritas em la, de modo que a seguinte sucede anterior.
Nenhuma preocupao adicional com esta ordenao necessria na hora de
desenhar uma rvore; basta obedecer conveno de sempre ordenar os vrtices
irmos da esquerda para a direita. Se zermos isto, as folhas caro automatica-
mente ordenadas da esquerda para a direita.
Seja G uma gramtica livre de contexto com terminais T e variveis V . De
agora em diante, estaremos considerando rvores, no sentido acima, cujos vrtices
esto rotulados por elementos de T V . Contudo, no estaremos interessados em
todas estas rvores, mas apenas naquelas resultantes de um procedimento recursivo
bastante simples, as rvores gramaticais ou rvores de anlise sinttica. Como
se trata de uma denio recursiva, precisamos estabelecer quem so os tomos
da construo, que chamaremos de rvores bsicas, e de que maneira podemos
combin-las.
DEFINIO 9.3. As rvores de anlise sinttica so denidas recursivamente
da seguinte maneira:
rvores bsicas: se T, X V e X uma regra de G, ento
e
X

so rvores gramaticais.
2. RVORES DE ANLISE SINTTICA 135
Regras de combinao: sejam T
1
, . . . , T
n
rvores gramaticais, e suponhamos que
o rtulo da raiz de T
j

j
. Se X
1

n
uma regra de (, ento a rvore T
denida por
X
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_

T
1
T
2
T
n
tambm uma rvore gramatical.
EXEMPLO 9.4. Um exemplo simples a rvore na gramtica G
exp
(denida
no captulo anterior) esboada abaixo.
E

E
+
E

id id

id
FIGURA 1. rvore gramatical
Uma consequncia muito importante desta denio recursiva, e uma que usa-
remos em vrias oportunidades, a seguinte. Suponhamos que uma rvore grama-
tical T tem um vrtice v rotulado por uma varivel X. Ento podemos trocar toda
a parte de T que descende de v por qualquer outra rvore gramatical cuja raiz seja
rotulada por X.
Segue tambm da denio que os nicos vrtices de uma rvore gramatical
que podem ser rotulados por elementos de T so as folhas. Portanto, um
vrtice interior de uma rvore gramatical s pode ser rotulado por uma varivel.
136 9. RVORES DE ANLISE SINTTICA
Por outro lado, se o vrtice v de uma rvore gramatical T est rotulado por
uma varivel X, e seus lhos por
1
, . . . ,
n
T V ento X
1

n
tem que ser uma regra da gramtica (. Diremos que esta a regra associada ao
vrtice v. No caso de v ser a raiz, T uma X-rvore. Caso a rvore gramatical
consista apenas de uma folha rotulada por um terminal , diremos que se trata de
uma -rvore.
Uma vez tendo introduzido rvores gramaticais, temos uma outra maneira de
gerar palavras a partir de uma gramtica livre de contexto. Para isso, denimos
a colheita c(T ) de uma rvore gramatical T (tambm chamada de resultado da
rvore gramatical). Como a denio de rvore recursiva, assim ser a denio
de colheita. As colheitas das rvores bsicas so
c( ) = e c
_
_
_
_
X

_
_
_
_
=
Por outro lado sejamT
1
, . . . , T
n
rvores gramaticais, e suponhamos que o rtulo da
raiz de T
j

j
. Se X
1

n
uma regra de G, ento a rvore T construda
de acordo com a regra de combinao satisfaz
c(T) = c(T
1
) c(T
2
) c(T
n
).
Como consequncia da denio recursiva, temos que a colheita de uma rvore
gramatical T a palavra obtida concatenando-se os rtulos de todas as folhas de
T, da esquerda para a direita. Como as folhas de uma rvore gramatical esto
totalmente ordenadas, no h nenhuma ambiguidade nesta maneira de expressar a
colheita. Para uma demonstrao formal deste fato veja o exerccio 1. Portanto, a
rvore da gura 1 tem colheita id + id id.
DEFINIO 9.5. Digamos que w uma palavra que pode ser derivada em
uma gramtica livre de contexto Gcomsmbolo inicial S. Uma rvore de derivao
para w uma S-rvore de G cuja colheita w. Note que reservamos o nome de
rvore de derivao para o caso especial das S-rvores.
3. COLHENDO E DERIVANDO 137
3. Colhendo e Derivando
No captulo anterior, vimos como gerar uma palavra formada por terminais a
partir do smbolo inicial de uma gramtica livre de contexto por derivao. Anoo
de colheita de uma rvore gramatical nos d uma segunda maneira de produzir uma
tal palavra. Como seria de esperar, h uma estreita relao entre estes dois mtodos,
que ser discutida em detalhes nesta seo.
Para explicitar a relao entre rvores gramaticais e derivaes vamos descre-
ver um algoritmo que constri uma derivao mais esquerda de uma palavra a
partir de sua rvore gramatical. Heuristicamente falando, o algoritmo desmonta
a rvore gramatical da raiz s folhas. Contudo, ao remover a raiz de uma rvore
gramatical, no obtemos uma nova rvore gramatical, mas sim uma sequncia or-
denada de rvores. Isto sugere a seguinte denio.
DEFINIO 9.6. Seja G uma gramtica livre de contexto com terminais T e
variveis V . Se
w =
1

n
(T V )

ento uma uma w-oresta T uma sequncia ordenada T


1
, . . . , T
n
de rvores
gramaticais, onde T
j
uma
j
-rvore. A colheita da oresta T a concatenao
das colheitas de suas rvores; isto
c(T) = c(T
1
) c(T
n
).
Podemos agora descrever o algoritmo. Lembre-se que quando dizemos re-
mova a raiz da rvore T estamos implicitamente assumindo que as arestas inci-
dentes raiz tambm esto sendo removidas. Se v a raiz de uma rvore T da
oresta T, denotaremos por T v a oresta obtida quando v removido de T .
Precisamos considerar, separadamente, o efeito desta construo quando T
a rvore bsica que tem a raiz rotulada pela varivel X e uma nica folha rotulada
por . Neste caso, quando removemos a raiz sobra apenas um vrtice rotulado por
, que no constitui uma rvore gramatical. Suporemos, ento, que remover a raiz
de uma tal rvore tem o efeito de apagar toda a rvore.
138 9. RVORES DE ANLISE SINTTICA
ALGORITMO 9.7. Constri uma derivao a partir de uma rvore gramati-
cal.
Entrada: uma X-rvore T , onde X uma varivel.
Sada: uma derivao mais esquerda de c(T ).
Etapa 1: Inicialize T com T .
Etapa 2: Se T uma w-oresta, ento imprima w. Pare se todas as rvores
de T so rotuladas por terminais.
Etapa 3: Seja v a raiz da rvore mais esquerda de T que rotulada por
uma varivel. Faa T = T v e volte etapa 2.
EXEMPLO 9.8. A seguir, voc encontrar um exemplo da aplicao passo a
passo deste algoritmo a uma rvore na gramtica G
exp
.
Inicializao
Passo 1
E

E
+
E

E
+
E

id E

E id E

E
id id id id
Imprime: E Imprime: E + E
3. COLHENDO E DERIVANDO 139
Passo 2 Passo 3
+
E

+
id E

E id E

E
id id id id
Imprime: id + E Imprime: id + E E
Passo 4 Passo 5
+ +
id

E id

id id id id
Imprime: id + id E Imprime: id + id id
Resta-nos demonstrar que este algoritmo funciona. Comeamos por analisar
o que o algoritmo faz quando um de seus passos executado. Suponhamos que,
ao nal do k-simo passo, temos uma
1

n
-oresta T formada pelas rvores
T
1
, . . . , T
n
. Portanto, a palavra impressa pelo algoritmo no passo k

1

n
.
Digamos que
j
uma varivel, mas que
1
, . . . ,
j1
so terminais. Portanto,
a rvore mais esquerda de T, cuja raiz rotulada por uma varivel, T
j
. Assim,
ao executar o (k + 1)-simo passo do algoritmo deveremos remover a raiz de T
j
.
Mas ao fazer isto estamos substituindo T
j
em T por uma
1

r
-oresta, onde
140 9. RVORES DE ANLISE SINTTICA

j

1

r
a regra associada raiz de T
j
. Ao nal deste passo, o algoritmo
ter impresso

1

j1

1

r

j+1

n
.
Entretanto,
j
era a varivel mais esquerda de
1

n
, e

1

j1

j+1

n

1

j1

1

r

j+1

n
.
Como o algoritmo comea imprimindo X, podemos concluir que produz uma de-
rivao mais esquerda em G, a partir de X. Falta apenas mostrar que o que
derivado mesmo c(T ). Contudo, a colheita das orestas a cada passo da apli-
cao do algoritmo sempre a mesma. Alm disso, as rvores gramaticais que
constituem a oresta no momento que o algoritmo termina tm suas razes inde-
xadas por terminais. Como o algoritmo no apaga nenhum vrtice indexado por
terminal diferente de , conclumos que a concatenao das razes das rvores no
momento em que o algoritmo para c(T), como desejvamos.
4. Equivalncia entre rvores e Derivaes
Passemos recproca da questo considerada na seo 3. Mais precisamente,
queremos mostrar que se G uma gramtica livre de contexto ento toda palavra
que tem uma derivao em G colheita de alguma rvore de derivao de G.
Para resolver este problema usando um algoritmo precisaramos inventar uma
receita recursiva para construir uma rvore de derivao a partir de uma derivao
qualquer em G. Isto possvel, mas o algoritmo resultante no to enxuto quanto
o anterior. Por isso vamos optar por dar uma demonstrao indireta, por induo.
PROPOSIO 9.9. Seja X uma varivel da gramtica livre de contexto G.
Se existe uma derivao X

w, ento w colheita de uma X-rvore em G.


DEMONSTRAO. Suponhamos que a gramtica livre de contexto G tem ter-
minais T e variveis V . A proposio ser provada por induo no nmero p de
passos de uma derivao X

w.
4. EQUIVALNCIA ENTRE RVORES E DERIVAES 141
A base da induo consiste em supor que existe uma derivao X

w de
apenas um passo. Mas isto s pode ocorrer se existem terminais t
1
, . . . , t
n
e uma
regra da forma X t
1
t
n
. Assim, w a colheita de uma X-rvore que tem a
raiz rotulada por X e as folhas por t
1
, . . . , t
n
, o que prova a base da induo.
A hiptese de induo arma que, se Y V e se existe uma derivao
Y

u T

,
em p passos, ento u colheita de uma Y -rvore de G. Digamos, agora, que
w T

pode ser derivado a partir de X V em p + 1 passos. O primeiro


passo desta derivao ser da forma X v
1
v
2
v
n
, onde v
1
, . . . , v
n
T V e
X v
1
v
2
v
n
uma regra de G. A derivao continua com cada v
i
deagrando
uma derivao da forma v
i

u
i
onde u
1
u
n
= w. Como cada uma destas
derivaes tem comprimento menor ou igual a p, segue da hiptese de induo que
existem v
i
-rvores T
i
com colheita u
i
, para cada i = 1, . . . , n. Mas T
1
, . . . , T
n
uma v
1
v
n
-oresta, e a primeira regra utilizada na derivao de w foi X
v
1
v
n
. Portanto, pela denio de rvore gramatical, podemos colar as razes
desta oresta de modo a obter uma X-rvore cuja colheita
c(T
1
) c(T
n
) = u
1
u
n
= w,
o que prova o passo de induo. O resultado desejado segue pelo princpio de
induo nita.
S nos resta reunir, para referncia futura, tudo o que aprendemos sobre a
relao entre derivaes e rvores gramaticais em um nico teorema. Antes de
enunciar o teorema, porm, observe que tudo o que zemos usando derivaes
mais esquerda vale igualmente para derivaes mais direita.
TEOREMA 9.10. Seja Guma gramtica livre de contexto e w L(G). Ento:
(1) existe uma rvore de derivao cuja colheita w;
(2) a cada rvore de derivao cuja colheita w corresponde uma nica
derivao mais esquerda de w;
142 9. RVORES DE ANLISE SINTTICA
(3) a cada rvore de derivao cuja colheita w corresponde uma nica
derivao mais direita de w.
Temos que (1) segue da proposio acima e que (2) consequncia do algo-
ritmo da seo 3. J (3) segue de uma modicao bvia deste mesmo algoritmo.
A importncia deste teorema car clara nos prximos captulos.
5. Ambiguidade
Como vimos na seo 1, as rvores gramaticais so usadas na gramtica da ln-
gua portuguesa para representar a anlise sinttica de uma frase em um diagrama.
Portanto, tm como nalidade ajudar-nos a interpretar corretamente uma frase.
Contudo, preciso no esquecer que possvel escrever sentenas gramati-
calmente corretas em portugus que, apesar disso, admitem duas interpretaes
distintas.
EXEMPLO 9.11. A frase
A seguir veio uma me com uma criana empurrando um car-
rinho.
pode signicar que a me empurrava um carrinho com a criana dentro; ou que a
me vinha com uma criana que brincava com um carrinho. Ambos os sentidos so
admissveis, mas a funo sinttica das palavras num, e noutro caso, diferente. No
primeiro caso o sujeito que corresponde ao verbo empurrar me, no segundo caso
criana. Assim, teramos que escolher entre duas rvores gramaticais diferentes
para representar esta frase, cada uma correspondendo a um dos sentidos acima.
No caso de uma gramtica livre de contexto G, formalizamos esta noo de
dupla interpretao na seguinte denio.
DEFINIO 9.12. A gramtica G ambgua se existe uma palavra w L(G)
que admite duas rvores de derivao distintas em G.
bom chamar a ateno para o fato de que nem toda frase com duplo sentido
em portugus se encaixa na denio acima. Por exemplo, a galinha est pronta
5. AMBIGUIDADE 143
para comer tem dois signicados diferentes, mas em ambos as vrias palavras da
frase tm a mesma funo sinttica. Assim, no importa o signicado que voc d
frase, o sujeito sempre a galinha.
Frases que admitem signicados diferentes so uma fonte inesgotvel de hu-
mor; mas para o compilador de uma linguagem de programao uma instruo que
admite duas interpretaes distintas pode ser um desastre.
EXEMPLO 9.13. Voltemos por um momento gramtica G
exp
. Na gura
abaixo, direita, reproduzimos a rvore de derivao de id+idid que j havamos
esboado na seo 2. Uma rvore de derivao diferente para a mesma expresso
pode ser encontrada esquerda, na mesma gura.
E
.
.
.
.
.
.
.
.
.


E E
+
E

E
+
E id id E

E
id id id id
FIGURA 2. Duas rvores e uma mesma colheita
A existncia desta segunda rvore de derivao signica que, se um computa-
dor estiver usando a gramtica G
exp
, ele no saber como distinguir a precedncia
correta entre os operadores + e . Dito de outra maneira, esta gramtica no per-
mite determinar que, quando nos deparamos com id + id id devemos primeiro
efetuar a multiplicao e s depois somar o produto obtido com a outra parcela da
soma.
Uma sada possvel tentar inventar uma outra gramtica que gere a mesma
linguagem, mas que no seja ambgua. A ideia bsica consiste em introduzir novas
variveis e novas regras que forcem a precedncia correta. Para fazer isto, compare
novamente as duas rvores gramaticais com colheita id + id id da gura 2.
Observe que, na rvore da direita, idid obtida a partir da expresso EE, e
os vrtices que correspondem a estes trs rtulos so todos irmos. Por outro lado,
o nico vrtice do qual descendem todos os smbolos da expresso id + id id a
144 9. RVORES DE ANLISE SINTTICA
prpria raiz. Portanto, interpretando a expresso id + id id conforme a rvore da
direita, teremos primeiro que calcular o produto, e s depois a soma. Interpretando
a mesma expresso de acordo com a rvore da esquerda, vemos que neste caso a
adio id + id efetuada antes, e o resultado, ento, multiplicado por id. Isto , a
rvore que d a interpretao correta da precedncia dos operadores a que est
direita da gura 2.
Assim, precisamos construir uma nova gramtica na qual uma rvore como a
que est direita da gura possa ser construda, mas no uma como a da esquerda.
A estratgia consiste em introduzir novas variveis de modo a forar a prece-
dncia correta dos operadores. Faremos isto deixando a varivel E controlar as
adies, e criando uma nova varivel F (de fator) para controlar a multiplicao.
O conjunto de regras resultante o seguinte:
E E + F
E F
F F F
F (E)
F id
No h nada de mais a comentar sobre a primeira e a terceira regras; e a segunda
apenas permite passar de somas a multiplicaes. A regra que realmente faz a
diferena a quarta. Ela nos diz que, aps efetuar uma multiplicao, s podemos
voltar varivel E (que controla as somas) colocando os parnteses.
Embora esta nova gramtica no permita a construo de uma rvore como
a da esquerda na gura 2, ainda assim ela ambgua. Por exemplo, as rvores
da gura 3 esto de acordo com a nova gramtica mas, apesar de diferentes, tm
ambas colheita id id id.
A sada introduzir mais uma varivel, que vamos chamar de T (para termo).
A nova gramtica, que chamaremos de G

exp
, tem variveis E, T e F, smbolo
5. AMBIGUIDADE 145
E E
F

.
.
.
.
.
.
.
.
.
F

F

F
id F

F F

F id
id id id id
FIGURA 3. Outras duas rvores com mesma colheita
inicial E, e as seguintes regras:
E E + T [ T
T T F [ F
F (E)[ id
A gramtica G

exp
no ambgua, mas provar isto no fcil, e no faremos os
detalhes aqui.
Ainda h um ponto que precisa ser esclarecido. A discusso anterior pode
ter deixado a impresso de que, para estabelecer a precedncia correta entre os
operadores aritmticos, basta eliminar a ambiguidade da gramtica. Mas isto no
verdade, como mostra o seguinte exemplo.
EXEMPLO 9.14. A gramtica G

exp
cujas regras so:
S E
E (E)R [ V R
R +E [ E [ A
V id
A
146 9. RVORES DE ANLISE SINTTICA
gera L
exp
. Alm disso, no difcil provar que esta gramtica no pode ser amb-
gua. Isto decorre dos seguintes fatos:
no h mais de duas regras em G

exp
cujo lado esquerdo seja ocupado por
uma mesma varivel;
se h duas regras a partir de uma mesma varivel, o lado direito de uma
comea com uma varivel, e o da outra com um terminal;
cada terminal s aparece uma vez como prexo do lado direito de alguma
regra de G

exp
.
Imagine, ento, que estamos tentando calcular uma derivao esquerda em G

exp
para uma dada palavra w L
exp
. Digamos que, isolando o n-simo passo da
derivao, obtivemos o seguinte
S

uEv w,
onde u s contm terminais, mas v pode conter terminais e variveis. Precisamos
decidir qual a regra a ser aplicada a seguir. Neste exemplo, a varivel mais
esquerda no n-simo passo da derivao E. Assim, h duas regras que podemos
aplicar. Para saber qual das duas ser escolhida voltamos nossa ateno para a
palavra w que est sendo derivada. claro que w tem u como prexo; digamos
que o terminal seguinte a u em w seja . Temos ento duas possibilidades. Se
= ( ento a regra a ser aplicada tem que ser E (E)R. Por outro lado, se
,= ( ento s nos resta a possibilidade de aplicar E V R. Assim, a regra a ser
aplicada neste passo est completamente determinada pela varivel mais esquerda
presente, e pela sequncia de terminais da palavra que est sendo derivada.
Entretanto, apesar de G

exp
no ser ambgua, a rvore de derivao de id+idid
em G

exp
no apresenta a precedncia desejada entre os operadores, como mostra a
gura abaixo.
6. REMOVENDO AMBIGUIDADE 147
S
E

V R

id

E

V R

id
+
E

V R
id A

6. Removendo Ambiguidade
O que zemos na seo anterior parece indicar que, ao se deparar com uma
gramtica ambgua, tudo o que temos que fazer adicionar algumas variveis e
alterar um pouco as regras de maneira a remover a ambiguidade. verdade que
criar novas variveis e regras para remover ambiguidade pode no ser muito fcil,
e bom no esquecer que no chegamos a provar que a gramtica G

exp
no
ambgua.
Por outro lado, isto parece bem o tipo de problema que poderia ser deixado
para um computador fazer, bastaria que descobrssemos o algoritmo. a justa-
mente que est o problema. Um computador no consegue sequer detectar que
148 9. RVORES DE ANLISE SINTTICA
uma gramtica ambgua. De fato, no pode existir um algoritmo para determi-
nar se uma dada gramtica livre de contexto ou no ambgua. Voltaremos a esta
questo em um captulo posterior.
Infelizmente, as ms notcias no acabam a. H linguagens livres de contexto
que no podem ser geradas por nenhuma gramtica livre de contexto que no seja
ambgua. Tais linguagens so chamadas de inerentemente ambguas. Note que
ambiguidade uma propriedade da gramtica, mas ambiguidade inerente uma
propriedade da prpria linguagem.
EXEMPLO 9.15. Um exemplo bastante simples de linguagem inerentemente
ambgua a linguagem que j vimos no captulo anterior
L
in
= a
i
b
j
c
k
: i, j, k 0 e i = j ou j = k.
Com isso voc descobre porque demos este nome a L
in
. No fcil mostrar que
esta linguagem inerentemente ambgua, e por isso no vamos fazer a demonstra-
o aqui. Os detalhes podem ser encontrados em [4, theorem 7.2.2, p. 236] ou [5,
theorem 4.7, p. 100].
Para no encerrar o captulo num clima pessimista, vamos analisar o problema
da ambiguidade para o caso particular das linguagens regulares. Sabemos que
estas linguagens podem ser geradas por gramticas livres de contexto de um tipo
bastante especial: as gramticas regulares. Assim a primeira pergunta : uma
gramtica regular pode ser ambgua? A resposta sim, como mostra o seguinte
exemplo.
EXEMPLO 9.16. Considere a gramtica com terminal 0, que tem S e X
como variveis (S o smbolo inicial) e cujas regras so
S 0A [ 0 e A 0 [ .
A palavra 0 tem duas rvores gramaticais distintas que esto esboadas abaixo.
6. REMOVENDO AMBIGUIDADE 149
S

S
0 A 0

Felizmente, no caso de gramticas regulares, sempre possvel remover a am-


biguidade. Em outras palavras, no existem linguagens regulares inerentemente
ambguas. Alm disso, existe um algoritmo simples que, tendo como entrada uma
gramtica regular, constri uma outra que gera a mesma linguagem regular mas
no ambgua. O algoritmo consequncia do seguinte fato: a gramtica regular
construda a partir de um autmato nito determinstico pelo algoritmo do captulo
7 no ambgua.
Para entender porque isto verdade, suponha que M seja um autmato nito
determinstico e G seja a gramtica construda a partir de M pelo algoritmo do
captulo 7. Vimos que as derivaes em G simulam computaes em M e vice-
versa. Como M determinstico, s h uma computao possvel para cada palavra
de L(M). Logo cada palavra de L(G) = L(M) s tem uma derivao possvel.
Como G regular, toda derivao em G mais esquerda. Logo G no ambgua
pelo teorema da seo 4.
Diante deste resultado, claro que, ao receber uma gramtica regular G como
entrada, o algoritmo procede da seguinte maneira:
Etapa 1: determina umautmato nito no determinstico M tal que L(M)
= L(G);
Etapa 2: determina um autmato nito determinstico M

tal que L(M

) =
L(M);
Etapa 3: determina uma gramtica G

, obtida a partir de M

, e que gera
L(M

).
Como j vimos, G

no pode ser uma gramtica ambgua.


150 9. RVORES DE ANLISE SINTTICA
7. Exerccios
(1) Prove, por induo no nmero de vrtices internos, que a colheita de uma
rvore gramatical T igual palavra obtida concatenando-se os rtulos
das folhas de T da esquerda para a direita.
(2) Seja G uma gramtica livre de contexto e seja X uma varivel de G. Seja
w uma palavra somente em terminais e que pode ser derivada em G a
partir de X. Prove, por induo no nmero de passos de uma derivao
de w a partir de X que existe uma X-rvore em G cuja colheita w.
(3) Considere a gramtica no ambgua G

exp
que gera as expresses aritm-
ticas.
a) Esboce as rvores de derivao de id+(id+id)id e de (idid+idid)
b) D uma derivao esquerda e uma derivao direita da expresso
(id id + id id).
(4) Repita o exerccio anterior para a gramtica G

exp
.
(5) Descreva detalhadamente um algoritmo que, tendo como entrada a de-
rivao de uma palavra w em uma gramtica livre de contexto, constri
uma rvore gramatical cuja colheita w. O principal problema consiste
em, tendo dois passos consecutivos da derivao, determinar qual a regra
que foi aplicada.
(6) Prove que a gramtica G

exp
no ambgua.
SUGESTO: Use induo no nmero de passos de uma derivao es-
querda.
(7) Mostre que a gramtica cujas regras so
S 1A[ 0B
A 0 [ 0S [ 1AA
B 1 [ 1S [ 0BB
ambgua.
CAPTULO 10
Lema do Bombeamento para Linguagens Livres de
Contexto
Neste captulo, nalmente, confrontamos a inevitvel pergunta: como provar
que uma dada linguagem no livre de contexto? A estratgia muito semelhante
adotada para linguagens regulares, apesar do lema do bombeamento resultante
ser um pouco mais difcil de aplicar na prtica.
1. Introduo
J conhecemos muitas linguagens livres de contexto, mas ainda no temos
nenhum exemplo de uma linguagem que no seja deste tipo. Quer dizer, j menci-
onamos anteriormente que a linguagem
L
abc
= a
n
b
n
c
n
: n 0
no livre de contexto, mais ainda no provamos isto. claro que isto no
satisfatrio. O problema que nada podemos concluir do simples fato de no
termos sido capazes de inventar uma gramtica livre de contexto que gere esta
linguagem. Talvez a gramtica seja muito complicada, ou quem sabe foi s falta
de inspirao.
Mas como ser possvel provar que no existe nenhuma gramtica livre de
contexto que gere uma dada linguagem? A estratgia a mesma adotada para
o caso de linguagens regulares. Isto , provaremos que toda linguagem livre de
contexto satisfaz uma propriedade de bombeamento. Portanto, uma linguagem que
no satiszer esta propriedade no pode ser livre de contexto. Comeamos com
um resultado relativo a rvores que ser necessrio na demonstrao do lema do
bombeamento.
151
152 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
Como no captulo anterior, consideraremos apenas rvores enraizadas. Dize-
mos que uma rvore m-ria se cada vrtice tem, no mximo, m lhos. Deseja-
mos relacionar o nmero de folhas de uma rvore m-ria com a altura desta rvore.
Lembre-se que a altura de uma rvore o comprimento (em nmero de arestas) do
mais longo caminho entre a raiz e alguma de suas folhas.
Quando todos os vrtices internos da rvore tm exatamente m-lhos, a rvore
m-ria completa. Seja f(h) o nmero de folhas de uma rvore m-ria completa
de altura h. Como a rvore m-ria completa aquela que tem o maior nmero
possvel de folhas, o problema estar resolvido se formos capazes de encontrar
uma frmula para f(h) em funo de h e m. Faremos isto determinando uma
relao de recorrncia para f(h) e resolvendo-a.
Para comear, se a rvore tem altura zero, ento consiste apenas de um vrtice.
Neste caso h apenas uma folha, de modo que f(0) = 1. Para estabelecer a relao
de recorrncia podemos imaginar que T uma rvore m-ria completa de altura h.
claro que, removendo todas as folhas de T , obtemos uma rvore m-ria completa
T

de altura h 1. Para reconstruir T a partir de T

precisamos repor as folhas.


Fazemos isso dando m-lhos a cada folha de T

. Como T

tem f(h 1) folhas,


obtemos
f(h) = mf(h 1).
Assim,
f(h) = mf(h 1) = m
2
f(h 2) = = m
h
f(0) = m
h
.
Portanto, f(h) = m
h
a frmula desejada.
Para estabelecer a relao entre este resultado e o lema do bombeamento pre-
cisamos de uma denio. Seja G uma linguagem livre de contexto. A amplitude
(G) de uma gramtica livre de contexto G o comprimento mximo das palavras
que aparecem direita de uma seta em uma regra de G.
EXEMPLO 10.1. Para as gramticas G
exp
e G

exp
denidas no captulo ante-
rior, temos (G
exp
) = 3 e (G

exp
) = 4.
2. LEMA DO BOMBEAMENTO 153
Se uma gramtica livre de contexto tem amplitude , ento todas as suas r-
vores gramaticais so -rias. A frmula para o nmero de folhas de uma rvore
-ria completa nos d ento seguinte lema.
LEMA 10.2. Seja G uma linguagem livre de contexto. Se X uma varivel
de G e se w colheita de uma X-rvore de G de altura h ento
[w[ (G)
h
.
2. Lema do Bombeamento
Antes de enunciar e provar o lema do bombeamento de maneira formal, vamos
considerar o seu funcionamento de maneira informal.
Suponhamos que G uma gramtica livre de contexto que gera uma lingua-
gem innita. Segundo o lema da seo 1, quanto maior o comprimento da colheita
de uma rvore gramatical maior tem que ser a sua altura. Portanto, se o compri-
mento da colheita de uma rvore de derivao T sucientemente grande, ento o
caminho mais longo entre a raiz e alguma folha conter mais vrtices interiores do
que h variveis na gramtica. Em particular, haver dois vrtices diferentes em T
cujos rtulos so iguais. Vamos chamar de
1
e
2
estes vrtices, e de A a varivel
que os rotula, como na gura 1.
Observe que as regras associadas a
1
e
2
tm ambas A do seu lado esquerdo.
Mas isto signica que podemos construir a partir de T uma nova rvore T

da
seguinte maneira. Comece construindo T

exatamente como T at chegar a


2
.
Como
2
rotulado pela mesma varivel que
1
, podemos construir a partir dele
a mesma A-rvore que estava associada a
1
em T , como mostra a gura 2. Note
que os trechos da colheita da rvore T da gura 1 marcados como v e y aparecem
repetidos em T

. Como T

uma rvore de derivao em G, sua colheita um


elemento de L(G) no qual os trechos v e y de c(T ) aparecem bombeados. Na-
turalmente o processo acima pode ser repetido quantas vezes quisermos, de modo
que podemos bombear estes trechos qualquer nmero de vezes.
154 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
FIGURA 1. Decompondo a palavra para bombear
FIGURA 2. Bombeando uma vez
Para que esta propriedade do bombeamento possa ser usada para provar que
uma linguagem no livre de contexto precisamos formul-la de maneira mais
2. LEMA DO BOMBEAMENTO 155
precisa. Alm disso, como no caso do lema correspondente para linguagens re-
gulares, incluiremos algumas condies tcnicas extras que reduzem o nmero de
possveis decomposies da palavra a ser bombeada que precisamos considerar.
De fato, h vrias verses diferentes do lema do bombeamento para linguagens li-
vres de contexto. A que apresentamos aqui no a mais forte, mas suciente para
cobrir muitos dos exemplos mais simples. Verses mais sosticadas so discutidas
em [5, Chapter 6, p. 125].
LEMA DO BOMBEAMENTO. Seja G uma gramtica livre de contexto. Existe
um nmero inteiro , que depende de G, tal que, se w L(G) e [w[ , ento
existe uma decomposio de w na forma w = uvxyz, onde
(1) vy ,= ;
(2) [vxy[ ;
(3) uv
n
xy
n
z L(G), para todo n 0.
DEMONSTRAO. Suponhamos que Gtemk variveis e que (G) 2; neste
caso escolheremos = (G)
k+1
(no caso em que (G) = 1, o lema funcionar
com a escolha de = 2). Seja w L(G) uma palavra com comprimento maior ou
igual a . J sabemos, pelo teorema do captulo anterior, que deve existir ao menos
uma rvore de derivao com colheita w. Entre todas as rvores com esta colheita,
escolha uma, que chamaremos de T , que satisfaa a seguinte propriedade:
Hiptese 1: T tem o menor nmero possvel de folhas entre todas as rvo-
res de derivao de colheita w em G.
Como a colheita de T tem comprimento maior ou igual a = (G)
k+1
, que
maior do que (G)
k
, segue do lema da seo 1 que T tem altura pelo menos
k + 1. Chamando de C o mais longo caminho em T que vai de sua raiz a uma
folha, conclumos que C tem, pelo menos, k +1 arestas. Logo C tem, no mnimo,
k+2 vrtices. Como s pode haver uma folha num tal caminho, ento C tem k+1
vrtices interiores. Contudo, k o nmero de variveis da gramtica, e cada vrtice
de C est rotulado por uma varivel. Portanto, pelo princpio da casa do pombo,
h dois vrtices diferentes em C rotulados pela mesma varivel. Entre todos os
156 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
pares de vrtices de C rotulados pela mesma varivel, escolha aquele que satisfaz
a seguinte propriedade:
Hiptese 2: o vrtice
1
precede o vrtice
2
e todos os vrtices de C entre

1
e a folha so rotulados por variveis distintas.
Lembre-se que as rvores que estamos considerando so grafos orientados. Por-
tanto, C um caminho orientado; logo faz sentido dizer, de dois vrtices de C, que
um precede o outro.
Seja A a varivel que rotula
1
e
2
. Temos ento duas A-rvores: T
1
, com raiz
em
1
, e T
2
com raiz em
2
. Denotaremos por x a colheita de T
2
. Observe que,
como
1
precede
2
ao longo de C, ento x uma subpalavra da colheita de T
1
.
Assim, podemos decompor a colheita de T
1
na forma vxy. A relao entre estas
rvores e suas colheitas ilustrada na gura 1.
Entretanto, pela hiptese 2, o caminho (ao longo de C) que vai de
1
folha
tem, no mximo, k + 2 vrtices (contando com a folha, que rotulada por um
terminal!). Alm disso, como C o mais longo caminho que vai da raiz de T
a uma folha, o trecho de C que comea em
1
o mais longo caminho em T
1
entre sua raiz (que
1
) e uma folha. Portanto, T
1
tem altura no mximo k + 1.
Conclumos, utilizando novamente o lema da seo 1 que, como vxy a colheita
de T
1
, ento
[vxy[ (G)
k+1
= .
Isto prova (2) do enunciado do lema.
Considere agora o que acontece na construo de T quando chegamos a
2
.
Este vrtice rotulado pela varivel A e a ele est associada uma regra que tem
A do lado esquerdo da seta. Mas suponha que, chegados a
2
, decidimos aplicar
a mesma regra que aplicamos quando chegamos a
1
. Podemos fazer isto porque
esta tambm uma regra que tem A do lado esquerdo. Se continuarmos, vrtice
a vrtice, copiando o trecho da rvore T hachurado na gura, teremos uma nova
rvore gramatical em(, cuja colheita uv
2
xy
2
z. Se repetirmos este procedimento
n vezes, obteremos uma rvore cuja colheita uv
n
xy
n
z. Isto prova (3) quando
n > 0.
3. EXEMPLOS 157
Por outro lado, ao chegar ao vrtice
1
, tambmpodemos usar a regra associada
a
2
e continuar a construir a rvore como se fosse T
2
. Neste caso obteremos uma
rvore T
0
com menos vrtices que T e com colheita uxz, que corresponde a tomar
n = 0 em (3).
S nos resta mostrar que vy ,= . Mas se vy fosse igual a ento a rvore T
0
,
construda no pargrafo anterior, teria colheita igual a w, e menos folhas que T , o
que contradiz a hiptese 1. Portanto, vy ,= e provamos (1), concluindo assim a
demonstrao do lema do bombeamento.
3. Exemplos
Veremos a seguir que vrias das linguagens que j encontramos anteriormente,
e outras que ainda vamos encontrar frente, no so livres de contexto. Antes,
porm, precisamos discutir como o lema do bombeamento utilizado para provar
que uma linguagem no livre de contexto.
Digamos que L uma linguagem que voc suspeita no ser livre de contexto.
Para aplicar o lema do bombeamento a L usamos a mesma estratgia j utilizada
no caso de linguagens regulares. Assim,
(1) suporemos, por contradio, que L gerada por uma gramtica livre de
contexto;
(2) escolheremos uma palavra w L de comprimento maior ou igual a ;
(3) mostraremos que no h nenhuma maneira possvel de decompor w na
forma do lema do bombeamento, de modo que w tenha subpalavras bom-
beveis.
Com isto, podemos concluir que L no livre de contexto.
claro que, se o seu palpite estiver errado e L for livre de contexto, ento voc
no chegar a nenhuma contradio. Por outro lado, o fato de uma contradio no
ter sido obtida no signica que L livre de contexto.
Como no caso das linguagens regulares, a escolha da palavra em (2) depende
de , uma varivel inteira positiva. Alm disso, escolher w de maneira a obter
facilmente uma contradio envolve uma certa dose de tentativa e erro. Finalmente,
158 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
por causa da maneira mais complicada de decompor w, podemos ter vrios casos
a analisar antes de esgotar todas as possibilidades. Vejamos alguns exemplos.
EXEMPLO 10.3. J havamos mencionado anteriormente que a linguagem
L
abc
= a
m
b
m
c
m
: m 0
no livre de contexto. Temos, agora, as ferramentas necessrias para provar que
isto verdade.
Suponha, por contradio, que L
abc
livre de contexto. Pelo lema do bombe-
amento, existe um inteiro positivo tal que, se m , ento possvel decompor
w = a
m
b
m
c
m
na forma w = uvxyz, onde:
(1) vy ,= ;
(2) [vxy[ ;
(3) uv
n
xy
n
z L
abc
para todo n 0.
Como m mas [vxy[ , temos que vxy no pode conter, ao mesmo
tempo, as, bs e cs. Digamos que vxy s contenha as e bs. Neste caso, nem v,
nem y, podem conter c, mas vy tem que conter pelo menos um a ou um b. Assim,
quando n > 1, o nmero de as ou bs em uv
n
xy
n
z tem que ser maior que m, ao
passo que o nmero de cs no foi alterado, e continua sendo m. O caso em que vxy
s contm bs e cs pode ser tratado de maneira anloga. Portanto, uv
n
xy
n
z / L
abc
o que contradiz o lema do bombeamento. Conclumos que, de fato, L
abc
no uma
linguagem livre de contexto. Isto conclui tambm a demonstrao, que deixamos
indicada anteriormente, de que as linguagens livres de contexto no so fechadas
com relao interseo.
EXEMPLO 10.4. Anteriormente, vimos que a linguagem
L
primos
= 0
p
: p um primo positivo,
no regular. Como j sabemos que h linguagens livres de contexto que no so
regulares, faz sentido perguntar se esta linguagem livre de contexto. A resposta
no.
3. EXEMPLOS 159
Suponhamos, por contradio, que L
primos
seja livre de contexto. Ento, de
acordo com o lema do bombeamento, deve existir um inteiro positivo tal que se p
um primo maior que , ento podemos decompor 0
p
na forma 0
p
= uvxyz, onde
(1) vy ,= ;
(2) [vxy[ ;
(3) uv
n
xy
n
z L
primos
para todo n 0.
Mas u, v, x, y e z so todas palavras em 0

. Logo existem inteiros m, r, s, t 0


tais que
u = 0
m
, v = 0
r
, x = 0
s
, y = 0
t
e z = 0
prst
.
Alm disso, segue de (1) que r + t > 0, e de (3) que
uv
n
xy
n
z = 0
m
(0
r
)
n
0
s
(0
t
)
n
0
prst
= 0
p+(r+t)(n1)
pertence a L
primos
para todo n 0. Mas, para que esta ltima armao seja
verdadeira, os nmeros p + (r + t)(n 1) tm que ser primos para todo n 0.
Tomando n = p + 1 temos que
p + (r + t)(n 1) = p(1 + r + t),
composto, pois r +t > 0; uma contradio. Portanto, L
primos
no uma lingua-
gem livre de contexto.
EXEMPLO 10.5. Considere, agora, a linguagem
L
rr
= rr : r (0 1)

.
J vimos anteriormente que esta linguagem no regular, queremos provar que
tambm no livre de contexto.
Suponhamos, por contradio, que L
rr
livre de contexto. Aproveitando uma
ideia j usada quando provamos que esta linguagem no regular, escolhemos
w = 0
m
10
m
1 como nossa primeira tentativa. Entretanto, escolhendo = 3 e
160 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
decompondo 0
m
10
m
1 na forma
u = 0
m1
, v = 0, x = 1, y = 0 e z = 0
m1
1,
vericamos que todas as condies do lema do bombeamento so satisfeitas. Por-
tanto, no possvel chegar a uma contradio escolhendo r = 0
m
1.
A sada escolher uma palavra mais complexa. Observe que, no exemplo
acima, a decomposio proposta no funcionaria se o nmero de 1s tambm de-
pendesse de m. Isto sugere que devemos escolher r = 0
m
1
m
.
Supondo, por contradio, que L
rr
livre de contexto e escolhendo w =
0
m
1
m
0
m
1
m
temos, pelo lema do bombeamento, que se m ento w pode
ser decomposta na forma
0
m
1
m
0
m
1
m
= uvxyz
de modo que as condies (1), (2) e (3) do lema do bombeamento sejam satisfeitas.
H dois casos a considerar.
O primeiro caso consiste em supor que vxy uma subpalavra do primeiro
0
m
1
m
. Neste caso, ao tomarmos n = 2 no bombeamento, transformaremos o
primeiro 0
m
1
m
em uma palavra maior enquanto mantemos o segundo 0
m
1
m
inal-
terado. Precisamos mostrar ento que, ao dividirmos a nova palavra uv
2
xy
2
z ao
meio, as duas metades no sero mais iguais. Isto signicar que uv
2
xy
2
z / L
rr
e chegaremos contradio desejada.
Apalavra w original possui comprimento 4m, logo 2msmbolos esto emcada
uma das suas metades. Ao bombearmos com n = 2 o primeiro 0
m
1
m
, a palavra
uv
2
xy
2
z passar a ter mais do que 4m smbolos. De fato, ela ter 4m + [vy[
smbolos. Para que uv
2
xy
2
z tenha alguma chance de pertencer linguagem,
necessrio que [vy[ seja par, pois se a palavra possuir comprimento mpar, ela
certamente no possuir duas metades iguais. Vamos ento assumir como hiptese
a partir de agora que [vy[ par.
Com estes novos smbolos que so acrescentados pelo bombeamento no pri-
meiro 0
m
1
m
, os ltimos smbolos desta parte da palavra, que pertenciam primeira
3. EXEMPLOS 161
metade da palavra original, sero empurrados para a segunda metade da palavra
uv
2
xy
2
z. Como [vy[ m, no mximo m novos smbolos sero bombeados
no primeiro 0
m
1
m
, logo uma quantidade de smbolos que certamente menor do
que m ser empurrada da primeira metade da palavra original para a segunda
metade da palavra uv
2
xy
2
z. Como os ltimos m smbolos da primeira metade da
palavra original so todos 1s, garantidamente apenas 1s sero empurrados para
o incio da segunda metade da palavra uv
2
xy
2
z. Mas ento temos um problema:
a primeira metade de uv
2
xy
2
z comea com 0 e a segunda metade comea com 1.
Assim, elas certamente no so iguais e uv
2
xy
2
z / L
rr
, o que uma contradio.
O caso em que vxy subpalavra do segundo 0
m
1
m
pode ser tratado de maneira
anloga.
Finalmente, resta-nos supor que vxy inclui o meio da palavra. Neste caso, vxy
tem que ser subpalavra de 1
m
0
m
, j que [vxy[ m. Assim, ou v contm
algum 1 ou y algum 0. Removendo-os, conclumos que uxz = 0
m
1
s
0
t
1
m
, onde
s ou t (ou ambos) so menores que m. Entretanto, se 0
m
1
s
0
t
1
m
= rr ento r
comea em 0 e acaba em 1, de forma que precisamos ter s = m = t, o que uma
contradio. Conclumos que L
rr
no livre de contexto.
EXEMPLO 10.6. Vamos mostrar que a linguagem
L
abc
= a
i
b
j
c
k
: 0 i j k
no livre de contexto.
A prova bem semelhante do exemplo da linguagemL
abc
acima, com apenas
uma diferena importante, que iremos destacar.
Suponha, por contradio, que L
abc
livre de contexto. Repare que as
palavras w = a
m
b
m
c
m
, com m 0, pertencem linguagem acima. Pelo lema
do bombeamento, existe um inteiro positivo tal que, se m , ento possvel
decompor w = a
m
b
m
c
m
na forma w = uvxyz, onde:
(1) vy ,= ;
(2) [vxy[ ;
(3) uv
n
xy
n
z L
abc
para todo n 0.
162 10. LEMA DO BOMBEAMENTO PARA LINGUAGENS LIVRES DE CONTEXTO
Como m mas [vxy[ , temos que vxy no pode conter, ao mesmo
tempo, as, bs e cs. Digamos que vxy s contenha as e bs. Neste caso, nem v,
nem y, podem conter c, mas vy tem que conter pelo menos um a ou um b. Assim,
quando n > 1, o nmero de as ou bs em uv
n
xy
n
z tem que ser maior que m, ao
passo que o nmero de cs no foi alterado, e continua sendo m. Assim, neste caso,
uv
n
xy
n
z / L
abc
, quando n > 1.
At aqui, tudo est caminhando exatamente como no caso da linguagem L
abc
que zemos anteriormente. A diferena entre os dois casos surge agora. Para a
linguagem L
abc
, o caso em que vxy s contm bs e cs podia ser tratado de maneira
inteiramente anloga. Neste exemplo, isto no mais verdade.
No caso em que vxy s contm bs e c, quando n > 1, o nmero de bs ou cs em
uv
n
xy
n
z tem que ser maior que m, ao passo que o nmero de as no foi alterado, e
continua sendo m. No entanto, a palavra obtida neste formato no necessariamente
deixa de pertencer a L
abc
, j que o nmero de bs e cs pode ser maior que o de
as nas palavras desta linguagem. Desta forma, no obtemos uma contradio neste
segundo caso com valores n > 1.
O que salva a situao e nos permite obter a contradio um caso muitas
vezes esquecido do lema do bombeamento. A palavra uv
n
xy
n
z tambm deve
pertencer linguagem quando n = 0, isto , quando v e y so retirados da palavra
original. Este caso do bombeamento informalmente conhecido como bombear
para baixo.
Quando n = 0, o nmero de bs ou de cs diminui, se tornando menor do que
m, ao passo que o nmero de as no alterado e continua sendo m. Assim, neste
caso, uv
n
xy
n
z / L
abc
, quando n = 0.
Desta forma, obtemos uma contradio para os dois casos em que dividimos a
prova. Conclumos, ento, que L
abc
no uma linguagem livre de contexto.
4. Exerccios
(1) Mostre que nenhuma das linguagens abaixo livre de contexto usando o
lema do bombeamento.
4. EXERCCIOS 163
a) a
2
n
: n primo;
b) a
n
2
: n 0;
c) a
n
b
n
c
r
: r n;
d) O conjunto das palavras ema, b, c

que tm o mesmo nmero de as


e bs, e cujo nmero de cs maior ou igual que o de as;
e) 0
n
1
n
0
n
1
n
: n 0;
f) rrr : s (0 1)

;
g) wcwcw : w 0, 1

;
h) 0
n!
: n 1;
i) 0
k
1
k
0
k
: k 0;
j) wct : w uma subpalavra de t e w, t a, b

;
k) O conjunto de todos os palndromos no alfabeto 0, 1 que contm o
mesmo nmero de 0s e 1s.
CAPTULO 11
Autmatos de Pilha
Neste captulo, comeamos a estudar a classe de autmatos que aceita as lin-
guagens livres de contexto: os autmatos de pilha no-determinsticos. Ao contr-
rio dos autmatos nitos, os autmatos de pilha tm uma memria innita. Con-
tudo, o acesso a esta memria feito de maneira extremamente restrita, uma vez
que o ltimo item que foi posto na memria obrigatoriamente o primeiro a ser
consultado.
1. Heurstica
Suponhamos que L uma linguagem livre de contexto em um alfabeto .
Nesta seo consideramos como construir um procedimento que, tendo como en-
trada uma palavra w no alfabeto , determina se w pertence ou no a L. Como
sempre, assumiremos que w lida, um smbolo de cada vez, da esquerda para a
direita.
Nossos procedimentos utilizaro uma memria innita, em forma de pilha.
Para tornar o problema mais concreto, podemos imaginar que esta memria cons-
tituda por discos perfurados ao meio, que so empilhados em uma haste. Os discos
vm em vrias cores e temos um estoque innito deles. Alm disso, a haste pode
ser feita to longa quanto for necessrio.
Para lembrar alguma coisa, enamos discos coloridos na haste. Como os
discos esto trespassados pela haste, s possvel remov-los um a um, comeando
sempre pelo que est mais acima.
EXEMPLO 11.1. Nosso primeiro exemplo a linguagem L
1
formada pelas
palavras no alfabeto a, b, c que so da forma vcv
R
, onde v uma palavra qual-
quer nos as e bs. Por exemplo, as palavras abaacaaba e bbacabb pertencem a L
1
,
mas abcab e abba no pertencem. fcil mostrar que esta linguagem no regular
165
166 11. AUTMATOS DE PILHA
usando o lema do bombeamento; portanto, no existe nenhum autmato nito que
a aceite.
Para poder construir um procedimento que verica se uma dada palavra de
a, b, c pertence ou no a L
1
, precisamos ter uma maneira de lembrar exata-
mente qual a sequncia de as e bs que apareceu antes do c. Comparamos, ento,
esta sequncia com a que vem depois do c.
Faremos isto usando uma pilha e duas cores diferentes de discos: preto e
branco. Procedemos da seguinte forma:
Etapa 1: Se achar a empilhe um disco preto na haste, e se achar b, um disco
branco.
Etapa 2: Se achar c, mude de atitude e prepare-se para desempilhar discos.
Etapa 3: Compare o smbolo que est sendo lido com o que est no topo da
pilha: se l a e o topo da pilha ocupado por um disco preto, ou se l b e
o topo ocupado por um disco branco, desempilhe o disco.
Este procedimento obedece ainda a uma instruo que no foi explicitada acima,
e que diz: se em alguma situao nenhuma das etapas acima puder ser aplicada,
ento pare de executar o procedimento.
Por exemplo, se a palavra dada for w = abcba, o procedimento se comporta
da seguinte maneira:
Acha Faz Pilha Resta na entrada
a empilha disco preto bcba
b empilha disco branco

cba
c muda de atitude

ba
b compara e desempilha a
a compara e desempilha
Observe que a pilha registra os smbolos de w que antecedem o c de baixo para
cima. Os discos da pilha, por sua vez, so comparados, de cima para baixo, com a
1. HEURSTICA 167
parte da palavra que sucede o c. Assim, o reexo da parte da palavra que antecede
o c comparado com a parte da palavra que sucede o c. Portanto, se w L
1
,
ento todos os smbolos de w devem ter sido consumidos e a pilha deve estar vazia
quando o procedimento parar.
Por outro lado, se a palavra no est em L
1
ento podem acontecer duas coi-
sas. A primeira que a entrada no possa ser totalmente consumida por falta de
instrues adequadas. Isto ocorre, por exemplo, quando a entrada cab. A se-
gunda possibilidade que a entrada seja totalmente consumida, mas a pilha no se
esvazie. Este o caso, por exemplo, da entrada aabcba. Conclumos que a entrada
dever ser aceita se, e somente se, ao nal da execuo do procedimento, ela foi
totalmente consumida e a pilha est vazia.
A instruo de parar nos casos omissos faz com que o procedimento descrito
acima seja completamente determinstico. Entretanto, nem sempre possvel criar
um procedimento determinstico deste tipo para testar se uma palavra pertence a
uma dada linguagem livre de contexto.
EXEMPLO 11.2. Considere a linguagem
L
2
= vv
R
: v a, b

,
no alfabeto a, b. Ela livre de contexto. A nica diferena desta linguagem para
L
1
que no h um smbolo especial marcando o meio da palavra. Portanto, se
descobrirmos como identicar o meio da palavra, o resto do procedimento pode
ser igual ao anterior. A sada deixar por conta de quem est executando o pro-
cedimento o nus de adivinhar onde est o meio da palavra. Como somente um
smbolo da palavra visto de cada vez, a deciso acaba tendo que ser aleatria.
Portanto, tudo o que precisamos fazer alterar a etapa 2, que passar a ser:
Nova etapa 2: decida (aleatoriamente) se quer mudar de atitude e passar a
desempilhar os discos.
168 11. AUTMATOS DE PILHA
Observe que, se o procedimento determinar que a palavra dada pertence a L
2
,
ento podemos estar seguros de que isto verdade. Entretanto, como o proce-
dimento no determinstico, uma sada negativa no garante que a palavra no
pertence a L
2
. Podemos apenas ter sido infelizes na nossa escolha de onde estaria
o meio da palavra.
2. Denio e Exemplos
Vamos analisar os elementos utilizados na construo destes procedimentos e,
a partir deles, sistematizar nossa denio de autmato de pilha.
Os elementos mais bvios so: o alfabeto de entrada e a pilha. Entretanto,
em ambos os exemplos temos mudanas de atitude de empilha para compara e
desempilha. Como no caso de autmatos nitos, as atitudes dos autmatos de
pilha sero codicadas nos estados. Com isto, precisamos tambm de um estado
inicial que indica qual a primeira etapa do procedimento. Finalmente, precisamos
de uma funo de transio que nos diz o que fazer com a entrada (e com a pilha!),
e que seja exvel o suciente para codicar procedimentos no-determinsticos.
Comparando a anlise acima com a denio de autmato nito, vericamos
que no foi necessrio mencionar estados nais. Anal, a aceitao de uma en-
trada pelos nossos procedimentos foi determinada pelo fato da entrada ter sido
totalmente consumida e pelo esvaziamento da pilha. Apesar disso, introduziremos
a noo de estado nal em nossa denio formal, porque isto nos d maior exi-
bilidade construo dos autmatos. Sistematizando estas consideraes, obtemos
a seguinte denio.
DEFINIO 11.3. Umautmato de pilha no-determinstico (abreviado como
AP) A uma 6-upla A = (, , Q, q
0
, F, ), onde:
o alfabeto da entrada;
o alfabeto da pilha;
Q um conjunto nito de estados;
q
0
Q o estado inicial;
F Q o conjunto de estados nais e
2. DEFINIO E EXEMPLOS 169
a funo de transio no-determinstica. Esta funo tem o formato
: Q( ) ( ) T
f
(Q

).
isto , para cada tripla formada por um estado do conjunto Q, um sm-
bolo do alfabeto ou o smbolo e um smbolo do alfabeto ou o sm-
bolo , a funo de transio fornece como resposta um conjunto nito
de pares formados por um estado do conjunto Q e uma palavra de

.
H algumas consideraes que precisamos fazer sobre a funo de transio
denida acima. A primeira diz respeito ao seu conjunto de chegada. Se, por analo-
gia com autmatos nitos no-determinsticos, escolhssemos este conjunto como
sendo T(Q

), abriramos a possibilidade de uma quantidade innita de esco-


lhas em uma transio. Isto porque, ao contrrio do que ocorria com autmatos
nitos, o conjunto Q

innito. Para evitar este problema, restringimos o


conjunto de chegada a T
f
(Q

), que o conjunto formado pelos subconjuntos


nitos de Q

.
Voltando nossa ateno agora para o conjunto de partida da funo de tran-
sio, note que toma valores em triplas formadas por um estado, um smbolo
do alfabeto de entrada e um smbolo do alfabeto da pilha. No h nada de muito
surpreendente at a, porque estamos tentando modelar os procedimentos da seo
1, que consultam tanto a entrada quanto a pilha. Entretanto, diante destas conside-
raes, esperaramos que o domnio de fosse Q, contudo, o que de fato
obtemos
Q( ) ( ).
Isto signica que o autmato pode efetuar uma transio sem consultar a entrada
ou sem consultar a pilha, ou ambos. Portanto podemos esperar destes autmatos
um comportamento ainda mais no-determinstico que o dos autmatos nitos.
Para poder enquadrar os procedimentos da seo 1 na estrutura da denio
acima, precisamos saber como interpretar o comportamento da funo de tran-
sio em termos mais concretos. Digamos que M um autmato de pilha no
170 11. AUTMATOS DE PILHA
determinstico cujos elementos obedecem notao adotada na denio acima.
Suponhamos que
q Q, e .
Dados p Q e u

, a condio
(p, u) (q, , ),
signica que se o autmato M est no estado q, lendo o smbolo na entrada, e
tendo no topo da pilha, ento ao consumir :
M muda para o estado p;
M troca por u no topo da pilha (com a conveno de que u empilhado
de forma que seu smbolo mais esquerda que no topo da pilha).
Alm disso, se = temos que a entrada no consultada. J quando = , a
transio efetuada sem que o topo da pilha seja consultado.
Note que M pode trocar o smbolo do topo da pilha por uma palavra inteira.
Em termos da pilha de discos perfurados da seo anterior isto signica que o
disco do alto da pilha pode ser trocado por uma pilha de vrios discos em uma
nica transio.
O fato de u poder ser uma palavra qualquer de

inclui a possibilidade de
u ser . Mas o que signica trocar por no topo da pilha? Como no tem
smbolos, retiramos e no pusemos nada no seu lugar. Portanto, foi apenas
removido da pilha.
Vale a pena enumerar os vrios casos em que aparece para no deixar dvidas
quanto interpretao correta de cada um:
2. DEFINIO E EXEMPLOS 171
Caso Interpretao
= a entrada no consultada
= o topo da pilha no consultado
= = nem a entrada, nem o topo da pilha so consultados
,= e u = remove da pilha
= e u ,= empilha u
= e u = no altera a pilha
O que vimos j suciente para que possamos adaptar os procedimentos da
seo 1 ao modelo de autmato de pilha no-determinstico.
EXEMPLO 11.4. Analisando o procedimento que aceita a linguagem L
1
, ve-
mos que h apenas uma mudana de atitude, que corresponde passagem de em-
pilha para desempilha. Isto signica que o autmato de pilha /
1
que desejamos
construir deve ter dois estados, digamos q
1
e q
2
.
No primeiro estado, /
1
pe um smbolo diferente na pilha para cada a ou b
encontrado na entrada. Para facilitar, podemos imaginar que o alfabeto da pilha
a, b. Assim, para cada a achado na entrada, o autmato acrescenta um a no topo
da pilha; e para cada b da entrada, um b acrescentado ao topo da pilha. Temos
assim as duas transies
(q
1
, a, ) = (q
1
, a),
(q
1
, b, ) = (q
1
, b).
Note o indicando que um smbolo empilhado, no importando o que esteja no
topo da pilha.
Por outro lado, ao achar um c na entrada /
1
muda de atitude, preparando-se
para passar a desempilhar. Como esta mudana de atitude ocorre sem que nada
seja feito pilha, temos a transio
(q
1
, c, ) = (q
2
, ).
172 11. AUTMATOS DE PILHA
J no estado q
2
, o autmato passa a comparar o smbolo da entrada com o que
est no topo da pilha. Se os smbolos na entrada e na pilha coincidem, o autmato
remove o smbolo que est no topo da pilha. Portanto,
(q
2
, a, a) = (q
2
, ),
(q
2
, b, b) = (q
2
, ).
Para completar a descrio de /
1
precisamos ainda decidir sobre seu estado
inicial e seus estados nais. No h problema quanto ao estado inicial que, clara-
mente, deve ser q
1
. E quanto aos estados nais? De acordo com a denio do
procedimento em 1, uma palavra aceita quando for inteiramente consumida e a
pilha estiver vazia. Mas isso s pode acontecer quando o estado nal for q
2
. Como
razovel esperar que, se o autmato aceita a entrada, ento parou em um estado
nal, vamos declarar q
2
como sendo nal.
A descrio do autmato acima seria, sem dvida, mais fcil de interpretar
se tivssemos uma maneira mais compacta de descrever as transies. Como no
caso dos autmatos nitos, faremos isto usando uma tabela que, alm da palavra
de entrada e do estado, registrar o que o autmato faz pilha.
Suponhamos que temos um autmato de pilha e que q, p
1
, . . . , p
s
so esta-
dos, um smbolo do alfabeto de entrada, um smbolo do alfabeto da pilha e
u
1
, . . . , u
s
palavras no alfabeto da pilha. Uma transio
(q, , ) = (p
1
, u
1
), . . . , (p
s
, u
s
),
corresponder a uma entrada da seguinte forma na tabela:
estado entrada topo da pilha transies
q (p
1
, u
1
)
.
.
.
(p
s
, u
s
)
2. DEFINIO E EXEMPLOS 173
Observe que os diferentes pares (estado, smbolo da pilha) de uma mesma tran-
sio so listados um sobre o outro sem uma linha divisria. As linhas horizontais
da tabela separaro transies distintas uma da outra. Em muitos casos conveni-
ente acrescentar a este modelo bsico de tabela uma quinta coluna comcomentrios
sobre o que o autmato est fazendo naquela transio. claro que estes comen-
trios no fazem parte da descrio formal do autmato de pilha, eles apenas nos
ajudam a entender como ele se comporta.
EXEMPLO 11.5. Utilizando esta notao, a tabela do autmato /
1
se-
guinte:
estado entrada topo da pilha transies comentrios
q
1
a (q
1
, a) acha a e empilha a
q
1
b (q
1
, b) acha b e empilha b
q
1
c (q
2
, ) acha c e muda de estado
q
2
a a (q
2
, ) acha a na entrada e pilha
e o desempilha
q
2
b b (q
2
, ) acha b na entrada e pilha
e o desempilha
EXEMPLO 11.6. No caso da linguagem L
2
da seo 1, o procedimento que
criamos era no-determinstico. Por isso, para model-lo como um autmato de
pilha precisamos dar ao autmato a capacidade de, a qualquer momento, alterar
o seu comportamento, deixando de empilhar e passando a desempilhar. Assim,
enquanto est no estado q
1
o autmato pode ter duas atitudes:
Primeira: vericar qual o smbolo de entrada e acrescentar o smbolo
correspondente ao topo da pilha; ou
Segunda: ignorar a entrada e a pilha, mudar de estado e passar a desempi-
lhar.
174 11. AUTMATOS DE PILHA
Levando em conta estas consideraes, obtemos um autmato de pilha /
2
que
tem a, b como alfabeto de entrada e da pilha; estados q
1
e q
2
; estado inicial q
1
,
estado nal q
2
e funo de transio dada por:
estado entrada topo da pilha transies comentrios
q
1
a (q
1
, a) acha a e empilha a
q
1
b (q
1
, b) acha b e empilha b
q
1
(q
2
, ) muda de estado
q
2
a a (q
2
, ) acha a na entrada e pilha
e o desempilha
q
2
b b (q
2
, ) acha b na entrada e pilha
e o desempilha
Observe que vale para a tabela a ressalva feita para os procedimentos na seo
1. Isto , se surgir uma situao que leve a uma transio que no esteja especi-
cada na tabela, ento o autmato para de se mover. Alis, o mesmo valia para os
autmatos nitos no-determinsticos.
3. Computando e Aceitando
Apesar de j termos uma descrio formal dos autmatos de pilha, ainda pre-
cisamos denir de maneira precisa o que signica um autmato de pilha aceitar
uma linguagem. Faremos isto adaptando as noes correspondentes da teoria de
autmatos nitos.
DEFINIO 11.7. Seja M um autmato de pilha cujos elementos so dados
pelo vetor (, , Q, q
0
, F, ). Uma congurao de M um elemento de Q

; ou seja, uma tripla (q, w, u) onde


q um estado de M;
w uma palavra no alfabeto de entrada;
u uma palavra no alfabeto da pilha.
3. COMPUTANDO E ACEITANDO 175
Por uma questo de coerncia com a maneira como a palavra w lida, listamos
os elementos da pilha em u de modo que o topo da pilha corresponda ao smbolo
mais esquerda de u.
Como ocorreu com os autmatos nitos, a nalidade desta denio permitir
que possamos acompanhar de maneira simples o comportamento de M com uma
dada entrada. Portanto, esta denio s faz sentido quando vem conjugada
relao congurao seguinte.
DEFINIO 11.8. Suponhamos que C = (q, w, u) uma congurao de
M, onde , . Dizemos que C

= (q

, w, vu) uma das


conguraes seguintes a C se
(q

, v) (q, , ).
Neste caso, escrevemos C C

.
DEFINIO 11.9. Uma computao de M uma sequncia de conguraes
C
0
, , C
k
tais que C
i+1
uma das conguraes seguintes a C
i
. Frequentemente
abreviaremos a computao acima na forma C
0

C
k
.
Como no caso de autmatos nitos, convencionaremos que se C uma con-
gurao, ento C

C. Note, contudo, que C

C no equivalente a uma
transio com entrada vazia. Por exemplo, o autmato /
2
satisfaz
(q
1
, , ) (q
2
, , ).
Mas, apesar da entrada e da pilha no terem sido alteradas, as conguraes inicial
e nal no coincidem.
Vejamos estas denies em ao em alguns exemplos.
176 11. AUTMATOS DE PILHA
EXEMPLO 11.10. Partindo da congurao (q
1
, abcba
2
, a), temos a seguinte
computao no autmato /
1
da seo 2:
(q
1
, abcba
2
, a) (q
1
, bcba
2
, a
2
) (q
1
, cba
2
, ba
2
) (q
2
, ba
2
, ba
2
)
(q
2
, a
2
, a
2
) (q
2
, a, a) (q
2
, , ).
Esta , essencialmente, a nica computao possvel partindo de (q
1
, abcb a
2
, a). A
nica coisa que podemos fazer para obter uma computao diferente interromper
a computao acima antes de chegar a (q
2
, , ). Entretanto, isto est longe de ser
sempre verdade, como mostra o exemplo seguinte.
EXEMPLO 11.11. Desta vez queremos considerar o autmato de pilha /
2
denido ao nal da seo 2. Digamos que a congurao inicial seja (q
1
, a
2
b, ).
Uma computao possvel
(q
1
, a
2
b, ) (q
1
, ab, a) (q
1
, b, a
2
) (q
2
, b, a
2
).
Mas h muitas outras possibilidades, como:
(q
1
, a
2
b, ) (q
2
, a
2
b, )
ou ainda
(q
1
, a
2
b, ) (q
1
, ab, a) (q
2
, ab, a).
A diferena que o primeiro autmato era basicamente determinstico, ao passo
que este ltimo claramente no-determinstico.
DEFINIO 11.12. Supondo, como antes, que M um autmato de pilha
cujos elementos so dados pelo vetor (, , Q, q
0
, F, ), diremos que uma palavra
w

aceita por M se existe uma computao


(q
1
, w, )

(p, , ),
onde p um estado nal de M. Como j ocorria no caso de autmatos nitos no-
determinsticos, basta que exista uma computao como acima para que a palavra
4. VARIAES EM UM TEMA 177
seja aceita. A linguagem L(M) aceita por M o conjunto de todas as palavras
que M aceita.
Em geral no fcil determinar por simples inspeo qual a linguagem aceita
por um autmato de pilha no determinstico dado. Contudo, veremos no prximo
captulo que possvel construir uma gramtica livre de contexto que gere L(M)
diretamente da descrio de M.
Observe que trs condies precisam ser simultaneamente satisfeitas para que
possamos armar, ao nal de uma computao, que M aceita w:
(1) a palavra w tem que ter sido completamente consumida;
(2) a pilha tem que estar vazia;
(3) o autmato tem que ter atingido um estado nal.
A condio referente ao estado nal no aparece na descrio dos procedimentos
na seo 1. De fato, ela surgiu na denio formal de autmato de pilha sob a pa
justicativa de que seria razovel exigir que o autmato parasse aceitando num
estado nal!
Como sempre acontece, a exigncia de que o autmato tenha que atingir um
estado nal para que a entrada seja aceita simplica a construo de alguns aut-
matos e complica a de outros. A verdade que teria sido possvel suprimir toda
meno a estados nais, embora isto no seja desejvel do ponto de vista do de-
senvolvimento da teoria.
4. Variaes em um Tema
Nesta seo, discutimos a construo de autmatos de pilha para trs lingua-
gens denidas de maneira muito semelhante. Com isto, teremos a oportunidade de
chamar a ateno para algumas diculdades comuns; alm de desenvolver tcnicas
simples, mas teis, na construo de autmatos mais sosticados.
EXEMPLO 11.13. Consideremos, em primeiro lugar, a linguagem livre de
contexto
L = a
i
b
i
: i 0,
178 11. AUTMATOS DE PILHA
fcil descrever um procedimento extremamente simples que usa uma pilha com
apenas um tipo de disco para aceitar as palavras de L:
Etapa 1: Se achar um a na entrada, ponha um disco na pilha.
Etapa 2: Se achar um b na entrada mude de atitude e passe a comparar a
entrada com a pilha, removendo um disco da pilha para cada b que achar
na entrada (incluindo o primeiro!).
Para precisar o comportamento do autmato de maneira a no deixar dvida sobre
o que ele realmente faz, basta construir sua tabela de transio.
estado entrada topo da pilha transies comentrios
q
1
a (q
1
, a) empilha a
q
1
b a (q
2
, ) desempilha a
e muda de estado
q
2
b a (q
2
, ) desempilha a
claro que queremos que q
1
seja o estado inicial, mas precisamos tomar cui-
dado com a escolha dos estados nais. A primeira impresso talvez seja que q
2

o nico estado nal. Entretanto, o autmato s pode alcanar q
2
se houver algum
smbolo na entrada, o que faria com que o autmato no aceitasse .
H duas solues possveis. A primeira declarar que q
1
tambm um estado
nal. Isto com certeza faz com que seja aceita. Porm, precisamos nos certicar
de que a incluso de q
1
entre os estados nais no cria novas palavras aceitas que
no pertencem a L. Fazemos isto analisando em detalhes o comportamento do
autmato. Suponhamos, ento, que ,= w a, b

e que o autmato recebe w


como entrada. Temos que:
se w comea por b ento nenhum de seus smbolos consumido;
se w comea por a ento os as so empilhados e para desempilh-los
preciso chegar ao estado q
2
.
4. VARIAES EM UM TEMA 179
No primeiro caso a palavra no ser aceita; no segundo, s ser aceita se os as so
seguidos pelo mesmo nmero de bs e nada mais. Ou seja, se declaramos que os
estados nais so q
1
, q
2
ento o autmato resultante aceita L.
A segunda possibilidade alterar as transies e dar ao autmato a alternativa
de, sem consultar a entrada ou a pilha, mudar de estado de q
1
para q
2
. Neste caso,
o nico estado nal q
2
. Alm disso, a transio que vamos acrescentar torna
completamente redundante a terceira linha da tabela acima. A tabela que descreve
a funo de transio do autmato passa, ento, a ser:
estado entrada topo da pilha transies comentrios
q
1
(q
2
, ) muda de estado
q
1
a (q
1
, a) empilha a
q
2
b a (q
2
, ) desempilha a
O problema com esta ltima estratgia que a transio que acrescentamos
pode ser executada enquanto o autmato est no estado q
1
, no importando o que
est sendo lido, nem o que h na pilha. Para ter certeza que tudo ocorre como
esperado, devemos analisar o que o autmato faria se usasse esta transio no
momento errado. Em primeiro lugar, se o autmato est no estado q
1
ento ele
no pode se mover ao ler b, a no ser que ignore a entrada e mude para o estado q
2
.
Portanto, o autmato se comportar de maneira anmala apenas se ainda estiver
lendo a e executar a transio que permite mudar de estado sem afetar a entrada
nem a pilha. Neste caso ainda haveria as a serem lidos. Como o autmato no
se move se est no estado q
2
e l a, ento a computao simplesmente para. A
concluso que o autmato continua aceitando o que devia apesar da alterao na
tabela de transio.
EXEMPLO 11.14. A linguagem deste segundo exemplo uma generalizao
da que aparece no primeiro. Seja L a linguagem formada pelas palavras w a, b
para as quais o nmero de as e bs o mesmo. Assim, abaaabbabb L, mas
aaabaa / L. Observe que a linguagem do exemplo anterior est contida em L.
180 11. AUTMATOS DE PILHA
primeira vista, podemos construir um autmato de pilha que aceite L usando
a mesma estratgia do Exemplo 1. Isto , quando achamos a empilhamos a e
quando achamos um b desempilhamos um a. O problema o que fazer quando nos
deparamos com uma palavra como abba. Neste caso comearamos empilhando
um a, mas em seguida teramos de desempilhar dois as. S que h apenas um a na
pilha: como seria possvel desempilhar mais as do que h na pilha?
A estratgia que vamos adotar consiste em construir um contador que:
ao achar a soma 1 ao contador;
ao achar b soma 1 ao contador.
Poderamos fazer isto usando 1, 1 como alfabeto da pilha, entretanto, palavras
como 1 1 esto demasiadamente sujeitas a causar confuso. Por isso, vamos
simplesmente empilhar a para cada a encontrado na entrada, e b para cada b en-
contrado na entrada. S precisamos lembrar que empilhar um b sobre um a tem
o efeito de desempilhar o b da pilha, e vice-versa.
O que ocorre quando aplicamos esta estratgia palavra abba? O primeiro a
contribui um a para a pilha, que por sua vez removido pelo b seguinte. Portanto,
depois de ler o prexo ab o autmato est com a pilha vazia. Em seguida, aparece
um b e o autmato pe um b na pilha. Este b seguido por um a. Portanto teramos
que acrescentar um a no topo da pilha. Mas isto tem o efeito de desempilhar o b
anterior, e a pilha acaba vazia, como desejado.
Parece fcil transcrever esta estratgia em uma tabela de transio, mas ainda
h um obstculo a vencer antes de podermos fazer isto. Anal, para que esta es-
tratgia funcione o autmato precisa ser capaz de detectar que a pilha est vazia.
Entretanto, escrever para o topo da pilha em uma tabela de transio no signica
que a pilha est vazia; signica apenas que o autmato no precisa saber o que est
no topo da pilha ao realizar esta transio.
A sada inventar um novo smbolo para o alfabeto da pilha. Este smbolo
acrescentado pilha ainda vazia, no incio da computao. Da em diante, o
autmato opera apenas com as e bs na pilha. Assim, ao avistar no topo da pilha o
autmato sabe que a pilha no contm mais nenhum a ou b. Para garantir que s
4. VARIAES EM UM TEMA 181
vai ser usado uma vez, convm reservar ao estado inicial apenas a ao de marcar
o fundo da pilha. Portanto, se q
1
for o estado inicial teremos
(q
1
, , ) = (q
2
, ).
Ao nal desta transio, a entrada no foi alterada, o fundo da pilha foi marcado e o
autmato saiu do estado q
1
para onde no vai poder mais voltar. O que o autmato
deve fazer no estado q
2
est descrito resumidamente na seguinte tabela:
Acha na entrada Acha na pilha Faz
a ou a empilha a
b ou b empilha b
b a desempilha a
a b desempilha b
Com isto, se, ao nal da computao, a pilha contm apenas o marcador
ento a palavra est em L e aceita; do contrrio a palavra rejeitada. Entretanto,
pela denio formal, dada na seo 3, o autmato s pode aceitar a palavra se
a pilha estiver completamente vazia. Isto sugere que precisamos de mais uma
transio para remover o do fundo da pilha.
Com isto, surge um novo problema. Se a palavra est em L, ento ser total-
mente consumida deixando na pilha apenas . Portanto, a transio que remove o
ao nal desta computao, e esvazia completamente a pilha, no tem nenhuma
entrada para consultar. O problema que se permitimos ao autmato remover
sem consultar a entrada, ele pode realizar este movimento no momento errado,
antes que a entrada tenha sido consumida. Como os nossos autmatos so no-
determinsticos, isto no apresenta nenhum problema conceitual.
Infelizmente, o fato de ainda haver smbolos na entrada abre a possibilidade do
autmato continuar a computao depois de ter retirado o marcador do fundo. Para
evitar isto, o autmato deve, ao remover , passar a um novo estado q
3
a partir do
qual no h transies. Assim, se o autmato decidir remover o marcador antes da
entrada ser totalmente consumida ele ser obrigado a parar, e no poder aceitar a
182 11. AUTMATOS DE PILHA
entrada nesta computao. Como a pilha s vai poder se esvaziar em q
3
, claro
que este ser o nico estado nal deste autmato.
Resumindo, temos um autmato que tem a, b como alfabeto de entrada e
da pilha; estados q
1
, q
2
e q
3
; estado inicial q
1
; estado nal q
3
; e cuja funo de
transio denida na tabela 1.
estado entrada topo da pilha transies comentrios
q
1
(q
2
, ) marca o fundo da pilha
q
2
a (q
2
, a) acha a e empilha um a
q
2
b (q
2
, b) acha b e empilha um b
q
2
a a (q
2
, aa) acha a e empilha um a
q
2
b b (q
2
, bb) acha b e empilha um b
q
2
b a (q
2
, ) desempilha um a
q
2
a b (q
2
, ) desempilha um b
q
2
(q
3
, ) esvazia a pilha
TABELA 1
EXEMPLO 11.15. A terceira linguagem que desejamos considerar o con-
junto das palavras w a, b que tm mais as que bs. Vamos cham-la de L
3
.
primeira vista, pode parecer que autmato essencialmente igual ao anterior,
bastando alterar a condio sob a qual a palavra aceita. Anal, se ao nal da
computao do autmato do Exemplo 2 sobram as na pilha, ento a palavra de en-
trada tem mais as que bs. Mas surgem alguns problemas tcnicos quando tentamos
implementar esta estratgia.
A primeira diculdade que no temos como codicar nas transies o fato
de no haver mais smbolos na entrada. A sada permitir que o autmato tente
adivinhar isto por conta prpria. Assim, ao achar um a na pilha, o autmato deve
poder decidir que a computao chegou ao m e, sem consultar a entrada, passar a
um estado nal. Naturalmente uma palavra no ser aceita se a deciso de aplicar
esta transio for tomada antes que a entrada tenha sido completamente consumida.
A segunda diculdade que estamos identicando que uma palavra est em
L
3
porque sobram as na pilha. Entretanto, um dos requisitos para que uma palavra
seja aceita por um autmato de pilha que no sobrem smbolos na pilha ao nal
4. VARIAES EM UM TEMA 183
da computao! Resolvemos este conito fazendo com que, ao chegar ao estado
nal, o autmato possa esvaziar a pilha sem se preocupar com a entrada.
Tomando por base o autmato do Exemplo 2, teremos que substituir a transio
codicada na ltima linha da tabela, e acrescentar as trs transies que permitem
ao autmato esvaziar a pilha. O autmato resultante ter alfabetos de entrada e da
pilha iguais a a, b; estados q
1
, q
2
e q
3
; estado inicial q
1
; estado nal q
3
; e sua
funo de transio ser dada na tabela 2.
estado entrada topo da pilha transies comentrios
q
1
(q
2
, ) marca o fundo da pilha
q
2
a (q
2
, a) empilha um a
q
2
b (q
2
, b) empilha um b
q
2
a a (q
2
, aa) empilha um a
q
2
b b (q
2
, bb) empilha um b
q
2
b a (q
2
, ) desempilha um a
q
2
a b (q
2
, ) desempilha um b
q
2
a (q
3
, a) decide que a computao acabou
com as sobrando na pilha
q
3
a (q
3
, ) retira a da pilha
q
3
b (q
3
, ) retira b da pilha
q
3
(q
3
, ) retira da pilha
TABELA 2
EXEMPLO 11.16. Neste exemplo, construmos um autmato de pilha no-
determinstico que aceita o complemento da linguagem
L = ww
R
: w (0 1)

.
O autmato tem alfabeto de entrada 0, 1, alfabeto da pilha , 0, 1, con-
junto de estados q
1
, . . . , q
4
, estado inicial q
1
, estado nal q
4
e a seguinte tabela
de transio:
184 11. AUTMATOS DE PILHA
estado entrada topo da pilha transies comentrios
q
1
(q
2
, ) marca o fundo da pilha
q
2
0 (q
2
, 0) empilha 0
q
2
1 (q
2
, 1) empilha 1
q
2
(q
3
, ) tenta adivinhar o meio
da entrada (palavras de
comprimento par)
q
2
0 (q
4
, ) tenta adivinhar o smbolo central
da entrada (palavras de
comprimento mpar)
q
2
1 (q
4
, ) tenta adivinhar o smbolo central
da entrada (palavras de
comprimento mpar)
q
3
0 0 (q
3
, ) desempilha 0s casados
q
3
1 1 (q
3
, ) desempilha 1s casados
q
3
0 1 (q
4
, ) acha smbolo descasado
q
3
1 0 (q
4
, ) acha smbolo descasado
q
4
0 0 (q
4
, ) continua a desempilhar
q
4
0 1 (q
4
, ) continua a desempilhar
q
4
1 0 (q
4
, ) continua a desempilhar
q
4
1 1 (q
4
, ) continua a desempilhar
q
4
(q
4
, ) esvazia a pilha
4. VARIAES EM UM TEMA 185
Precisamos considerar dois casos de palavras que no pertencem a L: todas as
palavras de comprimento mpar e as palavras de comprimento par que no apre-
sentam o padro ww
R
.
No caso das palavras de comprimento mpar, depois de marcar o fundo da
pilha, o autmato empilha 0s e 1s at decidir, de maneira no-determinstica, que o
smbolo central da palavra de entrada foi encontrado. Ento, muda de estado para
q
4
e passa a desempilhar. Precisamos fazer isto para ter certeza de que o autmato
adivinhou o smbolo central da palavra corretamente e que a palavra realmente tem
comprimento mpar. Se no sobrarem nem 0s, nem 1s na pilha, o autmato remove
o marcador do fundo e esvazia a pilha.
No caso das palavras de comprimento par, depois de marcar o fundo da pilha,
o autmato empilha 0s e 1s at decidir, de maneira no-determinstica, que o meio
da palavra de entrada foi encontrado. Ento, muda de estado para q
3
e passa a
desempilhar em busca de um smbolo da pilha que no corresponda ao que est
vendo na entrada. Ao achar um tal smbolo o autmato muda para o estado nal
q
4
e esvazia a pilha, comparando-a smbolo a smbolo com a entrada. Precisamos
fazer isto para ter certeza de que o autmato adivinhou o meio da palavra correta-
mente e que a palavra no apresenta o padro ww
R
(falha na correspondncia em
q
3
). Se no sobrarem nem 0s, nem 1s na pilha, o autmato remove o marcador do
fundo e esvazia a pilha.
Note que, se o autmato adivinhar incorretamente o meio da palavra ou o sm-
bolo central, ento sobraro smbolos na entrada (se adivinhar cedo demais) ou na
pilha (se adivinhar tarde demais). Em nenhum destes casos a palavra ser aceita.
Finalmente, se a palavra da entrada estiver em L, isto , apresentar o padro
ww
R
, e se o autmato adivinhar corretamente onde est o meio da palavra, ento
a entrada ser consumida e todos os 0s e 1s sero removidos da pilha. Entretanto,
como o autmato continua no estado q
3
, j que no encontra nenhuma falha de
correspondncia, o marcador do fundo da pilha no removido, de modo que a
pilha no ser esvaziada e a palavra no ser aceita.
186 11. AUTMATOS DE PILHA
5. Exerccios
(1) Considere o autmato de pilha no-determinstico /com alfabetos =
a, b e = a, estados q
1
e q
2
, estado inicial q
1
e nal q
2
e transies
dadas pela tabela:
estado entrada topo da pilha transies
q
1
a (q
1
, a)
(q
2
, )
q
1
b (q
1
, a)
q
2
a a (q
2
, )
q
2
b a (q
2
, )
a) Descreva todas as possveis sequncias de transies de /na entrada
aba.
b) Mostre que aba, aa e abb no pertencem a L(/) e que baa, bab e
baaaa pertencem a L(/).
c) Descreva a linguagem aceita por /em portugus.
(2) Ache um autmato de pilha no-determinstico cuja linguagem aceita L
onde:
a) L = a
n
b
n+1
: n 0;
b) L = a
n
b
2n
: n 0;
c) L = w a, b

: o nmero de as diferente do de bs;


d) L = a
n
b
m
: m, n 0 e m ,= n;
e) L = w
1
cw
2
: w
1
, w
2
a, b

e w
1
,= w
r
2
;
(3) Um autmato nito no-determinstico que aceita a linguagem denotada
por 0 0

1 0 no pode ter menos de 4 estados. Construa um autmato de


pilha no-determinstico com apenas 2 estados que aceita esta linguagem.
(4) Considere a linguagem dos parnteses balanceados, isto , a linguagem
das palavras formadas pelos smbolos ( e ) tais que, se w uma pala-
vra desta linguagem, ento a quantidade total de smbolos ( igual
5. EXERCCIOS 187
quantidade total de smbolos ) em w e, se w pode ser decomposta como
w = w

, ento a quantidade total de smbolos ( maior ou igual


quantidade total de smbolos ) em w

.
a) D exemplo de uma gramtica livre de contexto que gere esta lingua-
gem.
b) D exemplo de um autmato de pilha no-determinstico que aceita
esta linguagem.
(5) Esta questo trata da existncia ou inexistncia de computaes innitas.
a) Explique porque um autmato nito determinstico no admite uma
computao com um nmero innito de etapas.
b) D exemplo de um autmato de pilha no determinstico que admite
uma computao com um nmero innito de etapas.
(6) Seja M um autmato de pilha. Mostre como denir a partir de M um
novo autmato de pilha M
s
que aceita a mesma linguagem que M e que,
alm disso, satisfaz s seguintes condies:
a) a nica transio de M
s
a partir do seu estado inicial i (i, , )
= (q, ), onde q um estado, um smbolo do alfabeto da pilha e
a funo de transio de /
s
;
b) o nico estado de M
s
a partir do qual h transies sem consultar a
pilha i;
c) M
s
tem um nico estado nal f;
d) as transies que desempilham levam o autmato ao estado f;
e) no h transies a partir de f.
(7) Seja M um autmato de pilha no-determinstico com alfabeto de entrada
, estado inicial q
1
e conjunto de estados Q. A linguagem que M aceita
por pilha vazia denida como:
N(M) = w

: existe (q
1
, w, )

(q, , ) onde q Q.
Note que a diferena entre L(M) e N(M) que, para a palavra ser aceita
em L(M) tem que ser possvel chegar a uma congurao (q, , ) em
188 11. AUTMATOS DE PILHA
que q um estado nal, ao passo que no h restries sobre o estado no
caso de N(M).
a) D exemplo de um autmato de pilha no-determinstico M para o
qual N(M) ,= L(M).
b) Mostre que, dado um autmato de pilha no determinstico M, existe
umautmato de pilha no determinstico M

tal que L(M) = N(M

).
c) Mostre que dado um autmato de pilha no determinstico M existe
umautmato de pilha no determinstico M

tal que N(M) = L(M

).
SUGESTO: use o autmato M
s
construdo no exerccio anterior.
CAPTULO 12
Relao entre Gramticas Livres de Contexto e Autmatos
de Pilha
Nosso objetivo neste captulo dar uma demonstrao do seguinte resultado
fundamental.
TEOREMA 12.1. Uma linguagem livre de contexto se, e somente se, aceita
por algum autmato de pilha no-determinstico.
Como uma linguagem livre de contexto se for gerada por uma gramtica livre
de contexto, o que precisamos fazer estabelecer um elo entre gramticas livres de
contexto e autmatos de pilha.
J temos alguma experincia com este tipo de questo. De fato, provamos que
uma linguagem gerada por uma gramtica linear direita regular construindo
um autmato nito cujas computaes simulam derivaes na gramtica dada. No
caso de linguagens livres de contexto, a correspondncia ser entre computaes
no autmato de pilha e derivaes mais esquerda na gramtica.
Como no caso das linguagens regulares, o problema pode ser dividido em dois.
Assim, dada uma gramtica livre de contexto G precisamos de uma receita para
construir um autmato de pilha no-determinstico que aceite L(G). Reciproca-
mente, dado um autmato de pilha / queremos construir uma gramtica livre de
contexto que gere a linguagem aceita por /.
1. O Autmato de Pilha de uma Gramtica
Seja G uma gramtica livre de contexto. Nosso objetivo nesta seo consiste
em construir um autmato de pilha cujas computaes simulem as derivaes
esquerda em G. claro que a pilha tem que desempenhar um papel fundamental
nesta simulao. O que de fato acontece que o papel dos estados secundrio, e
189
190 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
a simulao se d na pilha. Dizendo de outra maneira, construiremos um autmato
de pilha que simula na pilha as derivaes mais esquerda em G.
Digamos que a gramtica livre de contexto G denida pela qudrupla de
elementos (T, V, S, R), e seja / o autmato de pilha a ser construdo a partir de
G. Como /deve aceitar L(G), claro que seu alfabeto de entrada tem que ser T.
Chamaremos a funo de transio de /de e seu estado inicial de i.
A maneira mais concreta de pr em prtica a ideia delineada acima consiste
em escolher o alfabeto da pilha como sendo T V , e fazer corresponder a cada
derivao em um passo de G uma transio do autmato. Entretanto, como a
derivao de palavras de L(G) feita a partir do smbolo inicial S, o autmato
deve comear pondo este smbolo no fundo da pilha. Observe que o autmato no
pode consumir entrada ao marcar o fundo da pilha, j que precisamos da entrada
para gui-lo na busca da derivao correta. Nem adianta consultar a pilha, j que
ainda est totalmente vazia. Entretanto, uma transio que no consulta a entrada
nem a pilha pode ser executada em qualquer momento da computao. Por isso
foramos o autmato a mudar de estado depois desta transio, impedindo assim
que volte a ser executada. Temos, ento, que
(i, , ) = (f, S),
onde f um estado do autmato diferente de i.
Da em diante toda a ao vai se processar na pilha, e podemos simular a
derivao sem nenhuma mudana de estado adicional. Portanto, f ser o estado
nal de /. Assim, regra X de G fazemos corresponder a transio
(1.1) (f, , ) (f, X)
de /. Contudo, a construo do autmato ainda no est completa. O problema
que /s pode aplicar uma transio como (1.1) se a varivel X estiver no topo
da pilha. Infelizmente isto nem sempre acontece, como ilustra o exemplo a seguir.
1. O AUTMATO DE PILHA DE UMA GRAMTICA 191
EXEMPLO 12.2. Suponhamos que G
1
a gramtica com terminais a, b, c,
varivel S, smbolo inicial S, e regras
S Sc [aSb [ .
De acordo com a discusso acima o autmato /
1
correspondente a G
1
deve ter
a, b, c como alfabeto de entrada, a, b, c, S como alfabeto da pilha e conjunto
de estados i, f, onde i o estado inicial e f o estado nal. Lembrando que
a cada regra de G
1
deve corresponder uma transio de /
1
, conclumos que a
tabela resultante deve ser
Estado Entrada Topo da pilha Transio
i (f, S)
f S (f, Sc)
(f, aSb)
(f, )
A palavra abc
2
tem derivao mais esquerda
S Sc Sc
2
aSbc
2
abc
2
em G
1
. Resta-nos vericar se somos capazes, ao menos neste exemplo, de cons-
truir uma computao de /
1
que copie na pilha esta derivao de abc
2
. A compu-
tao deve comear marcando o fundo da pilha com S e deve prosseguir, a partir
da, executando, uma a uma, as transies de /
1
que correspondem s regras
aplicadas na derivao acima. Isto nos d
(1.2)
(i, abc
2
, ) (f, abc
2
, S) (f, abc
2
, Sc) (f, abc
2
, Sc
2
) (f, abc
2
, aSbc
2
).
At aqui tudo bem, mas a transio seguinte deveria substituir S por . S que
para isto ser possvel a varivel S tem que estar no topo da pilha, o que no acon-
tece neste caso. Observe, contudo, que o a que apareceu na pilha acima do S na
192 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
ltima congurao de (1.2) corresponde ao primeiro smbolo da palavra de en-
trada. Alm disso, como se trata de uma derivao mais esquerda, este smbolo
no ser mais alterado. Conclumos que, como o primeiro smbolo da palavra j
foi corretamente derivado, podemos esquec-lo e partir para o smbolo seguinte.
Para implementar isto na prtica, basta apagar da pilha os terminais que precedem
a varivel mais esquerda da pilha e que j foram corretamente construdos. Isto
signica acrescentar tabela acima transies que permitam apagar terminais que
apaream simultaneamente na entrada e na pilha:
Estado Entrada Topo da pilha Transio
f a a (f, )
f b b (f, )
f c c (f, )
Levando isto em conta a computao acima continua, a partir da ltima con-
gurao de (1.2) da seguinte maneira
(1.3)
(f, abc
2
, aSbc
2
) (f, bc
2
, Sbc
2
) (f, bc
2
, bc
2
) (f, c
2
, c
2
) (f, c, c) (f, , ).
Observe que a passagem da segunda para a terceira congurao em (1.3) corres-
ponde regra S . Todas as outras etapas so aplicaes das transies da
segunda tabela.
2. A Receita e Mais um Exemplo
Podemos agora descrever de maneira sistemtica a receita usada para construir
um autmato de pilha no-determinstico / cuja linguagem aceita L(G). Se a
gramtica livre de contexto G tem por elementos (T, V, S, R), ento o autmato
car completamente determinado pelos seguintes os elementos:
o alfabeto de entrada T;
o alfabeto da pilha T V ;
o conjunto de estados i, f;
o estado inicial i;
2. A RECEITA E MAIS UM EXEMPLO 193
o conjunto de estados nais f;
a funo de transio
: i, f (T ) (T V ) i, f (T V )

que denida por


(q, , ) =
_

_
(f, S) se q = i e = =
(f, u) : onde X u regra de G se q = f e = X V
(f, ) se q = f e = T
Este autmato executa dois tipos diferentes de transio a partir do estado f.
As primeiras permitemsubstituir uma varivel X no topo da pilha por u (TV )

quando X u uma regra se G, e sero chamadas substituies. As segundas


permitem remover terminais que aparecem casados na pilha e na entrada, e vamos
cham-las remoes. Observe que, em geral, este autmato ter um comporta-
mento muito pouco determinstico porque cada uma de suas transio corresponde
ao conjunto de todas as regras que tm uma mesma varivel do lado esquerdo.
Vejamos mais um exemplo de autmato de pilha construdo a partir de uma
gramtica livre de contexto pela receita acima.
EXEMPLO 12.3. Considere a gramtica G

exp
, denida anteriormente, cujas
regras so
E E + T [ T
T T F [ F
F (E) [ id.
O alfabeto de entrada do autmato de pilha /

exp
correspondente a esta gram-
tica id, +, , (, ), o alfabeto da pilha id, +, , (, ), E, T, F, os estados so
194 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
i, f, o estado inicial i, o estado nal f e a funo de transio denida pela
tabela 1.
Estado Entrada Topo da pilha Transio
i (f, S)
f E (f, E + T)
(f, T)
f T (f, T F)
(f, F)
f F (f, (E))
(f, id)
f ( ( (f, )
f ) ) (f, )
f + + (f, )
f (f, )
f id id (f, )
TABELA 1. Tabela de transio
Quando criamos a receita acima, nosso objetivo era inventar um autmato que
aceitasse a linguagem gerada por uma gramtica livre de contexto dada. Mas para
ter certeza de que a receita funciona precisamos provar o seguinte resultado.
TEOREMA 12.4. Se G uma gramtica livre de contexto e / o autmato de
pilha no determinstico construdo de acordo com a receita acima, ento L(G) =
L(/).
A demonstrao deste resultado consiste em formalizar a relao entre deriva-
es mais esquerda em G e computaes em/, que foi o nosso ponto de partida
para a criao da receita. Antes de fazer isto, porm, vale a pena tentar equiparar
cada etapa de uma derivao mais esquerda em G

exp
com uma computao no
autmato que acabamos de descrever.
2. A RECEITA E MAIS UM EXEMPLO 195
EXEMPLO 12.5. Vamos construir a computao correspondente derivao
mais esquerda
E E + T T + T F + T id + T id + F id + id
e compar-las passo-a-passo. A derivao comea marcando o fundo da pilha com
o smbolo inicial de G

exp
(i, id + id, ) (f, id + id, E),
mas isto no corresponde a nenhuma etapa da derivao. Em seguida, utilizando
transies por substituio, reproduzimos na pilha as quatro primeiras etapas da
derivao
(f, id+id, E) (f, id+id, E+T) (f, id+id, T +T) (f, id+id, F +T)
(f, id + id, id + T).
Neste ponto nos deparamos com a necessidade de usar remoes para eliminar os
terminais que obstruem o topo da pilha:
(f, id + id, id + T) (f, +id, +T) (f, id, T).
A computao prossegue com a aplicao de mais duas substituies e a remoo
do ltimo terminal na pilha e na entrada:
(f, id, T) (f, id, F) (f, id, id) (f, , ).
Como era esperado, o nmero de passos na computao excede em muito o
nmero de etapas da derivao por causa das transies de remoo, que no cor-
respondem a nenhuma regra de G

exp
. Observe que muito fcil determinar se
um passo da computao corresponde ou no a uma etapa da derivao; isto , a
uma transio por substituio. De fato, estas transies s podem ser aplicadas
a conguraes nas quais h uma varivel no topo da pilha. Esta observao vai
desempenhar um papel importante na demonstrao de que nossa receita funciona.
196 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
3. Provando a Receita
Como sempre, a demonstrao pode ser dividida em duas partes, que corres-
pondem s incluses L(G) L(/) e L(G) L(/).
Seja G uma gramtica livre de contexto formada pelos elementos (T, V, S, R)
e seja w uma palavra gerada por G. Queremos mostrar que w aceita por /.
Suponhamos que conhecemos uma derivao mais esquerda S

w em G.
Devemos ser capazes de usar esta derivao para obter uma computao
(i, w, )

(f, , ).
Alm disso, sabemos que cada etapa desta computao deve corresponder a uma
etapa da derivao, ou aplicao de uma das transies por remoo, que apagam
os prexos de terminais que j tenham sido corretamente gerados na pilha de /.
Digamos que, depois de k etapas, a derivao seja
S . . . Xv,
onde estamos assumindo que T

e que X V . Em particular, X a varivel


mais esquerda de Xv. Isto signica, por um lado, que w deve ser da forma ,
para alguma palavra T

, e por outro que a prxima regra deve ser aplicada


varivel X.
Se imaginarmos que j construmos a computao passo-a-passo at este ponto,
devemos ter obtido
(i, w, ) (f, w, S)

(f, , Xv),
porque os terminais de foram sendo eliminados na mesma medida em que foram
produzidos, para que a computao pudesse avanar.
Suponhamos que a regra aplicada na prxima etapa da derivao seja X u,
onde u (T V )

. Avanando mais esta etapa na derivao, obtemos


S . . . Xv uv.
3. PROVANDO A RECEITA 197
Queremos reproduzir esta etapa na computao de /. Como j chegamos a
um ponto em que X est no topo da pilha, basta aplicar a transio (f, u)
(f, , X), que nos d
(i, w, ) (f, w, S)

(f, , Xv) (f, , uv).


Contudo isto no basta, porque queremos deixar a varivel mais esquerda de
uv descoberto, para poder aplicar a prxima regra sem obstculos. Para isto
precisamos localizar onde est esta varivel, que vamos batizar de Y . Digamos
que uv = Y v

, onde T

. Como uv = Y v

, w = e s tem
terminais, podemos concluir que prexo de . Portanto, =

e usando as
regras de eliminao obtemos a computao
(i, w, )

(f, , uv) = (f,

, Y v

(f,

, Y v

),
o que nos deixa prontos para prosseguir com a construo da computao exata-
mente como zemos na etapa anterior.
Note que, continuando desta maneira, quando chegarmos ao nal da derivao
teremos obtido uma computao
(i, w, )

(f, , ),
demonstrando, portanto, que w L(/).
Provamos, assim, que L(G) L(/). Falta mostrar que a incluso oposta
tambm vale. Para isto, basta vericar que se w aceita por / ento existe uma
derivao S

w.
A primeira impresso talvez seja de que, como a pilha de / reproduz uma
derivao de w em G, deve ser suciente olhar para o que h na pilha em cada
etapa da computao. Contudo, por causa das regras de remoo, cada vez que
uma parte de w for gerada na pilha, ela ser apagada antes da computao poder
continuar. Portanto, para obter a etapa da derivao que corresponde a um dado
passo da computao basta concatenar o prexo de w que foi removido da entrada
com o contedo da pilha. Em outras palavras, se a congurao de / em uma
198 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
dada etapa da computao for (f, u, Y v) e w = u, ento a etapa correspondente
da derivao ser Y v.
O problema desta correspondncia que mais de uma etapa da computao
pode corresponder a uma nica etapa da derivao. Para evitar isto s vamos cons-
truir as etapas da derivao que correspondem a um passo da computao em que
h uma varivel no topo da pilha. Note que escolhemos estes passos porque
exatamente neles que se aplicam as transies por substituio.
Para concluir a demonstrao, precisamos nos convencer de que esta sequncia
de palavras de (T V )

de fato uma derivao de w a partir de S. H trs coisas


a vericar:
(1) a sequncia comea com S;
(2) para passar de uma palavra da sequncia para a prxima trocamos sua
varivel mais esquerda pelo lado direito de uma regra de G;
(3) a ltima palavra da sequncia w.
Mas (1) e (2) so consequncias imediatas da maneira como / foi denido, e
(3) segue do fato de que a computao acaba na congurao (f, , ). Provamos,
portanto, que w L(G).
4. Autmatos de Pilha Cordatos
Na prxima seo, consideramos a recproca do problema descrito na seo
anterior. Isto , descrevemos um algoritmo que, a partir de um autmato de pilha
/constri uma gramtica livre de contexto G tal que L(G) = L(/).
Para tornar a construo da gramtica a partir do autmato mais fcil, comea-
remos transformando o autmato de pilha no-determinstico / dado. Construi-
remos a partir de /um autmato de pilha /

que aceita a mesma linguagem que


/, mas cujo comportamento mais predizvel. Em particular, /

ter apenas um
estado nal e a pilha s poder se esvaziar neste estado.
Para melhor sistematizar os algoritmos, conveniente introduzir a noo de
um autmato de pilha cordato. Seja ^ um autmato de pilha com estado inicial i
4. AUTMATOS DE PILHA CORDATOS 199
e funo de transio . Dizemos que ^ cordato se as seguintes condies so
satisfeitas:
(1) a nica transio a partir de i (i, , ) = (q, ), onde q um estado
de ^ e um smbolo do alfabeto da pilha;
(2) ^ tem um nico estado nal f;
(3) a pilha s se esvazia no estado nal f;
(4) no h transies a partir de f.
Note que, por causa de (1), (3) e (4), h um elemento que nunca sai do
fundo da pilha at que o estado nal seja atingido. Alm disto, (3) nos diz que se
(q, , ) = (p, ) ento p = f.
Vejamos como possvel construir a partir de um autmato de pilha / qual-
quer um autmato de pilha cordato ^ que aceita L(/). Suponhamos que /
denido pelos ingredientes (, , Q, q
0
, F, ). Ento ^ ser o autmato de pilha
com os seguintes ingredientes:
alfabeto de entrada ;
alfabeto da pilha , onde / ;
conjunto de estados Q i, f, onde i, f / Q;
estado inicial i;
conjunto de estados nais f;
funo de transio

denida de acordo com a tabela abaixo, onde es-


tamos supondo que e que :
estado entrada topo da pilha transio
i (q
0
, )
q ,= i, f ,= (q, , )
q ,= i, f ,= (q, , )
q ,= i, f e q / F (q, , )
q ,= i, f e q F (q, , ) (f, )
200 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
claro que ^ cordato; falta apenas mostrar que L(^) = L(/). Observe
que o comportamento de ^ pode ser descrito sucintamente dizendo que, depois de
marcar o fundo da pilha com , o autmato simula o comportamento de /. De
fato, na primeira transio ^ apenas pe no fundo da pilha e passa ao estado
q
0
de /. A partir da, ^ se comporta como / at que um estado nal p de /
atingido. Neste caso, se a pilha contm apenas , ^ tem a opo de entrar no
estado f e esvaziar a pilha. Observe que a pilha s esvaziada no estado f, e isto
obriga o autmato a parar porque no existem transies a partir de f.
Suponha agora que ^ computa a partir de uma entrada w

. Se w for
aceita por /, ento existir uma computao
(q
0
, w, )

(p, , ) em /.
Esta computao dar lugar a uma computao em ^ da forma
(i, w, ) (q
0
, w, )

(p, , ) (f, , ).
Portanto, se w for aceita por /ser aceita por ^.
Por outro lado, uma computao
(4.1) (i, w, )

(f, , ),
implica que a congurao do autmato ^ anterior ltima tinha que ser (p, , ),
com p um estado nal de /. Assim, a computao (4.1) de ^ procede ao longo
das seguintes etapas
(i, w, ) (q
0
, w, )

(p, , ) (f, , ).
Temos assim que (q
1
, w, )

(p, , ) uma computao vlida de /. Como p


estado nal de /, conclumos que w aceita por /. Portanto, /e ^ aceitam
exatamente as mesmas palavras.
5. A GRAMTICA DE UM AUTMATO DE PILHA 201
5. A Gramtica de um Autmato de Pilha
Suponha agora que ^ um autmato de pilha cordato. Veremos como pos-
svel construir uma gramtica livre de contexto G que gera as palavras aceitas por
^. Digamos que ^ est denido pelos ingredientes (, , Q, i, f, ). Alm
disso, suporemos que o smbolo que ca no fundo da pilha de ^ enquanto ele
simula /.
Naturalmente, os terminais da gramtica G sero os elementos de . A cons-
truo das variveis mais complicada. Cada varivel ser indexada por trs sm-
bolos: dois estados e um smbolo da pilha. Como isto complica muito a notao,
prefervel identicar cada varivel com a prpria tripla que lhe serve de ndice.
Assim o conjunto de variveis de G ser
Q Q.
Portanto, uma varivel de G ser uma tripla (q, , p), onde q e p so estados de ^
e um smbolo do alfabeto da pilha. Note que no pode ser .
Se
(i, , ) = (i

, ),
ento o smbolo inicial de G ser (i

, , f). Precisamos agora construir as regras


de G. Suponhamos que
(p, u) (q, , )
onde u

. H dois casos a considerar:


Primeiro caso: u =
1

k
.
Neste caso, para cada k-upla (r
1
, . . . , r
k
) Q
k
construmos uma regra
(q, , r
k
) (p,
1
, r
1
)(r
1
,
2
, r
2
) (r
k1
,
k
, r
k
).
Observe que isto nos d, no apenas uma, mas n
k
regras distintas, onde
n o nmero de estados de ^.
Segundo caso: u =
202 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
Neste caso construmos apenas a regra
(q, , p) .
De nossa experincia anterior, sabemos que, de alguma maneira, uma deriva-
o mais esquerda por G deve simular uma computao por ^. Mais precisa-
mente,
(5.1) (i, w, ) (i

, w, )

(f, , ) se, e somente se (i

, , f)

w.
Entretanto, neste caso a simulao procede de maneira bem mais sutil. Para melhor
identicar o problema, consideremos uma etapa da computao acima
(q, v, u) (p, v,
1

k
u),
onde v

e u

. Evidentemente para que esta etapa seja legtima preciso


que
(5.2) (p,
1

k
) (q, , ).
Mas (5.2) d lugar a n
k
regras: qual delas devemos escolher? Para decidir isto,
precisamos vericar como a computao continua.
Em outras palavras, para construir o i-simo passo da derivao no suci-
ente considerar apenas o i-simo passo da computao, mas vrios outros passos;
at mesmo todo o restante da computao! claro que isto torna a demonstrao
da correspondncia bem mais difcil que no caso de autmatos nitos. Felizmente,
podemos generalizar a equivalncia (5.1) de modo a tornar a demonstrao mais
transparente. Para isso, substitumos em (5.1) os estados i

e f por estados quais-


quer p e q, e por um smbolo qualquer X do alfabeto da pilha. Esta generalizao
o contedo do seguinte lema.
LEMA 12.6. Sejam p e q estados do autmato de pilha no-determinstico ^.
Ento
(q, w, X)

(p, , ) se, e somente se (q, X, p)

w
5. A GRAMTICA DE UM AUTMATO DE PILHA 203
na gramtica G(^).
De acordo com esta correspondncia, se o autmato est no estado p quando
X desempilhado, ento a varivel que inicia a derivao (q, X, p). Assim, para
achar a varivel da partida, preciso olhar a computao at o ltimo passo!
A demonstrao por induo nita, e para torn-la mais clara vamos dividi-la
em duas partes.
Primeira parte: Queremos mostrar a armao
(A(m)) se (q, w, X)
m
(p, , ), ento (q, X, p)

w.
por induo em m.
Se m = 1, ento
w = e (p, ) (q, , X).
Mas, por construo, isto signica que na gramtica G(^) h uma regra do tipo
(q, X, p) .
Como, neste caso, toda a derivao se reduz a uma aplicao desta regra, a base da
induo est provada.
Suponhamos, agora, que s > 1 um nmero inteiro, e que A(m) vale para
todo m < s. Seja
(5.3) (q, w, X)
s
(p, , )
uma computao em ^ com s etapas.
Isolando o primeiro smbolo de w, podemos escrever w = v, onde e
v

. Neste caso o primeiro passo da computao (5.3) ser da forma


(q, v, X) (q
1
, v, Y
1
Y
k
),
que corresponde transio
(5.4) (q
1
, v, Y
1
Y
k
) (q, , X).
204 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
Note que, ao nal da computao (5.3) cada Y foi desempilhado. Lembre-se
que dizer, por exemplo, que Y
1
removido da pilha signica que a pilha passou
a ser Y
2
Y
k
. Isto no tem que acontecer em apenas uma transio. Assim, Y
1
pode ser trocado por uma palavra no alfabeto da pilha semque seja necessariamente
desempilhado. Por isso, durante os passos seguintes da computao a pilha pode
crescer bastante antes de diminuir ao ponto de ser apenas Y
2
Y
k
. Digamos ento
que v
1
o prexo de v que consumido para que Y
1
seja desempilhado. Se v =
v
1
v

, temos uma computao


(q
1
, v
1
v

, Y
1
Y
k
)

(q
2
, v

, Y
2
Y
k
),
onde q
2
algum estado de ^.
Analogamente, sejam v
2
, v
3
, . . . , v
k
as subpalavras de v que tm que ser con-
sumidas para que Y
2
, . . . , Y
k
sejam desempilhados. Assim, v = v
1
v
2
. . . v
k
, e
existem estados q
1
, . . . , q
k
de ^ modo que (5.3) pode ser subdividida em k 1
etapas da forma
(q
i
, v
i
v
k
, Y
i
Y
k
)

(q
i+1
, v
i+1
v
k
, Y
i+1
Y
k
),
seguidas de uma etapa nal da forma
(q
k
, v
k
, Y
k
)

(p, , ).
Como cada uma destas computaes tem menos de s passos, segue da hiptese de
induo, que
(q
i
, v
i
, Y
i
)

(q
i+1
, , ),
d lugar derivao
(5.5) (q
i
, Y
i
, q
i+1
)

v
i
,
ao passo que a etapa nal da computao corresponde a
(5.6) (q
k
, Y
k
, p)

v
k
.
5. A GRAMTICA DE UM AUTMATO DE PILHA 205
Falta-nos apenas reunir de modo ordenado tudo o que zemos at agora. Em
primeiro lugar, a transio (5.4) d lugar a uma regra de G(^) da forma
(q, X, p) (q
1
, Y
1
, q
2
) (q
k
, Y
k
, p).
Substituindo, nalmente, as derivaes de (5.5) e (5.6) nos lugares apropriados,
obtemos
(q, X, p) (q
1
, Y
1
, q
2
) (q
k
, Y
k
, p)

v
1
v
k
= w,
como queramos.
Segunda parte: Queremos mostrar a armao
(B(m)) se (q, X, p)
m
w ento (q, w, X)

(p, , )
por induo em m
Se m = 1 ento a derivao se resume a regra
(q, X, p) w,
da gramtica G(^). Mas, pela construo da gramtica, w tem que ser um smbolo
. Alm disto, esta regra s pode ocorrer se houver uma transio da
forma
(p, ) (q, , X)
em ^. Mas esta transio d lugar computao
(q, , X) (p, , )
que espervamos obter.
Suponha, agora, que s > 1 um nmero inteiro e que o resultado vale para
toda derivao com menos de s passos. Seja
(5.7) (q, X, p)
s
w
206 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
uma derivao de G(^) com s etapas. Como s > 1, a primeira regra a ser aplicada
nesta derivao deve ser da forma
(5.8) (q, X, p) (s
1
, Y
1
, s
2
)(s
2
, Y
2
, s
3
) (s
k
, Y
k
, p),
onde (s
1
, . . . , s
k
) Q
k
e o smbolo mais esquerda de w. Digamos que w =
v, para alguma palavra v

. Para que a derivao possa acabar produzindo


w deve ser possvel decompor v na forma v = v
1
v
k
de modo que, para i =
1, . . . , k, temos
(s
i
, Y
i
, s
i+1
)

v
i
onde s
k+1
= p. Como a derivao de v
i
s tem que ter um nmero de etapas menor
que s, podemos aplicar a hiptese de induo, obtendo assim computaes
(s
i
, v
i
, Y
i
)

(s
i+1
, ).
para i = 1, . . . , k. Alm disso, se pusermos Y
i+1
, . . . , Y
k
abaixo de Y
i
, no fundo
da pilha, obteremos
(s
i
, v
i
, Y
i
Y
i+1
Y
k
)

(s
i+1
, ).
Agora, (5.8) provm da transio
(p, Y
1
Y
k
) (q, , X).
Lembrando que w = v
1
v
k
, vemos que ^ admite uma computao da
forma
(q, w, X) (s
1
, v
1
v
k
, Y
1
Y
k
)

(s
2
, v
2
v
k
, Y
2
Y
k
)

(s
k
, v
k
, Y
k
) (p, , ),
como queramos mostrar.
Podemos ento resumir estes resultados de equivalncia entre autmatos de
pilha no-determinsticos e gramticas livres de contexto no teorema abaixo.
6. DE VOLTA S PROPRIEDADES DE FECHAMENTO 207
TEOREMA 12.7. As seguintes armaes so equivalentes entre si:
(1) L uma linguagem livre de contexto.
(2) L pode ser gerada por uma gramtica livre de contexto.
(3) L aceita por algum autmato de pilha no-determinstico.
OBSERVAO. Ao contrrio do que ocorria comos autmatos nitos, no caso
dos autmatos de pilha no mais verdade que os autmatos determinsticos e no-
determinsticos aceitam a mesma classe de linguagens. Existem linguagens livres
de contexto que no so aceitas por nenhum autmato de pilha determinstico. Isto
signica que os resultados de equivalncia que mostramos neste captulo no se
mantm quando consideramos apenas autmatos de pilha determinsticos. por
essa razo que, no caso dos autmatos de pilha, nos restringimos apenas ao estudo
dos autmatos no-determinsticos.
6. De Volta s Propriedades de Fechamento
Vimos anteriormente que a interseo e a diferena de duas linguagens livres
de contexto no so necessariamente linguagens livres de contexto. Entretanto,
mostraremos agora que, se L uma linguagem livre de contexto e R uma lingua-
gem regular, ento L R e L R so sempre linguagens livres de contexto.
Seja A
1
= (, , Q, q
0
, F, ) um autmato de pilha no-determinstico que
aceita a linguagem L e seja A
2
= (, Q

, q

0
, F

) um AFD que aceita a lin-


guagem R. Queremos construir um autmato de pilha no-determinstico A

=
(, , Q

, q
0

, F

) que aceite L R. A ideia que utilizaremos na construo


do autmato a mesma que utilizamos anteriormente para construir um autmato
que aceitava a interseo de duas linguagens regulares: o nosso autmato dever
simular em paralelo as computaes dos dois autmatos originais com uma mesma
palavra, realizando as transies nos dois de maneira sincronizada. O novo aut-
mato aceitar a palavra se os dois autmatos originais aceitarem.
Repare que o autmato A

que vamos construir possui apenas uma pilha (como


qualquer autmato de pilha). Esta pilha poder ser usada exclusivamente para a
simulao do autmato A
1
, j que o autmato A
2
no utiliza uma pilha. por
208 12. RELAO ENTRE GRAMTICAS LIVRES DE CONTEXTO E AUTMATOS DE PILHA
esta razo que esta construo funciona no caso em que uma linguagem livre
de contexto e a outra regular mas no funcionaria para provar que a interseo
de duas linguagens livres de contexto livre de contexto: teramos que simular as
duas pilhas dos autmatos originais em apenas uma pilha do autmato que estamos
construindo, o que no possvel.
Seguindo esta ideia, temos ento:
Q

= QQ

;
q
0

= (q
0
, q

0
);
F

= F F

(A
1
e A
2
terminam em estado nal);
((p, p

), u)

((q, q

), , ) se (p, u) (q, , ) e p

(q

, )
(execuo sincronizada das transies).
Para a diferena LR das linguagens, conseguimos mostrar que ela tambm
uma linguagem livre de contexto utilizando a igualdade LR = LR. J vimos
anteriormente que, se R uma linguagem regular, R tambm necessariamente re-
gular. Alm disso, acabamos de mostrar acima que a interseo de uma linguagem
livre de contexto com uma linguagem regular uma linguagem livre de contexto.
Logo, L R uma linguagem livre de contexto, o que signica que L R uma
linguagem livre de contexto.
7. Exerccios
(1) Construa a computao no autmato descrito na seo 2 que corresponde
derivao mais esquerda de id (id + id) na gramtica G

exp
.
(2) Ache um autmato de pilha no determinstico que aceita a linguagem
gerada pela gramtica cujas regras so:
S 0AA
A 1S[0S[0
(3) Para cada uma das linguagens L, abaixo, invente uma gramtica livre de
contexto que gere L e use a receita da seo 2 para construir um autmato
de pilha no-determinstico que aceite L.
7. EXERCCIOS 209
a) L = wc
4
w
r
: w 0, 1;
b) L = a
n
b
m
c : n m 1;
c) L = 0
m
1
n
: n m 2n;
d) L = a
i+3
b
2i+1
: i 0;
e) L = a
i
b
j
c
j
d
i
e
3
: i, j 0.
(4) Seja Guma gramtica livre de contexto cujo smbolo inicial S, e seja /
o autmato de pilha construdo a partir de G pela receita da seo 2. Su-
ponhamos que w uma palavra de comprimento k em L(G) . Determine
o nmero de passos da computao de / que corresponde derivao
mais esquerda S
n
w.
Parte 3
Computabilidade
CAPTULO 13
Um Modelo Formal de Computao: A Mquina de
Turing
1. Exerccios
(1) Considere a mquina de Turing cujo alfabeto da ta a, b, , , con-
junto de estados q
0
, q
1
, h, estado inicial q
0
e transies dadas pela ta-
bela:
estado entrada transies
q
0
0 (q
1
, 1)
1 (q
1
, 0)
(h, )
(q
0
, )
q
1
0 (q
0
, )
1 (q
0
, )
(q
0
, )
(q
1
, )
a) Descreva a computao de M a partir da congurao (q
0
, 00 1110).
b) Descreva informalmente o que M faz quando iniciada no estado q
0
e
em alguma casa de sua ta.
(2) Descreva a tabela de transio de uma mquina de Turing com alfabeto
da ta a, b, , , que se move para a esquerda at encontrar trs as na
ta e ento para.
(3) Explique porque as mquinas DE e ED nem sempre tm a mesma sada.
213
214 13. UM MODELO FORMAL DE COMPUTAO: A MQUINA DE TURING
(4) Descreva o diagrama de composio de mquinas de Turing que aceitem
as seguintes linguagens:
a) 010

1;
b) w 0, 1

: [w[ par;
c) a
n
b
n
c
m
: m n;
d) w 0, 1 : w = w
r
;
e) 0
n
2
: n 1.
(5) Descreva o diagrama de composio e a tabela de transies da mquina
de Turing que move uma palavra w (0 1)

, precedida de uma casa


vazia, uma casa para a esquerda; isto , que transforma w em w.
(6) Construa mquinas de Turing que calculem as seguintes funes f : N
N denidas por:
a) f(n) = n + 1;
b) f(n) o resto da diviso de n por 2;
c)
f(n, m) =
_

_
n m se n m 0
0 se n < m.
(7) Descreva uma mquina de Turing que, tendo como entrada uma palavra
w 0, 1

encontra o smbolo do meio da palavra (se existir!).


(8) Descreva uma mquina de Turing que, tendo como entrada uma palavra
w 0, 1

com comprimento par, substitui os 0s por a ou c e os 1s


por bs ou ds, de modo que a palavra ca escrita na forma w
1
w
2
onde
w
1
a, b

e w
2
c, d

.
(9) Utilizando a mquina de Turing da questo anterior construa uma m-
quina de Turing que aceita a linguagem ww : w 0, 1

.
(10) Mostre que a linguagem ww : w 0, 1

recursiva.
(11) D a denio formal de uma mquina de Turing cuja ta duplamente
innita (isto , innita nos dois sentidos). Mostre como possvel simular
uma mquina destas usando uma mquina de Turing /cuja ta innita
1. EXERCCIOS 215
somente direita. As mquinas denidas originalmente por Alan Turing
tinham tas duplamente innitas.
Sugesto: Escolha um ponto de referncia na ta duplamente innita e
escreva os smbolos das casas direita do referencial nas casas pares da
ta de /, e aqueles que esto esquerda nas casas mpares. Explique
como deve ser o comportamento de /. Note que / chega a quando
a mquina original cruza o ponto de referncia. Qual vai ser o comporta-
mento de /neste caso?
(12) Seja
0
um alfabeto e L uma linguagem no alfabeto
0
. Mostre que, se
L e
0
L so recursivamente enumerveis, ento L recursiva.
(13) Seja
0
um alfabeto e L uma linguagem no alfabeto
0
que recursiva-
mente enumervel mas no recursiva. Suponha que M uma mquina
de Turing que aceita L. Mostre que existe uma quantidade innita de
palavras em
0
que no aceita por M.
CAPTULO 14
Extenses da Mquina de Turing
217
CAPTULO 15
Operaes com Linguagens Recursivas e Recursivamente
Enumerveis
1. Exerccios
(1) Sejam L
1
e L
2
linguagens recursivas aceitas por mquinas de Turing M
1
e M
2
, respectivamente. Mostre como construir uma mquina de Turing
/que aceite a linguagem L
1
L
2
.
(2) A interseo de linguagens recursivas recursiva? Explique sua resposta.
219
CAPTULO 16
Tese de Church-Turing e Mquina de Turing Universal
1. Exerccios
(1) Construa a ta de entrada para que a mquina de Turing universal simule
a computao da mquina de Turing do exerccio 1 do captulo 13 partir
da congurao (q
0
, 001110).
221
CAPTULO 17
Problema da Parada
223
CAPTULO 18
Reduo entre Problemas e o Problema da
Correspondncia de Post
225
Parte 4
Complexidade
CAPTULO 19
Introduo Teoria da Complexidade
229
Referncias Bibliogrcas
[1] M. Sipser, Introduo Teoria da Computao, Thomson (2007).
[2] H. R. Lewis e C. H. Papadimitriou, Elementos de Teoria da Computao, 2a edio, Bookman
(2004)
[3] J. E. Hopcroft, J. D. Ullman e R. Motwani, Campus/Elsevier (2002).
[4] M. A. Harrison, Introduction to formal language theory, Addison-Wesley (1978).
[5] J. E. Hopcroft e J. D. Ullman, Introduction to automata theory, languages and computation,
Addison-Wesley (1979).
231