Escolar Documentos
Profissional Documentos
Cultura Documentos
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
, 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
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
\ __
q
2
0
1 ,
\ __ ` _
q
3
1
= (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)
.
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
.
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)
) = L(0)
= 0
= , 0, 00, 000, . . ..
Analogamente, para descrever uma quantidade par qualquer de 0s, pode-
mos 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)
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)
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, ).
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
\ __ ` _
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) 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
que satisfaz X =
AX B. Como j sabemos que 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 = , 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
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)
1)
(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)
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
.(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
(q, )
(lembrando que (q, ) um conjunto), ento colocamos no grafo uma aresta
direcionada do vrtice de q para o vrtice de q
\ __
q
2
0
\ __
q
3
0
\ __ ` _
q
4
. 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, ).
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
.
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
).
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
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
\ __
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
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 /
= (, Q
, q
0
, F
).
2. UNIO 63
Assumiremos, tambm, que QQ
). O autmato /
u
aceitar uma palavra w
somente
quando w for aceita por / ou por /
;
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
, 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
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(/
),
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 /
.
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 /
= (, Q
, q
0
, F
).
Continuaremos assumindo que Q Q
= .
Nosso objetivo construir um autmato /
c
que aceite a concatenao L(/)
L(/
, o autmato /
c
precisa vericar se
existe um prexo de w que aceito por /e que seguido de um suxo aceito por
/
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
.
.
.
.
.
.
.
.
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
\ __
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
\ __ ` _
q
3
a
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(^)
\ __ ` _
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
` _ \
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
:
I
.
(4) ANFD para 10:
I
1
:
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
;
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
, 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
;
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
= (, Q, q
0
, F
, ), onde F
no alfabeto
).
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
regular.
(5) SejamLe L
regular e LL
= .
Mostre que L
regular.
(6) Sejam M e 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
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
).
(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
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
); de fato, 1,
10, 10
2
, 10
3
e 10
4
pertencem a L(M
), porque se k 5 ento 10
k
/ L(M
).
Permanecendo com o autmato M
) = 1, 10, 10
2
, 10
3
, 10
4
.
Em particular, no h nenhuma palavra de L(M
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 )
.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
: 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
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
\ __
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
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
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
) = 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
, se 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
tais que
w = w
0
w
1
w
n1
w
n
= 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
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
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
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
= 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.
). Logo,
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
;
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
.
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
e v
so sucessores de v, e se v
precede v
esquerda de v
e v
descendente de v;
se v e v
e v
lho de v;
se v
e v
e f
e f
de v
. Como v
e v
so irmos, sabemos
que esto ordenados; digamos que v
precede v
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 )
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.
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
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
) =
L(M);
Etapa 3: determina uma gramtica G
, obtida a partir de M
, e que gera
L(M
).
Como j vimos, 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
. Como T
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
. Como T
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
.
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
;
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
.
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
= (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 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
(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
.
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
e w
1
,= w
r
2
;
(3) Um autmato nito no-determinstico que aceita a linguagem denotada
por 0 0
.
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
).
c) Mostre que dado um autmato de pilha no determinstico M existe
umautmato de pilha no determinstico 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 )
_
(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 )
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
(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 )
, 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, )
, 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 )
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
. 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, )
, ),
ento o smbolo inicial de G ser (i
, w, )
, , 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
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
, 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
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
=
(, , Q
, q
0
, F
;
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)
_
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
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