You are on page 1of 196

Notas de Aula de Fundamentos de Teoria da Computa¸ c˜ao

Prof. Marcelo Ferreira Siqueira
2 de dezembro de 2007
Sum´ario
1 Conceitos B´asicos 1
1.1 Alfabetos e palavras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Linguagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Problemas e linguagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Autˆomatos Finitos Determin´ısticos 7
2.1 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 A linguagem aceita por um AFD . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Autˆomatos Finitos N˜ao-Determin´ısticos 14
3.1 Uma vis˜ao informal dos AFND’s . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 A linguagem aceita por um AFND . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 A Constru¸c˜ao de Subconjuntos 20
i
4.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Equivalˆencia entre AFD e AFND . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 Autˆomatos Finitos N˜ao Determin´ısticos com Transi¸c˜oes Vazias 27
5.1 Transi¸ c˜oes vazias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Fecho-ǫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.4 A linguagem aceita por um AFND-ǫ . . . . . . . . . . . . . . . . . . . . . . . . 30
5.5 Elimina¸ c˜ao de transi¸ c˜oes vazias . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Propriedades de Fechamento das Linguagens Regulares 35
6.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Fechamento sob uni˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.3 Fechamento sob interse¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.4 Fechamento sob complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.5 Fechamento sob concatena¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.6 Fechamento sob a opera¸ c˜ao

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.7 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7 O Lema do Bombeamento para Linguagens Regulares 45
7.1 Limita¸ c˜oes dos AFD’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2 O Lema do Bombeamento para linguages regulares . . . . . . . . . . . . . . . . 47
7.3 Aplicando o Lema do Bombeamento . . . . . . . . . . . . . . . . . . . . . . . . 48
7.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8 O Teorema de Myhill-Nerode 51
ii
8.1 Congruˆencia `a direita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.2 A rela¸ c˜ao induzida por uma linguagem . . . . . . . . . . . . . . . . . . . . . . . 52
8.3 Rela¸ c˜oes de Myhill-Nerode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.4 O Teorema de Myhill-Nerode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.5 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9 Homomorfismos e Homomorfismos Inversos 63
9.1 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.2 Propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.3 Uma aplica¸ c˜ao de homomorfismos . . . . . . . . . . . . . . . . . . . . . . . . . . 68
9.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
10 Padr˜oes e Express˜oes Regulares 71
10.1 Padr˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.2 Express˜oes regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
10.3 Conven¸ c˜oes notacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
10.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
11 Express˜oes Regulares e Autˆomatos Finitos 76
11.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
11.2 (1) ⇒ (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
11.3 (2) ⇒ (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12 Minimiza¸ c˜ao de Estados 81
12.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
12.2 O autˆomato quociente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
13 Um Algoritmo para Minimiza¸ c˜ao de Estados 88
13.1 Descri¸ c˜ao e exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
iii
13.2 O autˆomato m´ınimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
13.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
14 O Autˆomato M´ınimo 93
15 Gram´aticas e Linguagens Livres de Contexto 96
15.1 Defini¸ c˜ao de GLC’s e LLC’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
15.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
15.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
16 Deriva¸ c˜oes 102
16.1 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
17
´
Arvores Sint´aticas 106
17.1 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
18 Ambiguidade e Gram´aticas Lineares `a Direita 112
18.1 Ambiguidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
18.2 Gram´aticas lineares `a direita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
18.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
19 Autˆomatos de Pilha N˜ao-Determin´ısticos 117
19.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
19.2 Defini¸ c˜ao formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
19.3 Configura¸ c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
19.4 Aceita¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
19.5 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
19.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
20 Estado Final versus Pilha Vazia 125
iv
20.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
20.2 Simula¸ c˜ao de aceita¸ c˜ao por pilha vazia . . . . . . . . . . . . . . . . . . . . . . . 125
20.3 Simula¸ c˜ao de aceita¸ c˜ao por estado final . . . . . . . . . . . . . . . . . . . . . . . 126
20.4 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
21 APND’s e GLC’s 128
21.1 De uma GLC para um APND . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
21.2 De um APND para uma GLC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
22 Simplifica¸c˜ao de Linguagens Livres de Contexto 135
22.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.2 Uma regra ´ util de substitui¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
22.3 Elimina¸ c˜ao de produ¸ c˜oes in´ uteis . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
22.4 Elimina¸ c˜ao de produ¸ c˜oes nulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
22.5 Elimina¸ c˜ao de produ¸ c˜oes unit´arias . . . . . . . . . . . . . . . . . . . . . . . . . . 140
22.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
23 A Forma Normal de Chomsky 144
23.1 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
23.2 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
23.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
24 A Forma Normal de Greibach 150
24.1 Defini¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
24.2 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
24.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
25 O Lema do Bombeamento para Linguagens Livres de Contexto 156
25.1 O Lema do Bombeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
v
25.2 Aplicando o Lema do Bombeamento . . . . . . . . . . . . . . . . . . . . . . . . 161
25.3 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
26 Algoritmos de Decis˜ao para Linguagens Livres de Contexto 165
26.1 O algoritmo CKY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
26.2 A linguagem ´e vazia? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
26.3 A linguagem ´e finita? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
26.4 Outros problemas de decis˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
26.5 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
27 Propriedades de Fechamento das Linguagens Livres de Contexto 172
27.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
27.2 Fechamento sob uni˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
27.3 Fechamento sob concatena¸ c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
27.4 Fechamento sob

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
27.5 Interse¸ c˜ao e complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
27.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
28 Autˆomatos de Pilha Determin´ısticos 179
28.1 Considera¸ c˜oes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
28.2 AP determin´ısticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
28.3 Linguagens regulares e LLCDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
28.4 Estado final versus pilha vazia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
28.5 APDs e gram´aticas n˜ao-amb´ıguas . . . . . . . . . . . . . . . . . . . . . . . . . . 184
28.6 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
vi
Lista de Figuras
2.1 Diagrama de transi¸ c˜ao de estados do AFD do Ex. 2.1 . . . . . . . . . . . . . . . 8
3.1 Diagrama de transi¸ c˜ao de estados de um AFND. . . . . . . . . . . . . . . . . . . 15
4.1 AFND que aceita todas as palavras sobre ¦a, b¦ que terminam com aaa. . . . . . 26
5.1 Um AFND com transi¸ c˜oes vazias. . . . . . . . . . . . . . . . . . . . . . . . . . . 27
12.1 AFND que aceita todas as palavras em ¦a, b¦ que cont´em a subcadeia abb. . . . 81
12.2 AFD equivalente ao AFND na Fig. 12.1. . . . . . . . . . . . . . . . . . . . . . . 82
12.3 AFD equivalente ao AFD na Fig. 12.2. . . . . . . . . . . . . . . . . . . . . . . . 82
17.1 Uma ´arvore sint´atica para a gram´atica que gera a linguagem PARBAL. . . . . . 107
17.2 Uma ´arvore sint´atica com o mesmo resultado da ´arvore da Figura 17.1. . . . . . 109
19.1 Diagrama de transi¸ c˜ao de estados do APND P
1
do Exemplo 19.1. . . . . . . . . 119
vii
Cap´ıtulo 1
Conceitos B´asicos
1.1 Alfabetos e palavras
Defini¸ c˜ao 1.1. Um alfabeto ´e qualquer conjunto finito e n˜ ao-vazio. Convencionalmente, usa-
mos a letra grega Σ quando nos referimos a um alfabeto arbitr´ario. Os elementos de um alfabeto
s˜ ao chamados de letras ou s´ımbolos.
Alguns alfabetos comuns s˜ao:
• Σ = ¦0, 1¦, o alfabeto bin´ario.
• Σ = ¦a, b, . . .¦, o conjunto de todas as letras min´ usculas.
• O conjunto de todos os caracteres ASCII.
Defini¸ c˜ao 1.2. Uma palavra ou cadeia sobre um alfabeto Σ ´e qualquer seq¨ uˆencia finita de
elementos de Σ. O comprimento de uma palavra x ´e o n´ umero de letras de x e ´e representado
por [x[.
Por exemplo, se Σ = ¦a, b¦, ent˜ao x = aabab ´e uma palavra sobre Σ cujo comprimento, [x[, ´e
igual a 5.
Defini¸ c˜ao 1.3. H´a uma ´ unica palavra de comprimento 0 sobre qualquer alfabeto Σ, a qual
´e denominada palavra vazia e ´e representada pelo s´ımbolo ǫ (a letra grega “epsilon”). Logo,
[ǫ[ = 0.
N´os escrevemos a
n
para denotar uma palavra composta de n letras a, onde n ´e um natural.
Por exemplo, a
5
= aaaaa, a
1
= a e a
0
= ǫ. Formalmente, podemos definir a
n
de forma indutiva
como segue:
a
0
= ǫ e a
n+1
= a
n
a.
1
Seja Σ um alfabeto. Definimos Σ
n
como sendo o conjunto de todas as palavras de comprimento
n sobre Σ. Por exemplo, se Σ = ¦0, 1¦, ent˜ao Σ
0
= ¦ǫ¦, Σ
1
= ¦0, 1¦, Σ
2
= ¦00, 01, 10, 11¦, e
assim por diante.
Em particular, denominamos por Σ

(leia a “estrela” de Σ), o conjunto de todas as palavras
(de comprimento finito) sobre Σ. Isto ´e,
Σ

= Σ
0
∪ Σ
1
∪ Σ
2
∪ =

_
n=0
Σ
n
.
Note que ǫ ∈ Σ

. Como veremos mais adiante, muitas vezes ´e conveniente considerar todas as
palavras de Σ

, exceto ǫ. Para tal, definimos
Σ
+
= Σ
1
∪ Σ
2
∪ Σ
3
∪ =

_
n=1
Σ
n
= Σ
+
= Σ

−¦ǫ¦.
Defini¸ c˜ao 1.4. Sejam x e y duas palavras sobre um alfabeto Σ. Ent˜ao, xy denota a conca-
tena¸ c˜ao de x e y, isto ´e, a palavra formada tomando-se uma c´opia de x e acrescentando-se a
ela uma c´opia de y. Mais precisamente, se x = a
1
a
2
a
n
´e a palavra composta de n s´ımbolos
a
i
de Σ e y = b
1
b
2
b
m
´e a palavra composta de m s´ımbolos b
j
de Σ, ent˜ ao xy ´e a palavra
a
1
a
2
a
n
b
1
b
2
b
m
de comprimento n + m.
Por exemplo, sejam Σ = ¦0, 1¦, x = 01101 e y = 110. Ent˜ao, xy = 01101110 e yx = 11001101.
Aqui v˜ao algumas propriedades ´ uteis da opera¸ c˜ao de concatena¸ c˜ao:
• Identidade: ǫx = xǫ = x.
• Associativa: (xy)z = x(yz).
• [xy[ = [x[ +[y[.
Sejam Σ um alfabeto e x uma palavra sobre Σ. N´os denotamos por x
n
a palavra obtida pela
concatena¸ c˜ao de n c´opias de x. Por exemplo, (aab)
5
= aabaabaabaabaab, (aab)
1
= aab e
(aab)
0
= ǫ. Formalmente, podemos definir x
n
indutivamente como segue:
x
0
= ǫ e x
n+1
= x
n
x.
Se a ∈ Σ e x ∈ Σ

, n´os denotamos por [x[
a
o n´ umero de a’s em x. Por exemplo,
[001101001000[
0
= 8 e [00000[
1
= 0.
Defini¸ c˜ao 1.5. Um prefixo de uma palavra x ´e qualquer palavra y tal que existe uma palavra
z para a qual yz = x. Por exemplo, abaab ´e um prefixo de abaababa. A palavra vazia ´e um
prefixo de qualquer palavra, e toda palavra ´e um prefixo dela pr´ opria. Um prefixo y de x ´e um
prefixo pr´oprio de x se y ,= ǫ e y ,= x.
2
Defini¸ c˜ao 1.6. Analogamente, um sufixo de uma palavra x ´e qualquer palavra z tal que existe
uma palavra y para a qual yz = x. Por exemplo, ababa ´e um sufixo de abaababa. A palavra
vazia ´e um sufixo de qualquer palavra, e toda palavra ´e um sufixo dela pr´ opria. Um sufixo z de
x ´e um sufixo pr´oprio de x se z ,= ǫ e z ,= x.
Defini¸ c˜ao 1.7. Uma subcadeia de uma palavra x ´e qualquer palavra y tal que existem palavras
z e w para as quais zyw = x.
Por exemplo, aba ´e uma subcadeia de aabaabaa. A palavra vazia ´e uma subcadeia de qualquer
palavra.
1.2 Linguagens
Defini¸ c˜ao 1.8. Seja Σ um alfabeto. Uma linguagem sobre Σ ´e qualquer conjunto de palavras
escolhidas a partir de Σ

. Note que uma linguagem n˜ ao precisa incluir palavras com todos os
s´ımbolos de Σ. Logo, quando estabelecemos que L ´e uma linguagem sobre Σ, tamb´em temos que
L ´e uma linguagem sobre qualquer outro alfabeto que seja um superconjunto de Σ.
Alguns exemplos de linguagem s˜ao:
• ¦ǫ, 01, 0011, 000111, . . .¦, a linguagem de todas as palavras sobre Σ = ¦0, 1¦ que consistem
de um n´ umero n de 0’s seguido por um n´ umero n de 1’s, para algum inteiro n˜ao-negativo
n.
• ¦ǫ, 01, 10, 0011, 1100, 0101, 1010, 0110, 1001, . . .¦, a linguagem de todas as palavras sobre
Σ = ¦0, 1¦ que consistem de um n´ umero igual de 0’s e 1’s.
• Σ

´e uma linguagem para qualquer alfabeto Σ.
• ∅, a linguagem vazia, uma linguagem sobre qualquer alfabeto.
• ¦ǫ¦, a linguagem que consiste apenas da palavra vazia.
N˜ao confundir ∅, ¦ǫ¦ e ǫ, pois ∅ = ¦¦ ´e um conjunto vazio (linguagem vazia), ¦ǫ¦ ´e um conjunto
unit´ario (linguagem que consiste de uma ´ unica palavra, ǫ), e ǫ ´e a palavra vazia (e n˜ao ´e um
conjunto!).
Defini¸ c˜ao 1.9. Sejam Σ um alfabeto e L
1
e L
2
linguagens sobre Σ. Ent˜ao, n´ os definimos as
seguintes opera¸c˜oes:
• Uni˜ao:
L
1
∪ L
2
= ¦x ∈ Σ

[ x ∈ L
1
ou x ∈ L
2
¦.
3
• Interse¸ c˜ao:
L
1
∩ L
2
= ¦x ∈ Σ

[ x ∈ L
1
e x ∈ L
2
¦.
• Complemento em Σ

:
Σ

−L
1
= L
1
= ¦x ∈ Σ

[ x ,∈ L
1
¦.
• Concatena¸ c˜ao:
L
1
L
2
= ¦xy ∈ Σ

[ x ∈ L
1
e y ∈ L
2
¦.
Por exemplo, se L
1
= ¦a, ab¦ e L
2
= ¦b, ba¦, ent˜ao L
1
∪ L
2
= ¦a, b, ab, ba¦, L
1
∩ L
2
= ∅ e
L
1
L
2
= ¦ab, aba, abb, abba¦.
Defini¸ c˜ao 1.10. Sejam Σ um alfabeto e L uma linguagem sobre Σ. Ent˜ao, as potˆencias de
linguagem L s˜ ao definidas indutivamente como segue:
L
0
= ¦ǫ¦ e L
n+1
= LL
n
para todo inteiro n ≥ 0.
Por exemplo, ¦ab, aab¦
0
= ¦ǫ¦, ¦ab, aab¦
1
= ¦ab, aab¦, ¦ab, aab¦
2
= ¦abab, abaab, aabab,
aabaab¦, e assim por diante.
A estrela, L

, de uma linguagem L ´e a uni˜ao de todas as potˆencias finitas de L:
L

=

_
n=0
L
n
= L
0
∪ L
1
∪ L
2

Lembre-se de que n´os previamente definimos Σ

como sendo o conjunto de todas as palavras de
comprimento finito sobre o alfabeto Σ. Isto ´e exatamente a estrela da linguagem cujas palavras
s˜ao as letras de Σ. Logo, nossa nota¸ c˜ao ´e consistente.
N´os definimos L
+
como sendo a uni˜ao de todas as potˆencias n˜ ao-zero de L:
L
+
= LL

=

_
n=1
L
n
.
A seguir est˜ao algumas propriedades importantes das opera¸ c˜oes vistas anteriormente (considere
L, L
1
, L
2
e L
3
como linguagens):
• A linguagem ¦ǫ¦ ´e uma identidade para a opera¸ c˜ao de concatena¸ c˜ao:
¦ǫ¦L = L¦ǫ¦ = L.
• A linguagem vazia ∅ ´e uma “aniquiladora” para a opera¸ c˜ao de concatena¸ c˜ao:
∅L = L∅ = ∅.
4
• A opera¸ c˜ao de concatena¸ c˜ao ´e distributiva com respeito ` a uni˜ao:
L
1
(L
2
∪ L
3
) = L
1
L
2
∪ L
1
L
3
e (L
2
∪ L
3
)L
1
= L
2
L
1
∪ L
3
L
1
.
• L

L

= L

.
• L
∗∗
= (L

)

= L

.
• L

= ¦ǫ¦ ∪ LL

= ¦ǫ¦ ∪ L

L.
• ∅

= ¦ǫ¦.
1.3 Problemas e linguagens
Neste curso, n´os lidaremos apenas com os chamados problemas de decis˜ao. Um problema de
decis˜ ao ´e aquele cuja resposta ´e sempre “sim” ou “n˜ao”. Para especificar um problema de
decis˜ao, n´os devemos especificar o conjunto A de todas as poss´ıveis entradas do problema e o
conjunto B ⊆ A de todas as entradas cujas respostas s˜ao “sim”. Por exemplo, para especificar
o problema de decidir se um dado n´ umero ´e primo, definimos o conjunto A como sendo o
cojunto de todos os inteiros e o conjunto B como sendo o conjunto de todos os n´ umeros inteiros
que s˜ao primos.
`
A primeira vista, a id´eia de considerar apenas os problemas de decis˜ao pode
parecer bastante restrita, mas a verdade ´e que esses problemas s˜ ao suficientes para se estudar
as principais quest˜oes de Computabilidade e Complexidade, duas das trˆes principais sub-´areas
da Teoria da Computa¸ c˜ao.
Por exemplo, um compilador C faz muito mais do que decidir se um determinado programa
P est´a correto sintaticamente ou n˜ao, pois ap´os decidir que P est´a correto, o compilador gera
c´odigo de m´aquina para P. No entanto, em teoria da complexidade, estamos interessados em
saber se um dado problema ´e “dif´ıcil”. Mas, se pudermos provar que ´e dif´ıcil decidir se P est´a
correto sintaticamente ou n˜ao, ent˜ao o problema de gerar c´ odigo de m´aquina para P deve ser
dif´ıcil tamb´em. Caso contr´ario, o problema de decidir se P est´a correto sintaticamente tamb´em
n˜ao seria dif´ıcil. Pois, como gerar c´odigo de m´aquina para P n˜ao ´e dif´ıcil, ent˜ao existe uma
forma eficiente de se fazer isso. Logo, poder´ıamos usar esta forma eficiente para compilar P. Se
o compilador conseguisse gerar c´odigo, ent˜ao n´os saber´ıamos que P est´a correto; caso contr´ario,
saber´ıamos que P n˜ao est´a correto.
O argumento acima mostra que n´os podemos deduzir que o problema de gerar c´odigo para P ´e
dif´ıcil sem ter de estudar a complexidade deste problema diretamente; isto ´e, n´os podemos fazer
isso a partir do estudo da complexidade de um problema de decis˜ao: aquele de decidir se P est´a
correto sintaticamente ou n˜ao. Como o problema de decis˜ao ´e “mais simples”, n´os resolvemos
um problema mais complicado atrav´es da solu¸ c˜ao de um problema mais simples! Simplicidade
relativa ´e exatamente a principal motiva¸ c˜ao para se estudar problemas mais gerais atrav´es de
problemas de decis˜ao.
Surpreendentemente, os termos “problema de decis˜ao” e “linguagem” possuem uma forte
rela¸ c˜ao entre eles. Pois, qualquer problema de decis˜ao pode ser visto como sendo o problema
5
de decidir se uma dada palavra pertence a uma dada linguagem. Isto ´e, se Σ ´e um alfabeto e
L ´e uma linguagem sobre Σ, ent˜ao o problema de decis˜ao ´e: dado uma palavra x ∈ Σ

, decidir
se x est´a ou n˜ao est´a em L. Neste contexto, cada palavra sobre Σ representa uma entrada do
conjunto A de entradas do problema, e a linguagem L consiste de todas as palavras sobre Σ que
representam as entradas de A para as quais a resposta do problema de decis˜ao ´e precisamente
“sim”.
Quando n˜ao h´a nenhuma semˆantica associada `as palavras, n´os nos referimos a um conjunto de
palavras como sendo uma linguagem. Isto ´e o que fizemos at´e agora e o que faremos durante
a maior parte do curso. No entanto, quando nos aproximarmos do final do curso, n´os veremos
as palavras como sendo codifica¸c˜oes de grafos, ´arvores, express˜oes l´ogicas ou n´ umeros inteiros.
Neste caso, em que nos preocupamos mais com o que a palavra representa do que com a palavra
em si, tenderemos a nos referir a um conjunto de palavras como sendo codifica¸ c˜oes das entradas
de um problema.
1.4 Exerc´ıcios
1. Defina um alfabeto Σ e duas palavras x e y sobre Σ tais que xy ,= yx (isto ´e, mostre que
a opera¸ c˜ao de concatena¸ c˜ao de (duas) palavras n˜ao ´e comutativa).
2. Seja x = abaab uma palavra sobre o alfabeto ¦a, b¦. Liste todos os prefixos e sufixos de
x. Quantos prefixos e sufixos pr´oprios x possui?
3. Sejam L
1
= ¦ǫ, a, ba¦ e L
2
= ¦c, bc, cca¦ duas linguagens sobre ¦a, b, c¦. Calcule L
2
1
, L
2
2
e
L
1
L
2
.
´
E verdade que L
1
⊆ L
2
1
?
´
E verdade que L
2
⊆ L
2
2
?
4. Seja L uma linguagem sobre um alfabeto Σ. Mostre que, para quaisquer inteiros n e m,
com n, m ≥ 0, L
n
L
m
= L
n+m
.
5. Seja L uma linguagem sobre um alfabeto Σ. Mostre que L

L

= L

.
6. Seja L uma linguagem sobre um alfabeto Σ. Mostre que L
∗∗
= (L

)

= L

.
7. Seja L uma linguagem sobre um alfabeto Σ. Mostre que L

= ¦ǫ¦ ∪ LL

= ¦ǫ¦ ∪ L

L.
8. Mostre que ∅

= ¦ǫ¦.
9. Seja B uma linguagem sobre um alfabeto Σ. N´os dizemos que B ´e transitiva se BB ⊆ B
e reflexiva se ǫ ∈ B. Mostre que, para qualquer linguagem A sobre Σ, a linguagem A

´e
a “menor” linguagem transitiva e reflexiva que cont´em A; isto ´e, se L ´e uma linguagem
transitiva e reflexiva que cont´em A, ent˜ao A

⊆ L.
10. Dado qualquer alfabeto Σ, prove que, para quaisquer duas palavras x e y sobre Σ, xy = yx
se, e somente se, existir uma palavra w sobre Σ tal que x = w
m
e y = w
n
, onde m e n
s˜ao inteiros n˜ao-negativos.
6
Cap´ıtulo 2
Autˆomatos Finitos Determin´ısticos
2.1 Defini¸c˜ao
Defini¸ c˜ao 2.1. Um autˆomato finito determin´ıstico (AFD) M ´e uma qu´ıntupla
M = (Q, Σ, δ, s, F),
onde
• Q ´e um conjunto finito; os elementos de Q s˜ ao chamados estados;
• Σ ´e um alfabeto denominado alfabeto de entrada;
• δ : Q Σ → Q ´e a fun¸ c˜ao de transi¸ c˜ao (lembre-se de que Q Σ ´e o conjunto de pares
ordenados ¦(q, a) [ q ∈ Q e a ∈ Σ¦).
• s ∈ Q ´e o estado inicial;
• F ´e um subconjunto de Q; os elementos de F s˜ ao chamados estados finais ou de aceita¸ c˜ao.
Quando especificamos um AFD, n´os definimos todas as cinco partes dele. Autˆomatos podem
ser especificados na forma de conjunto ou como um diagrama de transi¸ c˜ao ou tabela, como
veremos no exemplo a seguir.
Exemplo 2.1. Considere o AFD
M = (Q, Σ, δ, s, F)
onde Q = ¦q
0
, q
1
, q
2
, q
3
¦, Σ = ¦a, b¦, s = q
0
, F = ¦q
3
¦ e δ ´e tal que δ(q
0
, a) = q
1
, δ(q
1
, a) = q
2
,
δ(q
2
, a) = δ(q
3
, a) = q
3
, δ(q, b) = q para todo q ∈ Q.
Todas as cinco partes de M foram especificadas. N´os tamb´em podemos especificar M usando
uma tabela:
7
a b
→ q
0
q
1
q
0
q
1
q
2
q
1
q
2
q
3
q
2
q
3
F q
3
q
3
A “seta” `a esquerda do estado q
0
indica que q
0
´e o estado inicial e o F ao lado do estado q
3
indica que q
3
´e um estado final.
Finalmente, n´ os tamb´em podemos especificar o AFD M por interm´edio de um diagrama de
transi¸c˜ao de estados:
q
0
q
1
q
2
q
3
a
b
a
b
a
b
a, b
Figura 2.1: Diagrama de transi¸ c˜ao de estados do AFD do Ex. 2.1
2.2 A linguagem aceita por um AFD
Um AFD ´e um “reconhecedor” de palavras de uma determinada linguagem, a linguagem aceita
pelo AFD. Informalmente, podemos descrever a opera¸ c˜ao de um AFD da seguinte forma: dada
qualquer palavra x = a
1
a
2
a
n
sobre o alfabeto de entrada Σ do AFD, o AFD considera
uma letra da palavra de cada vez, desde a primeira at´e a ´ ultima letra. Antes de iniciar a
leitura de x, o AFD est´a em seu estado inicial, q
(1)
= s. Ap´os ler a
1
, o AFD muda para o
estado q
(2)
= δ(q
(1)
, a
1
). Em seguida, o AFD ler a pr´oxima letra a
2
de x e muda para o estado
q
(3)
= δ(q
(2)
, b
2
), e assim por diante. Quando a ´ ultima letra a
n
de x for lida, o AFD muda para
o estado q
(n+1)
= δ(q
(n)
, a
n
) e encerra sua opera¸ c˜ao. Se o estado q
(n+1)
for um estado final,
n´os dizemos que a palavra x foi aceita pelo AFD M. Se q
(n+1)
n˜ao for um estado final, n´os
dizemos que a palavra x foi rejeitada pelo AFD M. Como um exemplo, considere a palavra
x = baabbaab e o AFD M do Ex. 2.1. Come¸ cando em seu estado inicial q
0
, M estar´a no estado
q
3
ap´os ler baabbaab. Logo, podemos dizer que baabbaab foi aceita por M. O que podemos dizer
de x = babbbab? Vocˆe consegue caracterizar as palavras que s˜ao aceitas por M e aquelas que
s˜ao rejeitadas?
O reconhecimento de uma palavra x por um AFD M pode ser descrito formalmente por in-
term´edio de uma fun¸ c˜ao,
ˆ
δ : QΣ

→ Q,
8
chamada de fun¸ c˜ao de transi¸c˜ao estendida e definida de forma indutiva a partir da fun¸ c˜ao de
transi¸ c˜ao δ de M e do comprimento de x:
ˆ
δ(q, ǫ) = q, e
ˆ
δ(q, xa) = δ(
ˆ
δ(q, x), a),
para todo q ∈ Q e a ∈ Σ.
A fun¸ c˜ao
ˆ
δ mapeia um estado q e uma palavra x para um novo estado
ˆ
δ(q, x). O estado
ˆ
δ(q, x)
´e o estado em que M estar´a ap´os ler todas as letras de x. Por exemplo, considere a palavra
x = baabbaab e o AFD M do Ex. 2.1. Ent˜ao,
ˆ
δ(q
0
, x) =
ˆ
δ(q
0
, baabbaab)
= δ(
ˆ
δ(q
0
, baabbaa), b)
= δ(δ(
ˆ
δ(q
0
, baabba)a), b)
= δ(δ(δ(
ˆ
δ(q
0
, baabb), a), a), b)
= δ(δ(δ(δ(
ˆ
δ(q
0
, baab), b), a), a), b)
= δ(δ(δ(δ(δ(
ˆ
δ(q
0
, baa), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(
ˆ
δ(q
0
, ba), a), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(δ(
ˆ
δ(q
0
, b), a), a), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(δ(δ(
ˆ
δ(q
0
, ǫ), b), a), a), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(δ(δ(q
0
, b), a), a), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(δ(q
0
, a), a), b), b), a), a), b)
= δ(δ(δ(δ(δ(δ(q
1
, a), b), b), a), a), b)
= δ(δ(δ(δ(δ(q
2
, b), b), a), a), b)
= δ(δ(δ(δ(q
2
, b), a), a), b)
= δ(δ(δ(q
2
, a), a), b)
= δ(δ(q
3
, a), b)
= δ(q
3
, b)
= q
3
.
Defini¸ c˜ao 2.2. Formalmente, uma palavra x ´e dita ser aceita pelo AFD M se
ˆ
δ(s, x) ∈ F
e rejeitada pelo AFD M se
ˆ
δ(s, x) ,∈ F
onde s ´e o estado inicial e F ´e o conjunto de estados finais de M.
A linguagem aceita por M ´e o conjunto de todas as palavras aceitas por M e ´e denotada por
L(M):
L(M) = ¦x ∈ Σ

[
ˆ
δ(s, x) ∈ F¦.
Defini¸ c˜ao 2.3. Uma linguagem L ⊆ Σ

´e dita regular se L = L(M) para algum AFD M.
9
2.3 Exemplos
Exemplo 2.2. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦0, 1¦

[ [x[ ´e par¦.
Solu¸c˜ao:
Seja
M = (Q, Σ, δ, s, F)
tal que Q = ¦q
0
, q
1
¦, Σ = ¦0, 1¦, s = q
0
, F = ¦q
0
¦ e δ : QΣ → Q ´e tal que
δ 0 1
q
0
q
1
q
1
q
1
q
0
q
0
Exemplo 2.3. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦0, 1¦

[ x come¸ca ou termina com 01¦.
Solu¸c˜ao:
Seja
M = (Q, Σ, δ, s, F)
tal que Q = ¦q
0
, q
1
, q
2
, q
3
, q
4
, q
5
¦, Σ = ¦0, 1¦, s = q
0
, F = ¦q
2
, q
5
¦ e δ : QΣ → Q ´e tal que
δ 0 1
q
0
q
1
q
4
q
1
q
3
q
2
q
2
q
2
q
2
q
3
q
3
q
5
q
4
q
3
q
4
q
5
q
3
q
4
Exemplo 2.4. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦0, , 9¦

[ o n´ umero x em decimal ´e um m´ ultiplo de 3¦.
Solu¸c˜ao:
Seja
M = (Q, Σ, δ, s, F)
tal que Q = ¦q
0
, q
1
, q
2
¦, Σ = ¦0, 1, 2, 3, 4, 5, 6, 7, 8, 9¦, s = q
0
, F = ¦q
0
¦ e δ : Q Σ → Q ´e tal
que
10
δ 0 1 2 3 4 5 6 7 8 9
q
0
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
2
q
2
q
0
q
1
q
2
q
0
q
1
q
2
q
0
q
1
q
2
2.4 Exerc´ıcios
1. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer. Ent˜ao, mostre que, para quaisquer x, y ∈ Σ

e qualquer q ∈ Q,
ˆ
δ(q, xy) =
ˆ
δ(
ˆ
δ(q, x), y).
2. Especifique um AFD M tal que L(M) seja o conjunto de palavras w sobre ¦0, 1¦ tal que
[w[
0
´e par e [w[
1
´e um m´ ultiplo de 3.
3. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦a, b, c¦

[ todo b em x ´e imediatamente seguido por um c¦.
4. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦a, b¦

[ x tem dois b’s consecutivos e x n˜ao tem dois a’s consecutivos¦.
5. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦a, b, c¦

[ todo b em x ´e eventualmente seguido por um c¦.
6. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦a, b¦

[ x n˜ao tem dois a’s e nem dois b’s consecutivos¦.
7. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦a, b, c¦

[ x come¸ ca e termina com letras distintas¦.
8. Especifique um AFD M tal que
L(M) = ¦x ∈ ¦0, 1, . . . , 9¦

[ a soma das letras de x ´e divis´ıvel por 7¦.
9. Especifique um AFD que aceite exatamente a linguagem consistindo de todas as palavras
w sobre ¦0, 1¦ tais que a palavra w interpretada como um n´ umero bin´ario seja um m´ ultiplo
de 3. Por exemplo, w = 0, w = 000, w = 11, w = 110, w = 001111 s˜ao palavras da
referida linguagem, enquanto w = 10 e w = 001000 n˜ao s˜ao.
11
10. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer. Ent˜ao, considere a seguinte defini¸ c˜ao indutiva da fun¸ c˜ao δ
1
: QΣ


Q:
ˆ
δ
1
(q, ǫ) = q e
ˆ
δ
1
(q, ax) =
ˆ
δ
1
(δ(q, a), x)
para todo q ∈ Q, a ∈ Σ e x ∈ Σ

. Mostre que
ˆ
δ
1
(q, y) =
ˆ
δ(q, y) para qualquer palavra
y ∈ Σ

.
11. Sejam
M
1
= (Q
1
, Σ, δ
1
, s
1
, F
1
) e M
2
= (Q
2
, Σ, δ
2
, s
2
, F
2
)
dois AFD’s com o mesmo alfabeto de entrada Σ. Ent˜ao, considere o AFD M
3
definido
como segue:
M
3
= (Q
3
, Σ, δ
3
, s
3
, F
3
)
onde
Q
3
= Q
1
Q
2
= ¦(p, q) [ p ∈ Q
1
e q ∈ Q
2
¦,
F
3
= F
1
F
2
= ¦(p, q) [ p ∈ F
1
e q ∈ F
2
¦,
s
3
= (s
1
, s
2
),
e seja
δ
3
: Q
3
Σ → Q
3
a fun¸ c˜ao de transi¸ c˜ao definida por
δ
3
((p, q), a) = (δ
1
(p, a), δ
2
(q, a)).
O autˆomato M
3
´e denominado o produto de M
1
e M
2
. Agora, responda as duas seguintes
quest˜oes:
(a) Calcule o AFD produto M
3
dos AFD’s M
1
e M
2
dados pelas tabelas abaixo:
a b
→ q
0
q
0
q
1
q
1
F q
1
q
0
a b
→ q
0
q
1
q
2
q
1
q
2
q
0
q
2
F q
0
q
1
M
1
M
2
(b) A fun¸ c˜ao de transi¸ c˜ao estendida do AFD produto ´e definida indutivamente como
ˆ
δ
3
((p, q), ǫ) = (p, q) e
ˆ
δ
3
((p, q), xa) = δ
3
(
ˆ
δ
3
((p, q), x), a)
para toda palavra x ∈ Σ

e letra a ∈ Σ. Usando a defini¸ c˜ao acima, mostre que
L(M
3
) = L(M
1
) ∩ L(M
2
).
12
12. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer.
Considere o AFD M,
M = (Q, Σ, δ, s, F)
tal que Q = Q, s = s, F = Q − F, e δ(q, a) = δ(q, a), para todo q ∈ Q(= Q) e a ∈ Σ.
Ent˜ao, mostre que L(M) = Σ

−L(M).
13. Escreva um algoritmo que recebe como entrada um AFD M e uma palavra x sobre o
alfabeto de entrada de M e ent˜ao decide se x pertence ou n˜ao a L(M).
14. Escreva um algoritmo que recebe como entrada um AFD M e uma palavra x sobre o
alfabeto de entrada de M e ent˜ao decide se x pertence ou n˜ao a L(M).
15. Dado qualquer conjunto X, para quaisquer subconjuntos A e B de X, mostre que A ⊆ B
se, e somente se, A ∩ B = ∅, onde B ´e o complemento de B em rela¸ c˜ao a X.
16. Dados dois AFD’s, M
1
e M
2
, escreva um algoritmo para decidir se L(M
1
) ⊆ L(M
2
). Dica:
considere os dois problemas anteriores e o AFD produto.
17. Seja M = (Q, Σ, δ, s, F) um AFD. Forne¸ ca uma condi¸ c˜ao suficiente para que ǫ ∈ L(M).
A sua condi¸ c˜ao ´e tamb´em necess´aria? Justifique sua resposta.
18. Seja M = (Q, Σ, δ, s, F) um AFD qualquer. Especifique um outro AFD,
M

= (Q

, Σ, δ

, s

, F

),
definido em termos de Q, δ, s e F, tal que L(M

) = L(M) −¦ǫ¦.
19. Seja L a linguagem consistindo de todas as palavras w sobre ¦a, b¦ tais que [w[
a
´e par e
[w[
b
´e ´ımpar. Mostre que L ´e uma linguagem regular.
20. Dada uma palavra w, a palavra reversa w
r
de w ´e definida indutivamente como segue:
ǫ
r
= ǫ (xa)
r
= ax
r
onde a ∈ Σ e x ∈ Σ

. Dada uma linguagem L, n´os definimos
L
r
= ¦w
r
[ w ∈ L¦.
Prove que se L ´e uma linguagem regular, ent˜ao L
r
´e uma linguagem regular.
13
Cap´ıtulo 3
Autˆomatos Finitos N˜ao-Determin´ısticos
3.1 Uma vis˜ao informal dos AFND’s
Um autˆomato finito n˜ao-determin´ıstico (AFND) ´e um autˆomato para o qual o pr´oximo estado
n˜ao ´e necessariamente determinado unicamente pelo estado atual e o pr´oximo s´ımbolo a ser lido
da entrada. Em um AFD, h´a exatamente um estado inicial e, para cada s´ımbolo do alfabeto de
entrada, h´a exatamente uma transi¸ c˜ao a partir de cada estado. Em um AFND, pode haver um
ou mais estados iniciais e, para cada s´ımbolo do alfabeto de entrada, pode haver uma, nenhuma
ou mais de uma transi¸ c˜ao a partir de cada estado.
O conjunto de poss´ıveis estados para os quais o autˆomato pode se mover a partir de um estado
particular q e em resposta a um s´ımbolo a de entrada ´e parte da especifica¸ c˜ao do autˆomato,
mas n˜ao h´a nenhum mecanismo determin´ıstico para se saber para qual dos estados o autˆomato
realmente se mover´a.
Um AFND aceita uma palavra x se for poss´ıvel processar x a partir de um dos estados iniciais,
movendo-se de acordo com as regras de transi¸ c˜ao e fazendo escolhas ao longo do processamento
de x sempre que o pr´oximo estado n˜ao puder ser unicamente determinado, tal que quando o
final de x for atingido, o autˆomato esteja em um estado final. Devido ao fato do estado inicial
n˜ao ser unicamente determinado (no caso de haver mais de um) e ` as escolhas feitas durante o
processamento, pode haver v´arios poss´ıveis processamentos para uma mesma palavra de entrada
x. N˜ao obstante, o autˆomato aceita x se pelo menos um desses poss´ıveis processamentos de x,
come¸ cando em um estado inicial, terminar em um estado final. O autˆomato rejeita x se nenhum
dos poss´ıveis processamentos, come¸ cando em qualquer um dos estados iniciais, terminar em um
estado final.
Como exemplo, considere a linguagem
L = ¦x ∈ ¦0, 1¦

[ a quinta letra de x a partir da direita ´e 1¦.
Fig. 3.1 mostra um AFND M que aceita exatamente L. Note que M possui apenas um estado
14
inicial, q
0
. Este autˆomato n˜ao ´e determin´ıstico, pois h´a duas transi¸ c˜oes a partir de q
0
para o
s´ımbolo 1 e n˜ao h´a nenhuma transi¸ c˜ao a partir de q
5
. Este autˆomato aceita a linguagem L,
pois para qualquer palavra x cuja quinta letra ´e 1, h´a uma seq¨ uˆencia de transi¸ c˜oes a partir de
q
0
at´e q
5
.
q
0
q
1
q
2
q
3
q
4
q
5
1
0, 1 0, 1 0, 1 0, 1
0, 1
Figura 3.1: Diagrama de transi¸ c˜ao de estados de um AFND.
Por exemplo, seja x = 11010010. Quando M lˆe a letra 1, ele pode permanecer em q
0
ou ir para
q
1
. Suponha que M “advinhe” corretamente que ele deve permanecer em q
0
. O mesmo acontece
para a segunda letra de x, 1. Quando M lˆe a terceira letra de x, 0, ele permanece em q
0
, pois
n˜ao h´a outra op¸ c˜ao. Ap´os ler a quarta letra de x, 1, suponha que M advinhe corretamente
que ele deve passar para o estado q
1
. Da´ı por diante, as pr´oximas transi¸ c˜oes s˜ao determinadas
unicamente pelo estado atual e pr´oxima letra a ser lida. Logo, ap´os a leitura da ´ ultima letra de
x, M estar´a em seu estado final q
5
. Por outro lado, se a quinta letra da direita para a esquerda
de x n˜ao for 1, n˜ao h´a nenhuma seq¨ uˆencia poss´ıvel de transi¸ c˜ oes que atinja um estado final de
M. Por quˆe?
3.2 Defini¸c˜ao
Defini¸ c˜ao 3.1. Um autˆomato finito n˜ao-determin´ıstico (AFND) N ´e uma qu´ıntupla
N = (Q, Σ, ∆, S, F),
onde as partes s˜ ao exatamente as mesmas de um autˆomato finito determin´ıstico, exceto pelas
seguintes diferen¸ cas:
• S ´e um conjunto de estados, isto ´e, S ⊆ Q, ao inv´es de ser um ´ unico estado. Os elementos
de S s˜ ao chamados estados iniciais.
• ∆ ´e uma fun¸ c˜ao
∆ : QΣ → 2
Q
,
onde 2
Q
denota o conjunto das partes de Q, ou seja, o conjunto de todos os subconjuntos
de Q:
2
Q
= ¦A [ A ⊆ Q¦.
15
Como exemplo, considere o AFND N da Fig. 3.1:
N = (Q, Σ, ∆, S, F)
onde
Q = ¦q
0
, q
1
, q
2
, q
3
, q
4
, q
5
¦,
Σ = ¦0, 1¦,
S = ¦q
0
¦,
F = ¦q
5
¦
e ∆ ´e dada pela tabela abaixo:
∆ 0 1
q
0
¦q
0
¦ ¦q
0
, q
1
¦
q
1
¦q
2
¦ ¦q
2
¦
q
2
¦q
3
¦ ¦q
3
¦
q
3
¦q
4
¦ ¦q
4
¦
q
4
¦q
5
¦ ¦q
5
¦
q
5
∅ ∅
Intuitivamente, ∆(p, a) ´e o conjunto de todos os estados para os quais N pode se mover a partir
de p ao ler o s´ımbolo de entrada a. N´os escrevemos
p
a
−→ q
se q ∈ ∆(p, a). O conjunto ∆(p, a) pode ser o conjunto vazio ∅. A fun¸ c˜ao ∆ ´e chamada fun¸ c˜ao
de transi¸c˜ao.
3.3 A linguagem aceita por um AFND
Defini¸ c˜ao 3.2. A fun¸ c˜ao ∆ pode ser estendida por indu¸c˜ao de maneira natural para uma
fun¸ c˜ao
ˆ
∆ : 2
Q
Σ

→ 2
Q
de acordo com as regras
ˆ
∆(A, ǫ) = A (3.1)
e
ˆ
∆(A, xa) =
_
q∈
ˆ
∆(A,x)
∆(q, a). (3.2)
A fun¸ c˜ao
ˆ
∆ ´e chamada de fun¸ c˜ao de transi¸ c˜ao estendida.
16
Intuitivamente, para A ⊆ Q e x ∈ Σ

,
ˆ
∆(A, x) ´e o conjunto de todos os estados que podem ser
atingidos ao se processar a palavra x a partir de algum estado em A. Note que
ˆ
∆ possui um
´ unico estado como seu primeiro argumento e um ´ unico s´ımbolo como seu segundo argumento,
enquanto ∆ possui um conjunto de estados como seu primeiro argumento e uma palavra como
seu segundo argumento.
Eq. (3.1) nos diz que o conjunto de todos os estados que podem ser atingidos a partir de um
estado em A ao se processar a palavra vazia ´e o pr´oprio A. Na Eq. (3.2), a nota¸ c˜ao do lado
direito denota a uni˜ao de todos os conjuntos ∆(q, a) para q ∈
ˆ
∆(A, x). Em outras palavras, um
estado r pertence a
ˆ
∆(A, xa) se existir um estado q em
ˆ
∆(A, x) tal que r perten¸ ca a ∆(q, a),
como ilustrado a seguir:
p
x
−−−−−−−−−−−−−−−−− → q
a
−→ r
Note que, para a ∈ Σ,
ˆ
∆(A, a) =
_
p∈
ˆ
∆(A,ǫ)
∆(p, a)
=
_
p∈A
∆(p, a).
Defini¸ c˜ao 3.3. O autˆomato N aceita x ∈ Σ

se
ˆ
∆(S, x) ∩ F ,= ∅.
Em outras palavras, N aceita x se existir um estado final q tal que q pode ser atingido a partir
de um estado inicial ao se processar a palavra de entrada x. Caso contr´ ario, dizemos que N
rejeita x.
A linguagem, L(N), de todas as palavras aceitas por N ´e definida como
L(N) = ¦x ∈ Σ

[
ˆ
∆(S, x) ∩ F ,= ∅¦.
3.4 Exemplos
Exemplo 3.1. Seja
N = (Q, Σ, ∆, S, F)
um AFND tal que Q = ¦q, r, s, t¦, Σ = ¦a, b¦, S = ¦q¦, F = ¦t¦ e ∆ : QΣ → 2
Q
´e a fun¸ c˜ao
de transi¸c˜ao definida pela tabela a seguir:
∆ a b
q ¦q, r¦ ¦q¦
r ¦s¦ ∅
s ∅ ¦t¦
t ¦t¦ ¦t¦
17
Ent˜ao,
(a) Calcule
ˆ
∆(¦q¦, bbaaba).
(b) Descreva L(N).
Solu¸c˜ao:
(a)
ˆ
∆(¦q¦, bbaaba) =

p∈
ˆ
∆({q},bbaab)
∆(p, a)
ˆ
∆(¦q¦, bbaab) =

p∈
ˆ
∆({q},bbaa)
∆(p, b)
ˆ
∆(¦q¦, bbaa) =

p∈
ˆ
∆({q},bba)
∆(p, a)
ˆ
∆(¦q¦, bba) =

p∈
ˆ
∆({q},bb)
∆(p, a)
ˆ
∆(¦q¦, bb) =

p∈
ˆ
∆({q},b)
∆(p, a)
ˆ
∆(¦q¦, b) =

p∈
ˆ
∆({q},ǫ)
∆(p, b) =

p∈{q}
∆(p, b) = ¦q¦
Logo,
ˆ
∆(¦q¦, bb) =

p∈
ˆ
∆({q},b)
∆(p, b) =

p∈{q}
∆(p, b) = ¦q¦
ˆ
∆(¦q¦, bba) =

p∈
ˆ
∆({q},bb)
∆(p, a) =

p∈{q}
∆(p, a) = ¦q, r¦
ˆ
∆(¦q¦, bbaa) =

p∈
ˆ
∆({q},bba)
∆(p, a) =

p∈{q,r}
∆(p, a) = ¦q, r, s¦
ˆ
∆(¦q¦, bbaab) =

p∈
ˆ
∆({q},bbaa)
∆(p, b) =

p∈{q,r,s}
∆(p, b) = ¦q, t¦
ˆ
∆(¦q¦, bbaaba) =

p∈
ˆ
∆({q},bbaab)
∆(p, a) =

p∈{q,t}
∆(p, a) = ¦q, r, t¦
(b) L(N) ´e a linguagem consistindo de todas as palavras da forma xaaby, onde x, y ∈ ¦a, b¦

.
Exemplo 3.2. Seja
N = (Q, Σ, ∆, S, F)
um AFND tal que Q = ¦q, r, s, t¦, Σ = ¦a, b¦, S = ¦q¦, F = ¦q¦ e ∆ : QΣ → 2
Q
´e a fun¸ c˜ao
de transi¸c˜ao definida pela tabela a seguir:
∆ a b
q ¦q, r, s, t¦ ∅
r ∅ ¦q¦
s ∅ ¦r¦
t ∅ ¦s¦
Ent˜ao, dˆe uma palavra que come¸ca com a letra a e n˜ ao ´e aceita por N.
Solu¸c˜ao:
abbbb
18
3.5 Exerc´ıcios
1. Especifique autˆomatos finitos n˜ao-determin´ısticos que aceitem as linguagens a seguir.
Procure tirar proveito do n˜ao-determinismo tanto quanto poss´ıvel:
(a) O conjunto de palavras sobre o alfabeto ¦0, 1, . . . , 9¦ tal que o ´ ultimo d´ıgito da
palavra tenha pelo menos outra ocorrˆencia na palavra.
(b) O conjunto de palavras sobre o alfabeto ¦0, 1, . . . , 9¦ tal que o ´ ultimo d´ıgito da
palavra n˜ao tenha outra ocorrˆencia na palavra.
(c) O conjunto de palavras sobre o alfabeto ¦0, 1¦ tal que, em qualquer palavra, n˜ao h´a
dois 0’s separados por um n´ umero de posi¸ c˜oes que seja m´ ultiplo de 4. Observe que
0 ´e um m´ ultiplo de 4.
2. Desenhe o diagrama de transi¸ c˜ao de estados ou escreva as cinco partes formais, Q, Σ, ∆,
S e F, de um autˆomato finito n˜ao determin´ıstico
N = (Q, Σ, ∆, S, F),
tal que Q possui exatamente quatro estados e que L(N) ´e igual `a linguagem
¦01, 011, 0111¦

definida sobre o alfabeto ¦0, 1¦.
3. Seja L ⊆ ¦a, b, c¦

a linguagem consistindo de todas as palavras w sobre ¦a, b, c¦ que
possuem um n´ umero ´ımpar de a’s ou um n´ umero ´ımpar de b’s ou um n´ umero ´ımpar de
c’s; isto ´e,
L = ¦a, b, c, ab, ba, ac, ca, bc, cb, abc, . . .¦.
Ent˜ao,
(a) Especifique um AFND N com exatamente 7 estados tal que L(N) = L.
(b) Vocˆe consegue especificar um AFD D com 7 estados ou menos tal que L(D) = L?
Em caso afirmativo, especifique D. Caso contr´ario, explique (informalmente) porque
tal AFD n˜ao existe.
4. Seja Σ = ¦a
1
, . . . , a
n
¦ um alfabeto com n letras, para algum n ∈ Z e n ≥ 1. Ent˜ao
considere a linguagem L
n
que consiste de todas as palavras sobre Σ que possuem um
n´ umero ´ımpar de letras a
i
, para algum i ∈ ¦1, . . . , n¦. Isto ´e, para cada i ∈ ¦1, . . . , n¦, se
L
i
n
´e a linguagem de todas as palavras sobre Σ com um n´ umero ´ımpar de letras a
i
, ent˜ao
L
n
= L
1
n
∪ L
2
n
∪ L
n
n
=

n
i=1
L
i
n
.
(a) Especifique um AFND N com 2n ou 2n + 1 estados tal que L(N) = L
n
.
(b) Mostre que h´a um AFD M com 2
n
estados tal que L(M) = L
n
.
(c) Mostre que qualquer AFD M tal que L(M) = L
n
possui pelo menos 2
n
estados.
19
Cap´ıtulo 4
A Constru¸ c˜ao de Subconjuntos
4.1 Considera¸c˜oes iniciais
Neste cap´ıtulo, n´os provaremos um fato importante: em termos de “poder de aceita¸ c˜ao”,
autˆomatos finitos determin´ısticos e autˆomatos finitos n˜ao-determin´ısticos s˜ao equivalentes. Em
outras palavras:
1. Se L(M) ´e a linguagem aceita por um AFD M, ent˜ao existe um AFND N tal que L(N) =
L(M).
2. Se L(N) ´e a linguagem aceita por um AFND N, ent˜ao existe um AFD M tal que L(M) =
L(N).
A primeira implica¸ c˜ao ´e bastante ´obvia, pois se
M = (Q, Σ, δ, s, F),
ent˜ao basta definir
N = (Q, Σ, ∆, ¦s¦, F)
tal que
∆(q, a) = ¦δ(q, a)¦
para todo q ∈ Q e a ∈ Σ.
A defini¸ c˜ao acima implica que
ˆ
∆(¦q¦, x) = ¦
ˆ
δ(q, x)¦
para todo q ∈ Q e x ∈ Σ

. Consequentemente,
ˆ
∆(¦s¦, x) ∩ F ,= ∅ ⇐⇒
ˆ
δ(s, x) ∈ F.
20
Logo,
L(N) = L(M).
A segunda implica¸ c˜ao, no entanto, n˜ao ´e ´obvia, pois ela implica que o n˜ao-determinismo n˜ao
proporciona um ganho de poder de reconhecimento. Este fato intrigante foi anunciado e pro-
vado por Michael Rabin e Dana Scott em 1959, que descreveram um esquema, denominado
constru¸ c˜ao de subconjuntos, para construir um AFD M equivalente ao AFND N dado, ou seja,
um AFD M tal que
L(M) = L(N).
4.2 Equivalˆencia entre AFD e AFND
Seja
N = (Q
N
, Σ, ∆
N
, S
N
, F
N
)
um AFND qualquer. Agora, considere a constru¸ c˜ao de subconjuntos a seguir de um AFD M
equivalente a N:
Seja
M = (Q
M
, Σ, δ
M
, s
M
, F
M
)
onde
Q
M
= 2
Q
N
,
δ
M
(A, a) =
ˆ

N
(A, a),
s
M
= S
N
,
F
M
= ¦A ⊆ Q
N
[ A ∩ F
N
,= ∅¦.
Note que os estados de M s˜ao conjuntos de estados de N e que δ
M
´e uma fun¸ c˜ao de estados
de M e s´ımbolos de entrada em estados de M. O AFD M ´e tal que L(M) = L(N). Antes de
provar este fato, vamos ilustrar a constru¸ c˜ao de M atrav´es de um pequeno exemplo descrito
abaixo:
Exemplo 4.1. Considere o AFND N,
N = (Q
N
, Σ, ∆
N
, S
N
, F
N
)
tal que
Q
N
= ¦p, q, r¦,
Σ = ¦0, 1¦,
S
N
= ¦p¦,
F
N
= ¦r¦,
21
e

N
(p, 0) = ¦p¦,

N
(p, 1) = ¦p, q¦,

N
(q, 0) = ¦r¦,

N
(q, 1) = ¦r¦,

N
(r, 0) = ∅,

N
(r, 1) = ∅.
A linguagem L(N) aceita por N ´e
L(N) = ¦x ∈ ¦0, 1¦

[ o segundo s´ımbolo a partir da direita ´e 1¦.
Usando a constru¸ c˜ao de subconjuntos, temos que
M = (Q
M
, Σ, δ
M
, s
M
, F
M
),
onde
Q
M
= ¦∅, ¦p¦, ¦q¦, ¦r¦, ¦p, q¦, ¦p, r¦, ¦q, r¦, ¦p, q, r¦¦,
s
M
= ¦p¦,
F
M
= ¦¦r¦, ¦p, r¦, ¦q, r¦, ¦p, q, r¦¦,
e δ
M
´e dada pela tabela a seguir:
δ
M
0 1
∅ ∅ ∅
¦p¦ ¦p¦ ¦p, q¦
¦q¦ ¦r¦ ¦r¦
¦r¦ ∅ ∅
¦p, q¦ ¦p, r¦ ¦p, q, r¦
¦p, r¦ ¦p¦ ¦p, q¦
¦q, r¦ ¦r¦ ¦r¦
¦p, q, r¦ ¦p, r¦ ¦p, q, r¦
Note que os seguintes estados do AFD M do Ex. 4.1 s˜ao “inating´ıveis” a partir do estado inicial
s
M
= ¦p¦ de M: ∅, ¦q¦, ¦r¦ e ¦q, r¦. Logo, eles podem ser descartados de M, pois n˜ao possuem
22
nenhuma influˆencia no reconhecimento de palavras de L(M). Ser´a que ´e poss´ıvel modificar a
constru¸ c˜ao de subconjuntos de forma que apenas os estados “ating´ıveis” a partir de s
M
estejam
presentes em M?
Os seguintes resultados provam que L(M) = L(N):
Lema 4.1. Para quaisquer x, y ∈ Σ

e A ⊆ Q
N
,
ˆ

N
(A, xy) =
ˆ

N
(
ˆ

N
(A, x), y).
Demonstra¸c˜ao. Vamos usar indu¸ c˜ao em [y[.
Base ([y[ = 0)
Se [y[ = 0, ent˜ao y = ǫ. Para y = ǫ,
ˆ

N
(A, xy) =
ˆ

N
(A, xǫ)
=
ˆ

N
(A, x)
=
ˆ

N
(
ˆ

N
(A, x), ǫ) (pela Regra 3.1, Defini¸ c˜ao 3.2).
Hip´otese ([y[ = k)
Suponha que o lema seja verdadeiro para toda palavra y ∈ Σ

tal que [y[ = k, onde k ´e um
inteiro arbitr´ario (mas, fixo) e k ≥ 0.
Passo indutivo ([y[ = k + 1)
Considere y ∈ Σ

tal que [y[ = k + 1. Como k ≥ 0, podemos escrever y = wa, onde w ∈ Σ

,
[w[ = k e a ∈ Σ. Logo,
ˆ

N
(A, xy) =
ˆ

N
(A, xwa)
=
_
q∈
ˆ

N
(A,xw)

N
(q, a) (pela Regra 3.2, Defini¸ c˜ao 3.2)
=
_
q∈
ˆ

N
(
ˆ

N
(A,x),w)

N
(q, a) (pela hip´otese de indu¸ c˜ao)
=
ˆ

N
(
ˆ

N
(A, x), wa) (pela Regra 3.2, Defini¸ c˜ao 3.2)
=
ˆ

N
(
ˆ

N
(A, x), y).
Lema 4.2. Para quaisquer A ⊆ Q
N
e x ∈ Σ

,
ˆ
δ
M
(A, x) =
ˆ

N
(A, x).
Demonstra¸c˜ao. Vamos usar indu¸ c˜ao em [x[.
Base ([x[ = 0)
23
Se [x[ = 0, ent˜ao x = ǫ. Para x = ǫ,
ˆ
δ
M
(A, x) =
ˆ
δ
M
(A, ǫ) = A =
ˆ

N
(A, ǫ) =
ˆ

N
(A, x)
pelas defini¸ c˜oes de
ˆ
δ
M
e
ˆ

N
.
Hip´otese ([x[ = k)
Suponha que o lema seja verdadeiro para toda palavra x ∈ Σ

tal que [x[ = k, onde k ´e um
inteiro arbitr´ario (mas, fixo) e k ≥ 0.
Passo indutivo ([x[ = k + 1)
Considere x ∈ Σ

tal que [x[ = k + 1. Como k ≥ 0, podemos escrever x = wa, onde w ∈ Σ

,
[w[ = k e a ∈ Σ. Logo,
ˆ
δ
M
(A, x) =
ˆ
δ
M
(A, wa)
= δ
M
(
ˆ
δ
M
(A, w), a)
= δ
M
(
ˆ

N
(A, w), a) (pela hip´otese de indu¸ c˜ao)
=
ˆ

N
(
ˆ

N
(A, w), a) (pela defini¸ c˜ao de δ
M
)
=
ˆ

N
(A, wa) (pelo Lema 4.1)
=
ˆ

N
(A, x).
Teorema 4.1. Os autˆomatos M e N aceitam a mesma linguagem.
Demonstra¸c˜ao. Para qualquer x ∈ Σ

,
x ∈ L(M) ⇐⇒
ˆ
δ
M
(s
M
, x) ∈ F
M
(defini¸ c˜ao de aceita¸ c˜ao por M)
⇐⇒
ˆ

N
(S
N
, x) ∩ F
N
,= ∅ (defini¸ c˜ao de S
M
e F
M
e Lema 4.2)
⇐⇒ x ∈ L(N).
4.3 Exerc´ıcios
1. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer. N´os dizemos que um estado q de Q ´e ating´ıvel se, e somente se, existir
x ∈ Σ

tal que
ˆ
δ(s, x) = q.
24
Em outras palavras, um estado ´e dito ating´ıvel se, e somente se, existir um caminho de s
para q em M. Agora, considere o seguinte m´etodo para calcular o conjunto Q
a
de estados
ating´ıveis de M:
Defina a seq¨ uˆencia de subconjuntos de estados Q
i
a
⊆ Q tal que
Q
0
a
= ¦s¦ e Q
i+1
a
= ¦q ∈ Q [ ∃p ∈ Q
i
a
, ∃a ∈ Σ tais que δ(p, a) = q¦.
Ent˜ao,
(a) Prove, por indu¸ c˜ao em i, que Q
i
a
´e o conjunto de estados ating´ıveis a partir de s
usando caminhos de comprimento i (onde i contabiliza o n´ umero de transi¸ c˜oes); isto
´e,
Q
i
a
= ¦q ∈ Q [ ∃x ∈ Σ
i
tal que
ˆ
δ(s, x) = p¦.
(b) Dˆe um exemplo de um AFD M para o qual n˜ao existe um inteiro k tal que Q
k+1
a
= Q
k
a
.
(c) Mostre que a afirma¸ c˜ao de que existe um inteiro k tal que Q
k
a
= Q
a
, para qualquer
AFD M, ´e falsa.
(d) Mude a defini¸ c˜ao indutiva de Q
i
a
como segue:
Q
i+1
a
= Q
i
a
∪ ¦q ∈ Q
i
a
[ ∃p ∈ Q
i
a
, ∃a ∈ Σ tais que δ(p, a) = q¦.
Agora, para qualquer AFD M, mostre que existe um inteiro n˜ao-negativo k tal que
Q
k
a
= Q
a
.
(e) Defina o AFD
M
a
= (Q
a
, Σ, δ
a
, s, F
a
),
onde F
a
= F ∩ Q
a
e δ
a
: Q
a
Σ → Q
a
´e a restri¸ c˜ao de δ a Q
q
. Ent˜ao, Mostre que
L(M
a
) = L(M).
2. Seja
N = (Q, Σ, ∆, S, F)
um AFND qualquer. Mostre que, para quaisquer palavras x e y sobre Σ e qualquer
A ⊆ Q,
ˆ
∆(A, xy) =
ˆ
∆(
ˆ
∆(A, x), y).
3. Dado um AFND N para o qual ǫ ,∈ L(N), mostre que ´e poss´ıvel construir um AFND N

com as seguintes propriedades:
(a) N

possui exatamente um estado inicial.
(b) N

possui exatamente um estado final.
(c) L(N) = L(N

).
4. Dˆe um exemplo para mostrar que, se ǫ ∈ L(N), ent˜ao pode n˜ao ser poss´ıvel construir o
AFND N

no exerc´ıcio anterior.
25
q
0
q
1
q
2
q
3
a a a
a, b
Figura 4.1: AFND que aceita todas as palavras sobre ¦a, b¦ que terminam com aaa.
5. O seguinte autˆomato finito n˜ao-determin´ıstico aceita o conjunto de palavras em¦a, b¦

que
terminam com aaa. Converta este autˆomato para um determin´ıstico equivalente usando
a constru¸ c˜ao de subconjuntos. Ignore os estados inating´ıveis durante a constru¸ c˜ao do
AFD.
6. Converta o autˆomato finito n˜ao determin´ıstico,
N = (¦p, q, r, s, t¦, ¦0, 1¦, ¦p¦, ∆, ¦s, t¦) ,
onde ∆ : QΣ → 2
Q
´e dada pela tabela a seguir:
∆ 0 1
p ¦p, q¦ ¦p¦
q ¦r, s¦ ¦t¦
r ¦p, r¦ ¦t¦
s ∅ ∅
t ∅ ∅
em um AFD usando a constru¸ c˜ao de subconjuntos. Qual ´e a linguagem aceita por N?
26
Cap´ıtulo 5
Autˆomatos Finitos N˜ao Determin´ısticos com
Transi¸ c˜oes Vazias
5.1 Transi¸c˜oes vazias
Neste cap´ıtulo, n´os introduziremos um outro tipo de autˆomato finito n˜ao determin´ıstico: aquele
que cont´em transi¸c˜oes vazias. Este tipo de transi¸ c˜ao ´e bastante ´ util para se provar certas
propriedades das linguagens regulares, como veremos mais adiante. Mas, n˜ao acarreta nenhum
ganho de poder de reconhecimento de linguagens; isto ´e, AFND’s com transi¸ c˜oes vazias aceitam
exatamente a mesma classe de linguagens que os AFD’s e AFDN’s sem transi¸ c˜oes vazias: as
linguagens regulares.
Formalmente, uma transi¸c˜ao vazia ´e uma transi¸ c˜ao cujo s´ımbolo ´e ǫ. O autˆomato pode realizar
uma transi¸ c˜ao vazia sem precisar ler nenhum s´ımbolo da entrada. Por exemplo, considere o
AFDN com transi¸ c˜oes vazias dado abaixo:
s
p
t
q
u
r
b
ǫ
ǫ
b
ǫ
ǫ
b
Figura 5.1: Um AFND com transi¸ c˜oes vazias.
Se o autˆomato est´a no estado s e o pr´oximo s´ımbolo a ser lido ´e b, ele pode (n˜ao deterministi-
camente)
27
• ler o s´ımbolo b e mudar para o estado p;
• ler o s´ımbolo b e mudar para o estado p e, em seguida, mudar para o estado t sem ler
nenhum s´ımbolo de entrada;
• ler o s´ımbolo b e mudar para o estado p e, em seguida, mudar para o estado t e depois u
sem ler nenhum s´ımbolo de entrada;
• mudar para o estado t sem ler nenhum s´ımbolo de entrada, e da´ı ler b e mudar para o
estado q;
• mudar para o estado t sem ler nenhum s´ımbolo de entrada, e da´ı ler b e mudar para o
estado q e, em seguinda, mudar para o estado u sem ler nenhum s´ımbolo de entrada; ou
• mudar para o estado t sem ler nenhum s´ımbolo de entrada, mudar para o estado u sem
ler nenhum s´ımbolo de entrada, e da´ı ler b e mudar para o estado r.
5.2 Defini¸c˜ao
Defini¸ c˜ao 5.1. Um autˆomato finito n˜ao-determin´ıstico com transi¸ c˜oes vazias (ou um AFND-ǫ)
N, ´e uma qu´ıntupla
N = (Q, Σ, ∆, S, F)
onde Q, Σ, S e F s˜ ao definidos exatamente como em um AFDN e ∆ : Q(Σ ∪ ¦ǫ¦) → 2
Q
, a
fun¸ c˜ao de transi¸c˜ao, possui um dom´ınio distinto daquele da fun¸ c˜ao de transi¸ c˜ao de um AFND,
pois seus dois argumentos s˜ ao um estado em Q e um elemento de Σ ∪ ¦ǫ¦, que pode ser um
s´ımbolo de entrada de Σ ou o s´ımbolo ǫ. Aqui, n´ os assumimos que o s´ımbolo ǫ n˜ ao ´e um
elemento de Σ.
Por exemplo, o AFND-ǫ da Fig. 5.1 ´e tal que
Q = ¦s, p, t, q, u, r¦,
Σ = ¦b¦,
S = ¦s¦,
F = ¦r¦,
e ∆ ´e dada pela tabela abaixo:
28
∆ b ǫ
s ¦p¦ ¦t¦
p ∅ ¦t¦
t ¦q¦ ¦u¦
q ∅ ¦u¦
u ¦r¦ ∅
r ∅ ∅
5.3 Fecho-ǫ
A fun¸ c˜ao de transi¸ c˜ao estendida de um AFND-ǫ ´e definida em termos do conceito de fecho-ǫ
de um estado. Informalmente, o fecho-ǫ de um estado p em Q, denotado por fecho-ǫ(p), ´e
o conjunto de todos os estados de Q que podem ser atingidos a partir de p atrav´es de uma
seq¨ uˆencia de transi¸ c˜oes vazias. Formalmente, n´os definimos a seq¨ uˆencia de conjuntos de estados
(fec
i
-ǫ(p))
i≥0
como segue:
_
fec
i
-ǫ(p) = ¦p¦, se i = 0
fec
i
-ǫ(p) = fec
i−1
-ǫ(p) ∪ ¦q ∈ Q [ ∃s ∈ fec
i−1
-ǫ(p) tal que q ∈ ∆(s, ǫ)¦, se i > 0.
Como fec
i−1
-ǫ(p) ⊆ fec
i
-ǫ(p), fec
i
-ǫ(p) ⊆ Q, para todo i ≥ 0, e Q ´e um conjunto finito, n´os
podemos concluir que h´a um menor inteiro i, digamos i
0
, tal que fec
i
0
-ǫ(p) = fec
i
0
+1
-ǫ(p), e n´os
podemos verificar imediatamente que
fecho-ǫ(p) = fec
i
0
-ǫ(p).
Note que se n˜ao houver nenhuma transi¸ c˜ao vazia do estado p para qualquer outro estado de N,
ent˜ao fec
1
-ǫ(p) = fec
0
-ǫ(p) = ¦p¦. Logo,
fecho-ǫ(p) = ¦p¦.
Exemplo 5.1. Considere o AFND-ǫ da Fig. 5.1. O fecho-ǫ de cada um de seus estados ´e dado
a seguir:
• fecho-ǫ(s) = fec
2
-ǫ(s) = ¦s, t, u¦, pois
fec
0
-ǫ(s) = ¦s¦, fec
1
-ǫ(s) = ¦s, t¦, fec
2
-ǫ(s) = fec
3
-ǫ(s) = ¦s, t, u¦.
• fecho-ǫ(p) = fec
2
-ǫ(s) = ¦p, t, u¦, pois
fec
0
-ǫ(p) = ¦p¦, fec
1
-ǫ(p) = ¦p, t¦, fec
2
-ǫ(p) = fec
3
-ǫ(p) = ¦p, t, u¦.
• fecho-ǫ(t) = fec
1
-ǫ(t) = ¦t, u¦, pois
fec
0
-ǫ(t) = ¦t¦, fec
1
-ǫ(t) = fec
2
-ǫ(t) = ¦t, u¦.
29
• fecho-ǫ(q) = fec
1
-ǫ(q) = ¦q, u¦, pois
fec
0
-ǫ(q) = ¦q¦, fec
1
-ǫ(q) = fec
2
-ǫ(q) = ¦q, u¦.
• fecho-ǫ(u) = fec
0
-ǫ(u) = ¦u¦, pois
fec
0
-ǫ(u) = fec
1
-ǫ(u) = ¦u¦.
• fecho-ǫ(r) = fec
0
-ǫ(r) = ¦r¦, pois
fec
0
-ǫ(r) = fec
1
-ǫ(r) = ¦r¦.
Defini¸ c˜ao 5.2. Dado um subconjunto S de Q, n´ os definimos fecho-ǫ(S) como
fecho-ǫ(S) =
_
p∈S
fecho-ǫ(p).
Note que quando N n˜ao possui nenhuma transi¸ c˜ao vazia, ent˜ao
fecho-ǫ(S) = S.
5.4 A linguagem aceita por um AFND-ǫ
Para definirmos a linguagem aceita por um AFND-ǫ, precisamos primeiro definir a fun¸ c˜ao
de transi¸ c˜ao estendida para este tipo de autˆomato. Intuitivamente,
ˆ
∆(s, x) ´e o conjunto de
estados que podem ser atingidos atrav´es de uma seq¨ uˆencia de transi¸ c˜oes cujos r´otulos, quando
concatenados, formam a palavra x. Note que as transi¸ c˜oes ǫ em tal seq¨ uˆencia de transi¸ c˜oes n˜ao
contribuem com nenhum s´ımbolo de x.
Defini¸ c˜ao 5.3. Dado um AFND-ǫ N = (Q, Σ, ∆, S, F), a fun¸ c˜ao de transi¸ c˜ao estendida de N
ˆ
∆ : QΣ

→ 2
Q
´e definida como segue: para todo estado p ∈ Q, toda palavra x ∈ Σ

e todo s´ımbolo a ∈ Σ,
definimos
ˆ
∆(p, ǫ) = fecho-ǫ(p),
ˆ
∆(p, xa) = fecho-ǫ(
_
q∈
ˆ
∆(p,x)
∆(q, a)).
30
Exemplo 5.2. Considere o AFND-ǫ da Fig. 5.1 e a computa¸ c˜ao de
ˆ
∆(s, bbb) mostrada a seguir:
ˆ
∆(s, bbb) = fecho-ǫ(

k∈
ˆ
∆(s,bb)
∆(k, b)),
ˆ
∆(s, bb) = fecho-ǫ(

k∈
ˆ
∆(s,b)
∆(k, b)),
ˆ
∆(s, b) = fecho-ǫ(

k∈
ˆ
∆(s,ǫ)
∆(k, b)) = fecho-ǫ(

k∈fecho-ǫ({s})
∆(k, b)) = fecho-ǫ(¦∆(s, b)¦)
= fecho-ǫ(¦p¦) = fecho-ǫ(p) = ¦p, t, u¦,
ˆ
∆(s, bb) = fecho-ǫ(

k∈
ˆ
∆(s,b)
∆(k, b)) =
= fecho-ǫ(

k∈{p,t,u}
∆(k, b)) = fecho-ǫ(∆(p, b) ∪ ∆(t, b) ∪ ∆(u, b))
= fecho-ǫ(∅ ∪ ¦q¦ ∪ ¦r¦) = fecho-ǫ(¦q, r¦) = fecho-ǫ(q) ∪ fecho-ǫ(r) = ¦q, u, r¦,
ˆ
∆(s, bbb) = fecho-ǫ(

k∈
ˆ
∆(s,bb)
∆(k, b)) = fecho-ǫ(

k∈{q,u,r}
∆(k, b))
= fecho-ǫ(∆(q, b) ∪ ∆(u, b) ∪ ∆(r, b)) = fecho-ǫ(∅ ∪ ¦r¦ ∪ ∅) = fecho-ǫ(¦r¦)
= fecho-ǫ(r) = ¦r¦.
Defini¸ c˜ao 5.4. A linguagem L(N) aceita por um AFND-ǫ N = (Q, Σ, ∆, S, F) ´e o conjunto
L(N) = ¦x ∈ Σ

[
ˆ
∆(S, x) ∩ F ,= ∅¦.
5.5 Elimina¸c˜ao de transi¸ c˜oes vazias
Como dissemos antes, transi¸ c˜oes vazias n˜ao acarretam nenhum ganho de poder de reconheci-
mento de linguagens, pois qualquer AFND-ǫ pode ser convertido em um AFDN equivalente
como segue:
Dado qualquer AFND-ǫ N = (Q, Σ, ∆, S, F), considere o AFDN
N

= (Q∪ ¦s

¦, Σ, ∆

, S ∪ ¦s

¦, F

)
sem transi¸ c˜oes vazias tal que ∆

: QΣ → 2
Q
´e definida para todo p ∈ Q∪ ¦s

¦ e todo a ∈ Σ
como


(p, a) =
_
∅ se p = s

ˆ
∆(¦p¦, a) se p ,= s

,
e
F

=
_
F se ǫ ,∈ L(N)
F ∪ ¦s

¦ se ǫ ∈ L(N).
Exemplo 5.3. Seja N o AFND-ǫ da Fig. 5.1. Ent˜ao, o AFND N

´e tal que F

= F = ¦r¦ e


´e dada pela tabela abaixo:
31


b
s ¦p, t, q, u, r¦
p ¦q, u, r¦
t ¦q, u, r¦
q ¦r¦
u ¦r¦
r ∅
N´os vamos mostrar que L(N

) = L(N). Para tal, n´os primeiro mostramos que, para toda
palavra x ∈ Σ
+
,
ˆ


(S ∪ ¦s

¦, x) =
ˆ
∆(S, x).
Lema 5.1. Para toda palavra x ∈ Σ
+
,
ˆ


(S ∪ ¦s

¦, x) =
ˆ
∆(S, x).
Demonstra¸c˜ao. Vamos usar indu¸ c˜ao em [x[.
Base ([x[ = 1)
Se [x[ = 1, ent˜ao x = a para algum a ∈ Σ e, portanto,
ˆ


(S ∪ ¦s

¦, a) =
_
p∈
ˆ


(S∪{s

},ǫ)


(p, a) (pela defini¸ c˜ao de
ˆ


)
=
_
p∈S∪{s

}


(p, a) (pois,
ˆ


(S ∪ ¦s

¦, ǫ) = S ∪ ¦s

¦)
=
_
p∈S


(p, a) (pois, para todo b, temos ∆

(s

, b) = ∅)
=
_
p∈S
ˆ
∆(p, a) (pela defini¸ c˜ao de ∆

)
=
ˆ
∆(S, a).
Hip´otese ([x[ = k)
Assuma que o lema seja v´alido para toda palavra x ∈ Σ
k
, onde k ´e um inteiro arbitr´ario (mas,
fixo) com k ≥ 1.
Passo Indutivo ([x[ = k + 1)
32
Seja x ∈ Σ
k+1
. Como k ≥ 1, podemos escrever x = wa, onde w ∈ Σ
k
e a ∈ Σ. Agora, temos
que
ˆ


(S ∪ ¦s

¦, wa) =
_
p∈
ˆ


(S∪{s

},w)


(p, a) (pela defini¸ c˜ao de
ˆ


)
=
_
p∈
ˆ
∆(S,w)


(p, a) (pela hip´otese de indu¸ c˜ao)
=
_
p∈
ˆ
∆(S,w)
ˆ
∆(p, a) (pela defini¸ c˜ao de ∆

)
=
ˆ
∆(
ˆ
∆(S, w), a)
=
ˆ
∆(S, wa) (Exerc´ıcio 6 da lista 3)
=
ˆ
∆(S, x).
Teorema 5.1. L(N) = L(N

).
Demonstra¸c˜ao. Para qualquer x ∈ Σ

, considere os dois seguintes casos:
1. x = ǫ:
Se x ∈ L(N) ent˜ao, pela defini¸ c˜ao de F

, temos s

∈ F

. Como
ˆ


(S ∪¦s

¦, ǫ) = S ∪¦s

¦,
temos que (
ˆ


(S ∪¦s

¦, ǫ) ∩F

) ,= ∅ e, portanto, x ∈ L(N

). Por outro lado, se x ,∈ L(N)
ent˜ao, pela defini¸ c˜ao de F

, temos s

,∈ F

. Al´em disso, (S ∩ F

) = ∅, pois F

= F,
S ⊆ fecho-ǫ(S),
ˆ
∆(S, ǫ) = fecho-ǫ(S) e (
ˆ
∆(S, ǫ) ∩ F) = ∅. Logo, ((S ∪ ¦s

¦) ∩ F

) = ∅ e,
como
ˆ


(S ∪ ¦s

¦, ǫ) = S ∪ ¦s

¦, temos que (
ˆ


(S ∪ ¦s

¦, ǫ) ∩ F

) = ∅, o que implica que
x ,∈ L(N

).
2. x ,= ǫ:
x ∈ L(N) ⇐⇒ (
ˆ
∆(S, x) ∩ F) ,= ∅ (pela defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒ (
ˆ


(S ∪ ¦s

¦, x) ∩ F) ,= ∅ (pelo Lema 5.1)
⇐⇒ (
ˆ


(S ∪ ¦s

¦, x) ∩ F

) ,= ∅ (pois, F = F

ou F ∪ ¦s

¦ = F

)
⇐⇒ x ∈ L(N

).
33
5.6 Exerc´ıcios
1. Converta cada um dos dois seguintes autˆomatos finitos n˜ao-determin´ısticos com transi¸ c˜oes
vazias em seus equivalentes autˆomatos finitos n˜ao-determin´ısticos sem transi¸ c˜oes vazias:
(a) M
1
= (¦s
1
, s
2
¦, ¦a, b¦, ∆, ¦s
1
, s
2
¦, ¦s
0
¦), onde ∆ : QΣ → 2
Q
´e dada por
∆ a b ǫ
s
1
¦s
1
, s
2
¦ ∅ ¦s
2
¦
s
2
¦s
1
¦ ¦s
1
¦ ∅
(b) M
2
= (¦s
0
, s
1
, s
2
, s
3
¦, ¦a, b, c¦, ∆, ¦s
0
¦, ¦s
3
¦), onde ∆ : QΣ → 2
Q
´e dada por
∆ a b c ǫ
s
0
¦s
1
¦ ∅ ∅ ∅
s
1
∅ ¦s
2
¦ ∅ ¦s
0
¦
s
2
∅ ∅ ¦s
3
¦ ∅
s
3
∅ ∅ ∅ ¦s
1
¦
2. Dado um autˆomato finito n˜ao-determin´ıstico M com transi¸ c˜oes vazias, mostre que ´e sem-
pre poss´ıvel construir um autˆomato finito n˜ao-determin´ıstico M

sem transi¸ c˜oes vazias
com as seguintes propriedades:
(i) M

possui exatamente um estado inicial e exatamente um estado final, e
(ii) L(M

) = L(M).
3. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, mostre que a
linguagem L

´e regular, onde L

consiste de toda palavra w ∈ Σ

que pode ser formada a
partir da remo¸ c˜ao de uma ou mais letras de alguma palavra x ∈ L. Dica: construa um
AFND M

com transi¸c˜oes vazias a partir de qualquer AFD M que aceita L e prove que
L(M

) = L

.
4. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, mostre que a
linguagem L

´e regular, onde L

consiste de toda palavra w ∈ Σ

que pode ser formada
a partir da remo¸ c˜ao de exatamente uma letra de alguma palavra x ∈ L. Dica: construa
um AFND M

com transi¸c˜oes vazias a partir de qualquer AFD M que aceita L e prove
que L(M

) = L

.
34
Cap´ıtulo 6
Propriedades de Fechamento das Linguagens
Regulares
6.1 Considera¸c˜oes iniciais
Neste cap´ıtulo, provaremos algumas propriedades importantes das linguagens regulares. Tais
propriedades s˜ao da forma “se L ´e uma linguagem obtida a partir de uma determinada opera¸ c˜ ao
sobre uma ou mais linguagens regulares, ent˜ao L tamb´em ´e regular”. Tais propriedades s˜ao
conhecidas como propriedades de fechamento, pois mostram que a classe de linguagens regu-
lares ´e fechada em rela¸ c˜ao `a opera¸ c˜ao mencionada. Mais especificamente, n´os mostraremos as
seguintes propriedades de fechamento:
• A linguagem resultante da uni˜ao de duas linguagens regulares ´e regular.
• A linguagem resultante da interse¸ c˜ao de duas linguagens regulares ´e regular.
• O complemento de uma linguagem regular ´e uma linguagem regular.
• A linguagem resultante da concatena¸ c˜ao de duas linguagens regulares ´e regular.
• A estrela de uma linguagem regular ´e regular.
6.2 Fechamento sob uni˜ao
Teorema 6.1. Sejam L
1
e L
2
duas linguagens regulares quaisquer sobre o alfabeto Σ. Ent˜ao,
L
1
∪ L
2
´e regular.
35
Demonstra¸c˜ao. Sejam
M
1
= (Q
1
, Σ, δ
1
, s
1
, F
1
) e M
2
= (Q
2
, Σ, δ
2
, s
2
, F
2
)
dois autˆomatos finitos determin´ısticos tais que L
1
= L(M
1
) e L
2
= L(M
2
). Assuma que
Q
1
∩Q
2
,= ∅, o que ´e sempre poss´ıvel atrav´es de uma renomea¸ c˜ao dos estados de M
1
ou M
2
, se
necess´ario.
N´os queremos mostrar que L
1
∪ L
2
tamb´em ´e regular. Para tal, n´os constru´ımos o AFND
N = (Q, Σ, ∆, S, F)
tal que
Q = Q
1
∪ Q
2
, S = ¦s
1
, s
2
¦, F = F
1
∪ F
2
,
e, para todo estado p ∈ Q e todo s´ımbolo a ∈ Σ,
∆(p, a) =
_
_
_
¦δ
1
(p, a)¦ se p ∈ Q
1
¦δ
2
(p, a)¦ se p ∈ Q
2
.
N´os afirmamos que L(N) = L
1
∪ L
2
. Para provar que nossa afirma¸ c˜ao ´e v´alida, n´os primeiro
mostramos que
ˆ
∆(S, x) = ¦
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)¦ para toda palavra x ∈ Σ

. Nossa prova ´e por
indu¸ c˜ao em [x[.
Base ([x[ = 0)
Se [x[ = 0 ent˜ao x = ǫ e
ˆ
∆(S, x) =
ˆ
∆(S, ǫ)
= S
= ¦s
1
, s
2
¦
= ¦
ˆ
δ
1
(s
1
, ǫ),
ˆ
δ
2
(s
2
, ǫ)¦
= ¦
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)¦.
Hip´otese ([x[ = k)
Assuma que nossa afirma¸ c˜ao seja v´alida para toda palavra x ∈ Σ
k
, onde k ´e um inteiro n˜ao-
negativo arbitr´ario (mas, fixo).
Passo indutivo ([x[ = k + 1)
Seja x qualquer palavra em Σ
k+1
. Ent˜ao, podemos escrever x = wa, onde w ∈ Σ
k
e a ∈ Σ.
36
Agora, temos:
ˆ
∆(S, x) =
ˆ
∆(S, wa)
=
_
q∈
ˆ
∆(S,w)
∆(q, a)
=
_
q∈{
ˆ
δ
1
(s
1
,w),
ˆ
δ
2
(s
2
,w)}
∆(q, a)
= ∆(
ˆ
δ
1
(s
1
, w), a) ∪ ∆(
ˆ
δ
2
(s
2
, w), a)
= ¦δ
1
(
ˆ
δ
1
(s
1
, w), a)¦ ∪ ¦δ
2
(
ˆ
δ
2
(s
2
, w), a)¦
= ¦
ˆ
δ
1
(s
1
, wa),
ˆ
δ
2
(s
2
, wa)¦
= ¦
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)¦.
Agora, vamos mostrar que L(N) = L
1
∪ L
2
:
∀x ∈ Σ

, x ∈ L(N) ⇐⇒ (
ˆ
∆(S, x) ∩ F) ,= ∅
⇐⇒ (¦
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)¦ ∩ (F
1
∪ F
2
)) ,= ∅
⇐⇒ (
ˆ
δ
1
(s
1
, x) ∈ F
1
) ou (
ˆ
δ
2
(s
2
, x) ∈ F
2
)
⇐⇒ (x ∈ L(M
1
)) ou (x ∈ L(M
2
))
⇐⇒ x ∈ (L
1
∪ L
2
).
6.3 Fechamento sob interse¸ c˜ao
Teorema 6.2. Sejam L
1
e L
2
duas linguagens regulares quaisquer sobre o alfabeto Σ. Ent˜ao,
L
1
∩ L
2
´e regular.
37
Demonstra¸c˜ao. Sejam
M
1
= (Q
1
, Σ, δ
1
, s
1
, F
1
) e M
2
= (Q
2
, Σ, δ
2
, s
2
, F
2
)
dois autˆomatos finitos determin´ısticos tais que L
1
= L(M
1
) e L
2
= L(M
2
). Assuma que
Q
1
∩Q
2
,= ∅, o que ´e sempre poss´ıvel atrav´es de uma renomea¸ c˜ao dos estados de M
1
ou M
2
, se
necess´ario.
N´os queremos mostrar que L
1
∩ L
2
tamb´em ´e regular. Para tal, n´os definimos o AFD
M = (Q, Σ, δ, s, F)
onde
Q = Q
1
Q
2
= ¦(p, q) [ p ∈ Q
1
e q ∈ Q
2
¦,
F = F
1
F
2
= ¦(p, q) [ p ∈ F
1
e q ∈ F
2
¦,
s = (s
1
, s
2
),
e seja
δ : QΣ → Q
a fun¸ c˜ao de transi¸ c˜ao definida por
δ((p, q), a) = (δ
1
(p, a), δ
2
(q, a)).
O autˆomato M ´e denominado o produto de M
1
e M
2
. N´os afirmamos que L(M) = L
1

L
2
. Para mostrar que nossa afirma¸ c˜ao ´e verdadeira, n´os primeiro mostramos que
ˆ
δ(s, x) =
(
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)) para toda palavra x ∈ Σ

. Nossa prova ´e por indu¸ c˜ao em [x[.
Base ([x[ = 0)
Se [x[ = 0 ent˜ao x = ǫ e
ˆ
δ(s, x) =
ˆ
δ(s, ǫ)
= s
= (s
1
, s
2
)
= (
ˆ
δ
1
(s
1
, ǫ),
ˆ
δ
2
(s
2
, ǫ))
= (
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)).
Hip´otese ([x[ = k)
Assuma que nossa afirma¸ c˜ao seja v´alida para toda palavra x ∈ Σ
k
, onde k ´e um inteiro n˜ao-
negativo arbitr´ario (mas, fixo).
38
Passo indutivo ([x[ = k + 1)
Seja x qualquer palavra em Σ
k+1
. Ent˜ao, podemos escrever x = wa, onde w ∈ Σ
k
e a ∈ Σ.
Agora, temos:
ˆ
δ(s, x) =
ˆ
δ(s, wa)
= δ(
ˆ
δ(s, w), a)
= δ((
ˆ
δ
1
(s
1
, w),
ˆ
δ
2
(s
2
, w)), a)
= (δ
1
(
ˆ
δ
1
(s
1
, w), a), δ
2
(
ˆ
δ
2
(s
2
, w), a))
= (
ˆ
δ
1
(s
1
, wa),
ˆ
δ
2
(s
2
, wa))
= (
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)).
Agora, vamos mostrar que L(M) = L
1
∩ L
2
:
∀x ∈ Σ

, x ∈ L(M) ⇐⇒
ˆ
δ(s, x) ∈ F
⇐⇒ (
ˆ
δ
1
(s
1
, x),
ˆ
δ
2
(s
2
, x)) ∈ (F
1
F
2
)
⇐⇒ (
ˆ
δ
1
(s
1
, x) ∈ F
1
) e (
ˆ
δ
2
(s
2
, x) ∈ F
2
)
⇐⇒ (x ∈ L(M
1
)) e (x ∈ L(M
2
))
⇐⇒ x ∈ (L
1
∩ L
2
).
6.4 Fechamento sob complemento
Teorema 6.3. Seja L uma linguagem regular qualquer sobre o alfabeto Σ. Ent˜ao, L = Σ

−L
´e regular.
Demonstra¸c˜ao. Seja
M = (Q, Σ, δ, s, F)
39
um autˆomato finito determin´ıstico tal que L = L(M).
N´os queremos mostrar que L = Σ

−L tamb´em ´e regular. Para tal, n´os definimos o AFD
M = (Q, Σ, δ, s, F)
onde F = Q−F. Agora, temos que:
∀x ∈ Σ

, x ∈ L(M) ⇐⇒
ˆ
δ(s, x) ∈ F
⇐⇒
ˆ
δ(s, x) ,∈ (Q−F)
⇐⇒
ˆ
δ(s, x) ,∈ F
⇐⇒ x ,∈ L(M).
Logo, L(M) = Σ

−L(M) = Σ

−L.
6.5 Fechamento sob concatena¸c˜ao
Teorema 6.4. Sejam L
1
e L
2
duas linguagens regulares quaisquer sobre o alfabeto Σ. Ent˜ao,
L
1
L
2
´e regular.
Demonstra¸c˜ao. Sejam
M
1
= (Q
1
, Σ, δ
1
, s
1
, F
1
) e M
2
= (Q
2
, Σ, δ
2
, s
2
, F
2
)
dois autˆomatos finitos determin´ısticos tais que L
1
= L(M
1
) e L
2
= L(M
2
). Assuma que
Q
1
∩Q
2
,= ∅, o que ´e sempre poss´ıvel atrav´es de uma renomea¸ c˜ao dos estados de M
1
ou M
2
, se
necess´ario.
N´os queremos mostrar que L
1
L
2
tamb´em ´e regular. Para tal, n´os definimos o autˆomato finito
n˜ao determin´ıstico com transi¸ c˜oes vazias
N = (Q, Σ, ∆, S, F)
onde
Q = Q
1
∪ Q
2
, S = ¦s
1
¦, F = F
2
,
e seja
∆ : Q(Σ ∪ ǫ) → 2
Q
a fun¸ c˜ao de transi¸ c˜ao definida por
∆(p, a) =
_
_
_
¦δ
1
(p, a)¦ se p ∈ Q
1
¦δ
2
(p, a)¦ se p ∈ Q
2
40
para todo p ∈ Q e todo a ∈ Σ, e
∆(p, ǫ) =
_
_
_
¦s
2
¦ se p ∈ F
1
∅ se p ∈ Q−F
1
para todo p ∈ Q.
N´os afirmamos que L(N) = L
1
L
2
. A prova da veracidade de nossa afirma¸ c˜ao ´e bastante
tediosa e n´os apenas descrevemos a id´eia geral aqui. De acordo com nossa constru¸ c˜ao, existem
transi¸ c˜oes vazias apenas dos estados finais de M
1
para o estado inicial de M
2
. Logo, ao ler uma
palavra x aceita por M
1
, o estado inicial de M
2
estar´a no conjunto de estados resultantes de
ˆ
∆(¦s
1
¦, x). Por outro lado, se x n˜ao for aceita por M
1
, o estado inicial de M
2
n˜ao estar´a no
conjunto de estados resultantes de
ˆ
∆(¦s
1
¦, x). Como toda palavra w ∈ L
1
L
2
´e da forma xy,
com x ∈ M
1
e y ∈ M
2
, e como s
2

ˆ
∆(¦s
1
¦, x) e
ˆ
∆(¦s
1
¦, xy) =
ˆ
∆(
ˆ
∆(¦s
1
¦, x), y), n´os temos
que w = xy ∈ L(N). Por outro lado, se w ,∈ L
1
L
2
, ent˜ao w n˜ao ´e da forma xy, com x ∈ M
1
e
y ∈ M
2
. Isto significa que, se considerarmos quaisquer palavras x e y tais que w = xy, temos
que (a) x ,∈ M
1
e y ∈ M
2
, (b) x ∈ M
1
e y ,∈ M
2
, ou (c) x ,∈ M
1
e y ,∈ M
2
. No caso (a), temos
que p ,∈
ˆ
∆(¦s
1
¦, x) para todo p ∈ Q
2
, pois
ˆ
∆(¦s
1
¦, x) ∩F
1
= ∅. Logo,
ˆ
∆(¦s
1
¦, xy) ∩F
2
= ∅. No
caso (b), temos que
ˆ
∆(¦s
1
¦, x) ∩Q
2
= ¦s
2
¦. Mas, como y ,∈ M
2
, temos
ˆ
∆(¦s
2
¦, y) ∩F
2
= ∅. No
caso (c), temos que p ,∈
ˆ
∆(¦s
1
¦, x) para todo p ∈ Q
2
e, portanto, podemos concluir o mesmo
que em (a). Como F = F
2
, w = xy ,∈ L(N). Logo, w ∈ L
1
L
2
⇐⇒ w ∈ L(N), o que implica
L(N) = L
1
L
2
.
6.6 Fechamento sob a opera¸ c˜ao

Teorema 6.5. Seja L uma linguagem regular qualquer sobre o alfabeto Σ. Ent˜ao, L

´e regular.
Demonstra¸c˜ao. Seja
M = (Q, Σ, δ, s, F)
um autˆomato finito determin´ıstico tal que L = L(M).
N´os queremos mostrar que L

tamb´em ´e regular. Para tal, n´os definimos o autˆomato finito n˜ao
determin´ıstico com transi¸ c˜oes vazias
N = (Q
N
, Σ, ∆, S
N
, F
N
)
onde
Q
N
= Q∪ ¦s
N
¦, para algum s
N
,∈ Q , S
N
= ¦s
N
¦, F
N
= F ∪ ¦s
N
¦,
e seja
∆ : Q(Σ ∪ ǫ) → 2
Q
a fun¸ c˜ao de transi¸ c˜ao definida por
∆(p, a) =
_
_
_
¦δ(p, a)¦ se s ∈ Q
∅ se p = s
N
41
para todo p ∈ Q
N
e todo a ∈ Σ, e
∆(p, ǫ) =
_
_
_
¦s¦ se p ∈ F ou p = s
N
∅ caso contr´ario
para todo p ∈ Q
N
.
N´os afirmamos que L(N) = L

. A prova da veracidade de nossa afirma¸ c˜ao ´e bastante tediosa
e n´os descrevemos apenas a id´eia geral aqui. Note que N aceita ǫ, pois s
N
∈ F
N
. Agora, seja
x qualquer palavra de L

tal que x ,= ǫ. Ent˜ao, x pode ser escrita como x
1
x
2
x
k
para algum
k ∈ Z, com k ≥ 1, tal que x
i
∈ L e [x
i
[ > 0 para todo i ∈ ¦1, . . . , k¦. Como s ∈ fecho−ǫ(s
N
)
e
ˆ
∆(¦s¦, x
i
) = ¦
ˆ
δ(s, x
i
), s¦, n´os temos que s ∈
ˆ
∆(¦s
N
¦, x
i
) para todo i ∈ ¦1, . . . , k¦. Logo, s ∈
ˆ
∆(¦s
N
¦, x
1
x
2
. . . x
k−1
) e, portanto,
ˆ
∆(¦s
N
¦, x
1
x
2
. . . x
k−1
x
k
) = ¦
ˆ
δ(s, x
k
), s¦. Como
ˆ
δ(s, x
k
) ∈ F
e F ⊆ F
N
, temos que x ∈ L(N). Por outro lado, se x ∈ L(N) ent˜ao x = ǫ ou x deve ser
da forma x
1
x
2
x
k
para algum k ∈ Z, com k ≥ 1, tal que x
i
∈ L e [x
i
[ > 0 para todo
i ∈ ¦1, . . . , k¦. Logo, x ∈ L

.
6.7 Exerc´ıcios
1. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, mostre que a
linguagem L

´e regular, onde L

consiste de toda palavra w ∈ Σ

que pode ser formada a
partir da remo¸ c˜ao de uma ou mais letras de alguma palavra x ∈ L. Dica: construa um
AFND M

com transi¸c˜oes vazias a partir de qualquer AFD M que aceita L e prove que
L(M

) = L

.
2. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, mostre que a
linguagem L

´e regular, onde L

consiste de toda palavra w ∈ Σ

que pode ser formada
a partir da remo¸ c˜ao de exatamente uma letra de alguma palavra x ∈ L. Dica: construa
um AFND M

com transi¸c˜oes vazias a partir de qualquer AFD M que aceita L e prove
que L(M

) = L

.
3. Dada uma palavra w, a palavra reversa w
r
de w ´e definida indutivamente como segue:
ǫ
r
= ǫ (xa)
r
= ax
r
onde a ∈ Σ e x ∈ Σ

. Dada uma linguagem L, n´os definimos
L
r
= ¦w
r
[ w ∈ L¦.
Prove que se L ´e uma linguagem regular, ent˜ao L
r
´e uma linguagem regular. Dica: dado
um AFD M que aceita L, modifique M para obter um AFND N que aceita L
r
e prove
que seu AFND est´ a correto.
4. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina
PRE(L) = ¦x ∈ Σ

[ ∃y ∈ Σ

tal que xy ∈ L¦.
42
Mostre que PRE(L) ´e regular. Dica: dado um AFD M que aceita L, modifique M para
obter um AFD M

que aceita PRE(L) e prove que seu AFD aceita exatamente PRE(L).
5. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina
SUF(L) = ¦x ∈ Σ

[ ∃y ∈ Σ

tal que yx ∈ L¦.
Mostre que SUF(L) ´e regular. Dica: dado um AFD M que aceita L, modifique M para
obter um AFD M

que aceita SUF(L) e prove que seu AFD aceita exatamente SUF(L).
6. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina
MIN(L) = ¦x ∈ Σ

[ x ∈ L, mas nenhum prefixo pr´oprio de x est´a em L.¦
Mostre que MIN(L) ´e regular. Dica: dado um AFD M que aceita L, modifique M para
obter um AFD M

que aceita MIN(L) e prove que seu AFD aceita exatamente MIN(L).
7. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina
MAX(L) = ¦x ∈ Σ

[ x ∈ L, mas n˜ao existe w ,= ǫ tal que xw ∈ L.¦
Mostre que MAX(L) ´e regular. Dica: dado um AFD M que aceita L, modifique M para
obter um AFD M

que aceita MAX(L) e prove que seu AFD aceita exatamente MAX(L).
8. Seja Σ um alfabeto, seja a uma letra qualquer de Σ, e seja L qualquer linguagem regular
sobre Σ. Ent˜ao, defina a linguagem quociente L/a de L e a como sendo a linguagem
que consiste de todas as palavras w ∈ Σ

tais que wa ∈ L. Por exemplo, se Σ = ¦0, 1¦,
a = 0 e L = ¦0, 001, 100¦, ent˜ao L/0 = ¦ǫ, 10¦. Mostre que L/a para qualquer linguagem
regular L ⊆ Σ

e qualquer letra a ∈ Σ. Dica: dado um AFD M que aceita L, modifique
M para obter um AFD M

que aceita L/a e prove que seu AFD aceita exatamente L/a.
9. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina a lingua-
gem
L
1
2
= ¦w ∈ Σ

[ ww ∈ L¦.
Mostre que L
1
2
´e regular.
10. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, para qualquer
n´ umero inteiro k, com k ≥ 1, defina a linguagem
L
1
k
= ¦w ∈ Σ

[ w
k
∈ L¦.
Mostre que h´a apenas um n´ umero finito de linguagens L
1
k
e que todas elas s˜ao regulares.
11. Seja Σ um alfabeto qualquer. Defina ^
Σ
como o conjunto de todas as linguagens sobre
Σ que n˜ao s˜ao regulares. Ent˜ao, mostre que ^
Σ
´e fechado com respeito `a opera¸ c˜ao de
complemento.
12. Seja Σ = ¦a, b¦. Mostre que ^
Σ
(veja o problem 65) n˜ao ´e fechado com respeito `a
opera¸ c˜ao de interse¸ c˜ao.
43
13. Seja Σ um alfabeto qualquer. Defina c
Σ
como o conjunto de todas as linguagens sobre Σ
que s˜ao o complemento de alguma linguagem finita. Ent˜ao, prove ou forne¸ ca um contra-
exemplo para as seguintes afirma¸ c˜oes:
(a) c
Σ
´e fechado com respeito `a opera¸ c˜ao de complemento.
(b) c
Σ
´e fechado com respeito `a opera¸ c˜ao de uni˜ao.
(c) c
Σ
´e fechado com respeito `a opera¸ c˜ao de interse¸ c˜ao.
(d) c
Σ
´e fechado com respeito `a opera¸ c˜ao de concatena¸ c˜ao.
(e) c
Σ
´e fechado com respeito ao operador

.
14. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina a lingua-
gem
SQRT(L) = ¦w ∈ Σ

[ w
k
∈ L, para algum inteiro k, com k ≥ 1¦.
A linguagem SQRT(L) ´e regular? Justifique sua resposta.
15. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, defina a lingua-
gem
L
2
= ¦x ∈ Σ

[ ∃y ∈ Σ

tal que xy ∈ L e [y[ = 2[x[¦.
Mostre que L
2
´e regular.
16. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Ent˜ao, para qualquer
inteiro positivo k, defina a linguagem
L
k
= ¦x ∈ Σ

[ ∃y ∈ Σ

tal que xy ∈ L e [y[ = k[x[¦.
Mostre que L
k
´e regular para todo inteiro positivo k.
44
Cap´ıtulo 7
O Lema do Bombeamento para Linguagens
Regulares
7.1 Limita¸c˜oes dos AFD’s
N´os definimos trˆes tipos de autˆomatos finitos e vimos que eles s˜ao capazes de reconhecer exa-
tamente a mesma classe de linguagens: as linguagens regulares. Agora ´e hora de estudar as
limita¸ c˜oes desses autˆomatos. Mais especificamente, veremos um teorema que pode ser utilizado
para provar que uma dada linguagem n˜ao pode ser reconhecida por nenhum autˆomato finito,
isto ´e, n˜ao ´e regular.
O exemplo cl´assico ´e a linguagem
L
1
= ¦a
n
b
n
[ n ∈ Z, n ≥ 0¦ = ¦ǫ, ab, aabb, aaabbb, . . .¦,
para a qual n˜ao podemos construir um AFD; isto ´e, a linguagem L
1
n˜ao ´e regular. Intuitiva-
mente, para aceitar L
1
, um AFD lendo uma cadeia da forma a
n
b
n
teria de lembrar quantos a’s
foram lidos ap´os cruzar o “meio” da palavra de entrada, pois ele teria de comparar esse n´ umero
com o n´ umero de b’s e aceitar a palavra se, e somente se, esses n´ umeros s˜ao os mesmos. Al´em
disso, o AFD teria de fazer isso para palavras com um n´ umero de a’s e b’s muito maior do
que seu n´ umero de estados. O problema ´e que o n´ umero de a’s lidos ´e, em geral, uma quanti-
dade ilimitada de informa¸ c˜ao, e n˜ao h´a como um AFD guardar uma quantidade ilimitada de
informa¸ c˜ao com um n´ umero finito de estados, pois tudo o que um AFD pode se lembrar, em
qualquer momento, ´e representado pelo estado q no qual ele se encontra, que ´e uma quantidade
finita de informa¸ c˜ao.
O argumento acima ´e bastante informal, mas n´os podemos provar por contradi¸ c˜ao que L
1
n˜ao
´e regular. Para tal, assuma que L
1
´e regular. Ent˜ao, deve haver um AFD M que aceita L
1
,
isto ´e, tal que L(M) = L
1
. Seja k o n´ umero de estados de M. Considere o reconhecimento de
uma palavra a
n
b
n
por M, onde n ≫ k. Como a
n
b
n
est´a em L
1
, o AFD M deve aceitar a
n
b
n
.
O reconhecimento de a
n
b
n
come¸ ca no estado inicial s de M e termina em um estado final r de
45
M, pois a
n
b
n
´e aceita por M.
aaaaaaaaaaaaaaaaaaaaaaaa
. ¸¸ .
n
bbbbbbbbbbbbbbbbbbbbbbbb
. ¸¸ .
n
↑ ↑
s r
Como n ≫ k, pelo Princ´ıpio da Casa de Pombo, deve haver algum estado p de M visitado mais
de uma vez durante a leitura dos n a’s iniciais de a
n
b
n
. Vamos dividir a palavra a
n
b
n
em trˆes
partes, u, v e w, onde v ´e a palavra consistindo de todos os a’s lidos entre duas ocorrˆencias do
estado p, como ilustrado abaixo:
aaaaaaaaaaaa
. ¸¸ .
u
aaaaaaaa
. ¸¸ .
v
aaaabbbbbbbbbbbbbbbbbbbbbbbb
. ¸¸ .
w
↑ ↑ ↑ ↑
s p p r
Seja j = [v[ > 0. No exemplo acima, j = 8. Ent˜ao,
ˆ
δ(s, u) = p,
ˆ
δ(p, v) = p,
ˆ
δ(p, w) = r ∈ F.
Agora, note que se removermos a palavra v de a
n
b
n
, n´os obteremos a palavra uw = a
n−j
b
n
, a
qual seria erroneamente aceita por M:
ˆ
δ(s, uw) =
ˆ
δ(
ˆ
δ(s, u), w),
=
ˆ
δ(p, w)
= r ∈ F.
aaaaaaaaaaaa
. ¸¸ .
u
aaaabbbbbbbbbbbbbbbbbbbbbbbb
. ¸¸ .
w
↑ ↑ ↑
s p r
A palavra uw = a
n−j
b
n
n˜ao poderia ter sido aceita por M, pois o n´ umero de a’s ´e menor do
que o n´ umero de b’s e, portanto, a
n−j
b
n
,∈ L
1
. Isto contradiz nossa hip´otese de que L(M) = L
1
.
Logo, M n˜ao pode existir.
Um outro exemplo ´e a linguagem
L
2
= ¦a
2
n
[ n ∈ Z, n ≥ 0¦ = ¦a, a
2
, a
4
, a
8
, a
16
, . . .¦.
A linguagem L
2
tamb´em n˜ao ´e regular. Para provar este fato, assuma (por contradi¸ c˜ao) que
L
2
= L(M) para algum AFD M com k estados. Seja n ≫ k e considere o reconhecimento da
palavra a
2
n
∈ L
2
por M. Como n ≫ k, pelo Princ´ıpio da Casa de Pombo, o AFD M deve entrar
46
em um estado p mais de uma vez durante a leitura das n primeiras letras de a
2
n
. Logo, n´os
podemos dividir a
2
n
em trˆes partes, u, v e w, tal que u = a
i
, v = a
j
, w = a
m
e i +j +m = 2
n
,
para inteiro i, j, m, com i, m ≥ 0 e 0 < j ≤ n, e
ˆ
δ(s, u) =
ˆ
δ(s, a
i
) = p,
ˆ
δ(p, v) =
ˆ
δ(p, a
j
) = p,
ˆ
δ(p, w) =
ˆ
δ(p, a
m
) = r ∈ F.
Agora, note que se inserirmos a palavra a
j
logo ap´os a palavra v em uvw = a
i+j+m
= a
2
n
, n´os
obteremos a palavra a
2
n
+j
, a qual seria erroneamente aceita por M:
ˆ
δ(s, a
2
n
+j
) =
ˆ
δ(s, uvvw),
=
ˆ
δ(
ˆ
δ(
ˆ
δ(
ˆ
δ(s, u), v), v), w)
=
ˆ
δ(
ˆ
δ(
ˆ
δ(
ˆ
δ(s, a
i
), a
j
), a
j
), a
m
)
=
ˆ
δ(
ˆ
δ(
ˆ
δ(p, a
j
), a
j
), a
m
)
=
ˆ
δ(
ˆ
δ(p, a
j
), a
m
)
=
ˆ
δ(p, a
m
)
= r ∈ F.
A palavra a
2
n
+j
n˜ao poderia ter sido aceita por M, uma vez que 2
n
+j n˜ao ´e uma potˆencia de
2, pois
2
n
< 2
n
+ j ≤ 2
n
+ n < 2
n
+ 2
n
= 2
n+1
que ´e a pr´oxima potˆencia de 2 maior do que 2
n
+ j. Isto contradiz nossa hip´otese de que
L(M) = L
2
. Logo, M n˜ao pode existir.
7.2 O Lema do Bombeamento para linguages regulares
Os argumentos utilizados nos dois exemplos da se¸ c˜ao anterior podem ser “encapsulados” em
um teorema geral, chamado Lema do Bombeamento. Este lema ´e muito usado para mostrar que
certas linguagens n˜ao s˜ao regulares. A id´eia ´e que sempre que um AFD lˆe uma palavra mais
comprida do que seu n´ umero de estados e aceita a palavra, deve haver um estado q no qual o
AFD entrou mais de uma vez. A subcadeia da palavra de entrada entre as duas ocorrˆencias de
q pode ser removida ou inserida (logo ap´os sua ocorrˆencia) na palavra de entrada e a palavra
resultante tamb´em ser´a aceita pelo AFD.
Lema 7.1 (Lema do Bombeamento). Seja L uma linguagem regular. Ent˜ao, a seguinte pro-
priedade ´e v´alida para L:
(P) Existe uma constante k ∈ Z, com k ≥ 0, tal que para quaisquer palavras x, y e z, com
xyz ∈ L e [y[ ≥ k, existem palavras u, v e w tais que y = uvw, v ,= ǫ e, para todo i ∈ Z,
com i ≥ 0, a cadeia xuv
i
wz ∈ L.
47
Informalmente, se L ´e regular, ent˜ao para qualquer palavra em L e qualquer subcadeia y desta
palavra que seja suficientemente comprida, a subcadeia y possui uma subcadeia n˜ao-vazia v que
pode ser removida ou inserida uma ou mais vezes na palavra e a palavra resultante tamb´em
estar´a em L.
N´os essencialmente provamos este lema, pois se L ´e regular, ent˜ao existe um AFD M tal que
L(M) = L. Logo, podemos imaginar k como sendo o n´ umero de estados de M. Desde que
[y[ seja pelo menos igual a k, o AFD M entrar´a em um mesmo estado duas vezes durante a
leitura das letras de y. A palavra v ´e a subcadeia de y entre as duas ocorrˆencias daquele estado.
N´os podemos remover ou inserir tantas c´opias de v na palavra quanto quisermos e a palavra
resultante ainda estar´a em L.
7.3 Aplicando o Lema do Bombeamento
O Lema do Bombeamento ´e mais frequentemente utilizado para mostrar que certas linguagens
n˜ao s˜ao regulares. Mas, para tal, n´os temos de considerar a forma contrapositiva do Lema do
Bombeamento:
Lema 7.2 (Lema do Bombeamento, Contrapositivo). Seja L uma linguagem e suponha que a
seguinte propriedade seja v´alida para L:
(P) Para todo k ∈ Z, com k ≥ 0, existem palavras x, y e z tais que xyz ∈ L, [y[ ≥ k e,
para quaisquer u, v, w, com y = uvw e v ,= ǫ, existe um inteiro i, com i ≥ 0, tal que
xuv
i
wz ,∈ L.
Ent˜ao, L n˜ ao ´e regular.
Para utilizar o Lema do Bombeamento para mostrar que uma certa linguagem n˜ao ´e regular,
tudo que precisamos fazer ´e mostrar que P ´e v´alida para a linguagem. Vamos dar uma olhada
em alguns exemplos.
Exemplo 7.1. Seja
L
1
= ¦x ∈ ¦0, 1¦

[ [x[
0
= [x[
1
¦.
Use o Lema do Bombeamento para mostrar que L
1
n˜ ao ´e regular.
Solu¸c˜ao:
Dado k ∈ Z, com k ≥ 0, considere a palavra xyz = 0
k+1
1
k+1
, onde x = ǫ, y = 0
k+1
e z = 1
k+1
.
Note que xyz = 0
k+1
1
k+1
∈ L
1
e que [y[ = k + 1 ≥ k. Agora, considere quaisquer palavras
u, v, w tais que uvw = y e v ,= ǫ. Como y = 0
k+1
, temos que u = 0
i
, v = 0
j
e w = 0
m
, com
i + j + m = k + 1. Considere a palavra xuv
2
wz = 0
i
0
j
0
j
0
m
1
k+1
= 0
i+2j+m
1
k+1
= 0
k+1+j
1
k+1
.
Como v ,= ǫ, temos que j > 0 e, portanto, xuv
2
wz = 0
k+1+j
1
k+1
possui um n´ umero distinto de
0’s e 1’s. Como conseq¨ uˆencia, xuv
2
wz ,∈ L
1
. Pelo contrapositivo do Lema do Bombeamento,
podemos concluir que a linguagem L
1
n˜ ao ´e regular.
48
Exemplo 7.2. Seja
L
2
= ¦x ∈ ¦a, b¦

[ x = a
i
b
j
, i e j s˜ ao primos entre si.¦.
Use o Lema do Bombeamento para mostrar que L
2
n˜ ao ´e regular.
Solu¸c˜ao:
Lembre-se de que dois inteiros positivos, m e n, s˜ ao primos entre si se MDC(m, n) = 1. Dado
k ∈ Z, com k ≥ 0, considere a palavra xyz = a
p
b
(p−1)!
, onde x = ǫ, y = a
(p−2)
, z = a
2
b
(p−1)!
e p ´e qualquer n´ umero primo maior do que k + 2. Como p ´e primo e p > (k + 2) ≥ 2, temos
que p e (p −1)! s˜ ao primos entre si. Al´em disso, [y[ = p −2 > k. Logo, xyz = a
p
b
(p−1)!
∈ L
2
.
Agora, considere quaisquer palavras u, v, w tais que uvw = y e v ,= ǫ. Como y = a
(p−2)
, temos
que u = a
i
, v = a
j
e w = a
m
, com i + j + m = p −2. Considere a palavra
xuv
(p+1)
wz = ǫ a
i
a
j·(p+1)
a
m
a
2
b
(p−1)!
= a
p·j+p
b
(p−1)!
= a
p(j+1)
b
(p−1)!
.
Como v ,= ǫ e y = a
(p−2)
, temos que 1 ≤ j ≤ (p −2). Logo,
2 ≤ (j + 1) ≤ (p −1),
e, portanto, (j +1) ´e um divisor comum, maior do que 1, dos n´ umeros p (j +1) e (p−1)!. Isto
implica que p (j + 1) e (p − 1)! n˜ ao s˜ ao primos entre si. Como conseq¨ uˆencia, xuv
(p+1)
wz =
a
p(j+1)
b
(p−1)!
,∈ L
2
. Pelo contrapositivo do Lema do Bombeamento, podemos concluir que a
linguagem L
2
n˜ ao ´e regular.
7.4 Exerc´ıcios
1. Mostre que a seguinte linguagem n˜ao ´e regular:
L
1
= ¦x ∈ ¦a, b¦

[ [x[
a
< [x[
b
¦ .
2. Mostre que a seguinte linguagem n˜ao ´e regular:
L
2
= ¦x ∈ ¦a, b¦

[ [x[
a
≥ [x[
b
¦ .
3. Mostre que a seguinte linguagem n˜ao ´e regular:
L
3
= ¦a
p
[ p ´e primo¦ .
4. Mostre que a seguinte linguagem n˜ao ´e regular:
L
4
= ¦x ∈ ¦0, 1¦

[ ∃w ∈ ¦0, 1¦

tal que x = ww¦ .
5. Mostre que a seguinte linguagem n˜ao ´e regular:
L
5
= ¦x ∈ ¦a, b, c¦

[ ∃i, j, m ∈ Z tais que x = a
i
b
j
c
m
, i ≥ 3 e j = m¦ .
49
6. Considere a linguagem L sobre o alfabeto ¦a, b¦ que consiste de todas as palavras w ∈
¦a, b¦

tais que w ´e da forma w = x
1
y
1
x
n
y
n
, onde n ´e um inteiro maior ou igual a 1,
n n˜ao ´e primo, x
i
∈ ¦a¦
+
, y
i
∈ ¦b¦
+
e 1 ≤ i ≤ n. Ent˜ao:
(a) Mostre que L satisfaz a propriedade P do Lema do Bombeamento.
(b) Apesar da linguagem L satisfazer a propriedade P do Lema do Bombeamento, L
n˜ao ´e regular. Ciente deste fato, vocˆe pode usar o contrapositivo do Lema do
Bombeamento para mostrar que L n˜ao ´e regular? Justifique sua resposta.
(c) Com base nos itens anteriores, diga se P ´e uma condi¸ c˜ao necess´aria, suficiente, ou
ambas? Justifique sua resposta.
7. Mostre a linguagem
L = ¦a
i
b
j
[ i ´e par ou j < i¦
n˜ao ´e regular.
8. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer. Ent˜ao, mostre que L(M) ´e infinita se, e somente se, existe uma cadeia
w ∈ L(M) tal que [Q[ ≤ [w[ < 2[Q[, onde [Q[ ´e o n´ umero de estados de M. Dica: use o
Lema do Bombeamento.
9. Descreva um algoritmo para decidir se a linguagem L(M) aceita por um AFD M ´e infinita.
50
Cap´ıtulo 8
O Teorema de Myhill-Nerode
8.1 Congruˆencia `a direita
Defini¸ c˜ao 8.1. Dado um alfabeto Σ, uma rela¸c˜ao R entre pares de palavras definidas sobre Σ
´e uma congruˆencia `a direita em Σ

se, e somente se, R ´e uma rela¸c˜ao de equivalˆencia e, para
quaisquer x, y, u ∈ Σ

, temos que
x R y ⇒ xu R yu.
Exemplo 8.1. Seja Σ = ¦a, b¦, e seja R a rela¸c˜ao em Σ

definida por
x R y ⇐⇒ [x[ −[y[ ´e par
para todas as palavras x, y ∈ Σ

. A rela¸c˜ao R ´e uma rela¸c˜ao de equivalˆencia (veja os exerc´ıcios)
e particiona Σ

em duas classes de equivalˆencia: as palavras de comprimento par e as palavras
de comprimento ´ımpar. Al´em disso, R ´e uma congruˆencia `a direita. Pois, suponha que x R y.
Ent˜ao, [x[ −[y[ ´e par pela defini¸c˜ao de R. Mas, para qualquer u ∈ Σ

, temos que [xu[ −[yu[ =
[x[ +[u[ −([y[ +[u[) = [x[ +[y[, que ´e par. Logo, xu R yu. Por outro lado, se (x, y) ,∈ R, [x[ −[y[
tem de ser ´ımpar. Mas, para qualquer u ∈ Σ

, temos que [xu[ −[yu[ = [x[ +[u[ −([y[ +[u[) =
[x[ −[y[, que ´e ´ımpar. Logo, (xu, yu) ,∈ R.
Exemplo 8.2. Seja Σ = ¦a, b, c¦, e seja R a rela¸c˜ao em Σ

definida por
x R y ⇐⇒ x e y terminam com a mesma letra
para todas as palavras x, y ∈ Σ

. A rela¸c˜ao R ´e uma rela¸c˜ao de equivalˆencia (veja os exerc´ıcios)
e particiona Σ

em quatro classes de equivalˆencia: as palavras que terminam com a, as palavras
que terminam com b, as palavras que terminam com c e ¦ǫ¦. A rela¸c˜ao R ´e uma congruˆencia
`a direita tamb´em, pois se x R y ent˜ ao xu e yu terminam com a mesma letra para toda palavra
u ∈ Σ

.
51
8.2 A rela¸ c˜ao induzida por uma linguagem
Defini¸ c˜ao 8.2. Dados um alfabeto Σ e qualquer linguagem L sobre Σ (note que L n˜ ao ´e
necessariamente regular), a rela¸ c˜ao induzida por L em Σ

, denotada por R
L
, ´e definida como
segue:
∀x, y ∈ Σ

, x R
L
y ⇐⇒ (xu ∈ L ⇐⇒ yu ∈ L)
para toda palavra u ∈ Σ

.
Exemplo 8.3. Seja L o conjunto de todas as palavras w sobre ¦a, b¦ tal que [w[ ´e ´ımpar.
Aquelas palavras que est˜ ao em L s˜ ao usadas para definir exatamente que pares de cadeias est˜ ao
em R
L
. Por exemplo, n´ os podemos afirmar que ab R
L
bbaa, pois ´e verdade que, para qualquer
u ∈ Σ

, abu ,∈ L e bbaau ,∈ L se [u[ ´e par, e abu ∈ L e bbaau ∈ L se [u[ ´e ´ımpar. Note que a e
ab n˜ ao est˜ ao relacionadas por R
L
(isto ´e, (a, ab) ,∈ R
L
), pois se u ∈ ǫ ent˜ ao au ∈ L e ab ,∈ L.
Em geral, neste exemplo, x R
L
y se, e somente se, x, y ∈ L ou x, y ,∈ L.
Defini¸ c˜ao 8.3. Seja A um conjunto. N´os dizemos que uma rela¸c˜ao R
1
em A refina uma outra
rela¸c˜ao R
2
em A se R
1
⊆ R
2
. Em outras palavras, R
1
refina R
2
se, para quaisquer x e y em
A, x R
1
y implica x R
2
y. Se R
1
refina R
2
ent˜ ao n´ os dizemos que R
1
´e mais fina do que R
2
ou que R
2
´e mais grossa do que R
1
.
Lema 8.1. Seja L qualquer linguagem sobre Σ (isto ´e, L n˜ ao ´e necessariamente regular). A
rela¸c˜ao induzida por L em Σ

, R
L
, ´e uma congruˆencia `a direita e ´e a mais grossa congruˆencia
`a direita R em Σ

tal que
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

.
Demonstra¸c˜ao. Note que R
L
´e uma rela¸ c˜ao de equivalˆencia, pois R
L
´e:
• Reflexiva:
Para qualquer x ∈ Σ

,
xu ∈ L ⇐⇒ xu ∈ L, ∀u ∈ Σ

Logo, x R
L
x.
• Sim´etrica:
Para quaisquer x, y ∈ Σ

,
x R
L
y ⇒ (xu ∈ L ⇐⇒ yu ∈ L), ∀u ∈ Σ

⇐⇒ (yu ∈ L ⇐⇒ xu ∈ L), ∀u ∈ Σ

⇒ y R
L
x.
52
• Transitiva:
Para quaisquer x, y, z ∈ Σ

,
x R
L
y e y R
L
z ⇒ (xu ∈ L ⇐⇒ yu ∈ L) e (yv ∈ L ⇐⇒ zv ∈ L), ∀u, v ∈ Σ

⇐⇒ (xu ∈ L ⇐⇒ yu ∈ L) e (yu ∈ L ⇐⇒ zu ∈ L), ∀u ∈ Σ

⇐⇒ (xu ∈ L ⇐⇒ zu ∈ L), ∀u ∈ Σ

⇒ x R
L
z.
Para mostrar que R
L
´e uma congruˆencia `a direita, vamos considerar u = vw na defini¸ c˜ao
de R
L
, onde v, w ∈ Σ

, pois u ´e qualquer palavra de Σ

e, devido `a identidade da
concatena¸ c˜ao, n´os podemos escrever qualquer palavra u em Σ

como vw, com v, w ∈ Σ

.
Ent˜ao, temos que
∀x, y ∈ Σ

, x R
L
y ⇒ (xu ∈ L ⇐⇒ yu ∈ L), ∀u ∈ Σ

⇒ (xvw ∈ L ⇐⇒ yvw ∈ L), ∀v, w ∈ Σ

⇒ ((xv)w ∈ L ⇐⇒ (yv)w ∈ L), ∀w ∈ Σ

⇒ xv R
L
yv.
Finalmente, precisamos mostrar que qualquer congruˆencia `a direita R em Σ

satisfazendo
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

refina R
L
. Isto ´e, R
L
´e a mais grossa congruˆencia `a direita em Σ

que satisfaz a propriedade
acima.
Seja R uma congruˆencia `a direita em Σ

satisfazendo
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

.
Ent˜ao,
x R y ⇒ (xu R yu), ∀u ∈ Σ

(por defini¸ c˜ao de congruˆencia `a direita)
⇒ (xu ∈ L e yu ∈ L), ∀u ∈ Σ

(por hip´otese)
⇒ x R
L
y. (por defini¸ c˜ao de R
L
)
A propriedade
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

implica que toda classe de equivalˆencia de R tem seus elementos em L ou nenhum elemento
em L. Em outras palavras, a linguagem L ´e a uni˜ao de uma ou mais classes de equivalˆencia de
R.
53
8.3 Rela¸ c˜oes de Myhill-Nerode
Defini¸ c˜ao 8.4. Seja L uma linguagem qualquer sobre um alfabeto Σ. Uma rela¸ c˜ao de Myhill-
Nerode para L ´e uma rela¸c˜ao de equivalˆencia R em Σ

satisfazendo as trˆes seguintes proprie-
dades:
1. R ´e uma congruˆencia `a direita.
2. L ´e a uni˜ ao de uma ou mais classes de equivalˆencia de R.
3. R possui ´ındice finito, ou seja, R possui um n´ umero finito de classes de equivalˆencia.
Mais tarde, n´os veremos que se L satisfaz todas as propriedades da defini¸ c˜ao acima, L tem de
ser regular.
Exemplo 8.4. Seja
L = ¦x ∈ ¦a, b¦

[ [x[ ≥ 2¦.
A linguagem L ´e regular (por quˆe?). A rela¸c˜ao R
L
´e uma rela¸c˜ao de Myhill-Nerode, pois R
L
satisfaz a propriedade 1 da Defini¸c˜ao 8.4 de acordo com o Lema 8.1, L ´e precisamente a classe
de equivalˆencia
[aa]
R
L
= ¦aa, ab, ba, bb, aaa, aab, . . .¦
de R
L
, e R
L
tem ´ındice 3 (veja os exerc´ıcios), ou seja, R
L
possui trˆes classes de equivalˆencia:
[ǫ]
R
L
= ¦ǫ¦,
[a]
R
L
= ¦a, b¦, e
[aa]
R
L
= ¦aa, ab, ba, bb, aaa, aab, . . .¦.
Defini¸ c˜ao 8.5. Seja L uma linguagem regular, e seja
M = (Q, Σ, δ, s, F)
um AFD que aceita L e que n˜ ao possui nenhum estado inating´ıvel. O AFD M induz uma
rela¸c˜ao de equivalˆencia ≡
M
em Σ

tal que
x ≡
M
y ⇐⇒
ˆ
δ(s, x) =
ˆ
δ(s, y)
para quaisquer x, y ∈ Σ

.
N´os podemos facilmente verificar que ≡
M
´e uma rela¸ c˜ao de equivalˆencia (veja os exerc´ıcios).
Al´em disso, ≡
M
´e uma rela¸ c˜ao de Myhill-Nerode:
54
1. ≡
M
´e uma congruˆencia `a direita, pois, para quaisquer x, y ∈ Σ

, temos que
x ≡
M
y ⇒
ˆ
δ(s, x) =
ˆ
δ(s, y) (defini¸ c˜ao de ≡
M
)

ˆ
δ(
ˆ
δ(s, x), z) =
ˆ
δ(
ˆ
δ(s, y), z), ∀z ∈ Σ


ˆ
δ(s, xz) =
ˆ
δ(s, yz), ∀z ∈ Σ

(Exerc´ıcio 8)
⇒ xz ≡
M
yz. (defini¸ c˜ao de ≡
M
)
2. L ´e a uni˜ao de uma ou mais classes de equivalˆencia de ≡
M
, pois se x ≡
M
y, ent˜ao
ˆ
δ(s, x) =
ˆ
δ(s, x). Logo,
ˆ
δ(s, x) ∈ F se, e somente se,
ˆ
δ(s, y) ∈ F, ou seja, x ∈ L se, e
somente, y ∈ L.
3. ≡
M
possui ´ındice finito, pois h´a exatamente uma classe de equivalˆencia,
¦x ∈ Σ

[
ˆ
δ(s, x) = q¦,
para cada estado q de M.
A rela¸ c˜ao ≡
M
tamb´em satisfaz a propriedade
x ≡
M
y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

pois
x ≡
M
y ⇐⇒
ˆ
δ(s, x) =
ˆ
δ(s, y).
Logo, ≡
M
refina R
L
de acordo com o Lema 8.1.
Exemplo 8.5. Seja
M = (Q, Σ, δ, s, F)
um AFD tal que Q = ¦q
0
, q
1
, q
2
¦, Σ = ¦a¦, s = q
0
, F = ¦q
0
¦, e δ ´e dada pela tabela abaixo:
δ a
q
0
q
1
q
1
q
2
q
2
q
0
Note que
L(M) = ¦x ∈ ¦a¦

[ [x[ ´e um m´ ultiplo de 3¦.
A rela¸c˜ao ≡
M
possui trˆes classes de equivalˆencia:
[ǫ]

M
= ¦x ∈ ¦a¦

[ [x[ ≡ 0 mod 3¦,
[a]

M
= ¦x ∈ ¦a¦

[ [x[ ≡ 1 mod 3¦, e
[aa]

M
= ¦x ∈ ¦a¦

[ [x[ ≡ 2 mod 3¦.
55
Defini¸ c˜ao 8.6. Seja L uma linguagem sobre um alfabeto Σ, e seja R qualquer rela¸c˜ao de
Myhill-Nerode para L. Ent˜ao, definimos o AFD
M
R
= ¦Q, Σ, δ, s, F¦,
onde
Q = ¦[x] [ x ∈ Σ

¦,
s = [ǫ],
F = ¦[x] [ x ∈ L¦,
δ([x], a) = [xa], ∀[x] ∈ Q e ∀a ∈ Σ.
Note que δ est´a bem definida, pois isto ´e uma consequˆencia imediata da propriedade 1 da
defini¸ c˜ao de rela¸ c˜ao de Myhill-Nerode. Isto ´e, n´os poder´ıamos desconfiar que se tiv´essemos
escolhido uma palavra y ∈ [x] tal que y ,= x, ent˜ao n´os ter´ıamos δ([x], a) ,= δ([y], a). Mas,
como R ´e uma congruˆencia `a direita, temos que x R y ⇒ xa R ya, para todo a ∈ Σ. Logo,
δ([x], a) = [xa] = [ya] = δ([y], a).
Note tamb´em que
x ∈ L ⇐⇒ [x] ∈ F. (8.1)
A implica¸ c˜ao (⇒) segue a partir da defini¸ c˜ao de F, e (⇐) segue a partir da defini¸ c˜ao de F e da
propriedade 2 da defini¸ c˜ao de rela¸ c˜ao de Myhill-Nerode. Isto ´e, se x R y e x ∈ L, ent˜ao y ∈ L.
Logo, para qualquer y ∈ [x], se [x] ∈ F n´os temos que y ∈ L.
Exemplo 8.6. Seja
L = ¦x ∈ ¦a, b¦

[ [x[ ≥ 2¦
e seja
R = R
L
.
Como vimos no Ex. 8.4, R
L
´e uma rela¸c˜ao de Myhill-Nerode para L cujas classes de equivalˆencia
s˜ ao
[ǫ]
R
L
= ¦ǫ¦,
[a]
R
L
= ¦a, b¦, e
[aa]
R
L
= ¦aa, ab, ba, bb, aaa, aab, . . .¦.
O AFD
M
R
L
= ¦Q, Σ, δ, s, F¦
56
´e tal que
Q = ¦[ǫ]
R
L
, [a]
R
L
, [aa]
R
L
¦,
Σ = ¦a, b¦,
s = [ǫ]
R
L
,
F = ¦[aa]
R
L
¦,
e δ ´e dada pela tabela abaixo:
δ a b
[ǫ]
R
L
[a]
R
L
[a]
R
L
[a]
R
L
[aa]
R
L
[aa]
R
L
[aa]
R
L
[aa]
R
L
[aa]
R
L
Note que L(M
R
L
) = L no exemplo anterior. Isso ´e uma coincidˆencia? Na verdade, n˜ao. Vamos
provar que L(M
R
) = L para toda linguagem regular L e toda rela¸ c˜ao de Myhill-Nerode para
L.
Lema 8.2.
ˆ
δ([x], y) = [xy].
Demonstra¸c˜ao. Vamos usar indu¸ c˜ao em [y[.
Base ([y[ = 0)
Se [y[ = 0 ent˜ao y = ǫ e
ˆ
δ([x], y) =
ˆ
δ([x], ǫ)
= [x] (pela defini¸ c˜ao de
ˆ
δ)
= [xǫ] (pela identidade da concatena¸ c˜ao)
= [xy].
Hip´otese ([y[ = k)
Assuma que nossa afirma¸ c˜ao ´e verdadeira para toda palavra y ∈ Σ
k
, onde k ´e um inteiro
arbitr´ario (mas, fixo) e k ≥ 0.
Passo Indutivo ([y[ = k + 1)
57
Seja y ∈ Σ
k+1
. Ent˜ao, podemos escrever y = wa, onde w ∈ Σ
k
e a ∈ Σ. Agora, temos que
ˆ
δ([x], y) =
ˆ
δ([x], wa)
= δ(
ˆ
δ([x], w), a) (pela defini¸ c˜ao de
ˆ
δ)
= δ([xw], a) (pela hip´otese de indu¸ c˜ao)
= [xwa] (pela defini¸ c˜ao de δ)
= [xy].
Teorema 8.1. L(M
R
) = L.
Demonstra¸c˜ao.
x ∈ L(M
R
) ⇐⇒
ˆ
δ([ǫ], x) ∈ F (pela defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒ [x] ∈ F (Lema 8.2)
⇐⇒ x ∈ L. (Propriedade (8.1))
Observa¸ c˜ao: o teorema que acabamos de provar implica que L tem de ser uma linguagem
regular (por quˆe?).
8.4 O Teorema de Myhill-Nerode
Teorema 8.2 (O Teorema de Myhill-Nerode). Seja L uma linguagem (n˜ ao necessaria-
mente regular) definida sobre um alfabeto Σ. Ent˜ao, as seguintes afirma¸c˜oes s˜ ao todas equiva-
lentes:
(1) L ´e regular;
(2) existe uma rela¸c˜ao de Myhill-Nerode para L;
(3) a rela¸c˜ao R
L
possui ´ındice finito.
58
Demonstra¸c˜ao. (1) ⇒ (2): Se L ´e regular, ent˜ao existe um AFD M tal que L(M) = L. A
rela¸ c˜ao ≡
M
´e uma rela¸ c˜ao de Myhill-Nerode para L. Portanto, a afirma¸ c˜ao (2) ´e verdadeira
sempre que (1) for verdadeira.
(2) ⇒ (3): Se R ´e uma rela¸ c˜ao de Myhill-Nerode para L, ent˜ao n´os sabemos que R possui
´ındice finito, por defini¸ c˜ao. Tamb´em por defini¸ c˜ao, sabemos que R ´e uma congruˆencia `a direita
e L ´e a uni˜ao de uma ou mais classes de equivalˆencia de R. Logo,
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

.
Pelo Lema 8.1, se R satisfaz a propriedade acima, ent˜ao R n˜ao pode ser mais grossa do que R
L
.
Isto implica que o ´ındice de R
L
deve ser finito. Portanto, a afirma¸ c˜ao (3) ´e verdadeira sempre
que (2) for verdadeira.
(3) ⇒ (1): Se R
L
possui ´ındice finito, ent˜ao R
L
´e uma rela¸ c˜ao de Myhill-Nerode para L, por
defini¸ c˜ao. Ent˜ao, podemos definir o AFD M
R
L
(veja a Defini¸ c˜ao 8.6). O Teorema 8.1 nos diz
que L(M
R
) = L. Logo, L ´e uma linguagem regular. Portanto, a afirma¸ c˜ao (1) ´e verdadeira
sempre que (3) for verdadeira.
O Teorema de Myhill-Nerode, bem como outros resultados relacionados a este teorema, ser˜ao
utilizados para mostrar que o autˆomato quociente ´e m´ınimo e para mostrar que certas linguagens
n˜ao s˜ao linguagens regulares.
8.5 Exerc´ıcios
1. Seja Σ = ¦a, b¦ um alfabeto.
(a) Mostre que a rela¸ c˜ao R em Σ

tal que
x R y ⇐⇒ [x[ −[y[ ´e par
´e uma rela¸ c˜ao de equivalˆencia.
(b) Quais s˜ao as classes de equivalˆencia de R?
2. Seja Σ = ¦a, b, c¦ um alfabeto. Ent˜ao:
(a) Mostre que a rela¸ c˜ao R em Σ

tal que
x R y ⇐⇒ x e y terminam com a mesma letra
´e uma rela¸ c˜ao de equivalˆencia.
(b) Quais s˜ao as classes de equivalˆencia de R?
3. Seja Σ = ¦a, b, c¦ um alfabeto. Considere a rela¸ c˜ao R em Σ

tal que
x R y ⇐⇒ [x[
a
−[y[
a
≡ 0 mod 3.
Ent˜ao, mostre que R ´e uma congruˆencia `a direita.
59
4. Seja Σ = ¦a, b, c¦ um alfabeto. Considere a rela¸ c˜ao R em Σ

tal que
x R y ⇐⇒ [x[ −[y[ ´e ´ımpar.
Ent˜ao, mostre que R n˜ ao ´e uma congruˆencia `a direita. R ´e uma rela¸ c˜ao de equivalˆencia?
Justifique sua resposta.
5. Seja P ⊆ ¦0, 1¦

¦0, 1¦

a rela¸ c˜ao de equivalˆencia com as seguintes classes de equi-
valˆencia:
[ǫ]
P
= ¦ǫ¦ = ¦0, 1¦
0
[1]
P
= ¦0, 1¦ = ¦0, 1¦
1
[00]
P
= ¦0, 1¦
2
∪ ¦0, 1¦
3
∪ ¦0, 1¦
4
∪ ¦0, 1¦
5

Mostre que P ´e uma congruˆencia `a direita.
6. Considere a rela¸ c˜ao P definida no exerc´ıcio anterior. Encontre todas as linguagens L para
as quais R
L
= P. Justifique sua resposta.
7. Seja Σ = ¦a, b, c¦ um alfabeto. Encontre todas as linguagens L para as quais R
L
possui
´ındice 1. Justifique sua resposta.
8. Seja Σ = ¦a¦ um alfabeto e seja I a rela¸ c˜ao identidade em Σ

.
(a) Mostre que I ´e uma congruˆencia `a direita.
(b) Quais s˜ao as classes de equivalˆencia de I?
9. Seja Σ = ¦a¦ um alfabeto e seja I a rela¸ c˜ao identidade em Σ

. Defina
L = ¦ǫ¦ ∪ ¦a¦ ∪ ¦a, a¦
que ´e a uni˜ao de trˆes classes de equivalˆencia de I. Como visto no exerc´ıcio anterior, I
n˜ao possui ´ındice finito. Ent˜ao, o Teorema de Myhill-Nerode implica que L n˜ao ´e uma
linguagem regular? Justifique sua resposta.
10. Defina um AFD
M = (Q, Σ, δ, s, F)
para o qual o ´ındice de R
L(M)
´e diferente do n´ umero de estados de M. Neste caso, o que
podemos afirmar sobre M?
11. Seja Σ um alfabeto. Mostre que se R e S s˜ao congruˆencias `a direita em Σ

, ent˜ao R ∩ S
tamb´em ´e uma congruˆencia `a direita. O que n´os podemos dizer sobre R ∩ S? Justifique
sua resposta.
60
12. Seja Σ um alfabeto e seja R uma rela¸ c˜ao de equivalˆencia em Σ

satisfazendo a propriedade
x R y ⇐⇒ xa R ya, ∀x, y ∈ Σ

e ∀a ∈ Σ.
Mostre que a propriedade acima implica que R ´e uma congruˆencia `a direita. Toda con-
gruˆencia `a direita em Σ

tem de satisfazer a propriedade acima? Justifique sua resposta.
13. Seja
L = ¦a
n
b
n
[ n ´e um inteiro e n ≥ 0¦.
Fa¸ ca uso do Teorema de Myhill-Nerode para mostrar que L n˜ao ´e uma linguagem regular.
14. Seja Σ um alfabeto e seja R qualquer congruˆencia `a direita em Σ

com ´ındice finito.
Ent˜ao, prove que qualquer classe de equivalˆencia de R ´e uma linguagem regular sobre Σ.
15. Seja Σ um alfabeto. Uma rela¸ c˜ao R em Σ

´e dita invariante `a esquerda se, e somente se,
para quaisquer x, y ∈ Σ

, x R y implica que ux R uy para toda palavra u ∈ Σ

.
Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer. Ent˜ao,
(a) Mostre que a rela¸ c˜ao R
M
em Σ

tal que, para quaisquer x, y ∈ Σ

,
x R
M
y ⇐⇒ (
ˆ
δ(p, x) ∈ F ⇐⇒
ˆ
δ(p, y)), ∀p ∈ Q,
´e invariante `a esquerda.
(b) Seja n ´e o n´ umero de estados de M, ent˜ao mostre que R
M
possui, no m´aximo, 2
n
classes de equivalˆencia.
16. A linguagem
L = ¦a
3k+7
[ k ∈ Z, k ≥ 0, 3k + 7 ´e primo¦
´e regular? Se vocˆe acha que sim, especifique um AFD que aceite L. Se vocˆe acha que n˜ao,
prove que L n˜ao ´e regular. Dica: Vocˆe j´a ouviu falar no famoso Teorema de Dirichlet
sobre n´ umeros primos?
17. Mostre a linguagem
L = ¦a
i
b
j
[ i ´e par ou j < i¦
n˜ao ´e regular.
18. Seja L qualquer subconjunto finito e n˜ao vazio da linguagem ¦a¦

. Mostre que
L

= ¦a
np
[ n ∈ Z, n ≥ 0¦ −G,
onde G ´e um conjunto finito e p ´e o MDC de todos os elementos do conjunto
¦m ∈ Z [ a
m
∈ L¦.
61
Vocˆe pode fazer uso do seguinte resultado: Dado um conjunto de n´ umeros inteiros n˜ ao-
negativos S = ¦a
1
, a
2
, . . . , a
m
¦, tal que o m´aximo divisor comum dos elementos de S,
MDC(a
1
, a
2
, . . . , a
m
), seja 1, existe um n´ umero inteiro B tal que, para qualquer inteiro
positivo n > B, n´ os podemos escrever n como uma combina¸c˜ao linear n˜ ao-negativa dos
inteiros em S; isto ´e,
n = a
1
x
1
+ a
2
x
2
+ . . . + a
m
x
m
,
onde a
i
≥ 0 para todo i ∈ ¦1, 2, . . . , m¦.
19. Seja L qualquer subconjunto da linguagem ¦a¦

. Mostre que L

´e regular.
20. Seja Σ um alfabeto e seja L qualquer linguagem regular sobre Σ. Mostre que se L ´e aceita
por um AFD com exatamente n estados, ent˜ao h´a um AFD com, no m´aximo, 2
n
n
estados
que aceita L
1
k
.
21. Seja U um operador un´ario sobre linguagens tal que a composi¸ c˜ao de U com ele mesmo
produz a fun¸ c˜ao identidade. Ent˜ao, mostre que ^
Σ
´e fechado com respeito ao operador
U.
62
Cap´ıtulo 9
Homomorfismos e Homomorfismos Inversos
9.1 Defini¸c˜ao
Defini¸ c˜ao 9.1. Dada qualquer fun¸ c˜ao
¯
h : Σ → Γ

, a qual associa uma ´ unica palavra em Γ

a
cada letra de Σ, n´ os definimos um homomorfismo de linguagem h : Σ

→ Γ

como a fun¸ c˜ao
que satisfaz
h(ǫ) = ǫ (9.1)
h(ax) =
¯
h(a)h(x) (9.2)
para quaisquer a ∈ Σ e x ∈ Σ

.
Exemplo 9.1. Sejam Σ = ¦a, b¦, Γ = ¦c, d¦, e
¯
h : Σ → Γ

tal que
¯
h(a) = ccc e
¯
h(b) = dddd.
Ent˜ao,
h(abaab) =
¯
h(a)h(baab)
=
¯
h(a)
¯
h(b)h(aab)
=
¯
h(a)
¯
h(b)
¯
h(a)h(ab)
=
¯
h(a)
¯
h(b)
¯
h(a)
¯
h(a)h(b)
=
¯
h(a)
¯
h(b)
¯
h(a)
¯
h(a)
¯
h(b)h(ǫ)
=
¯
h(a)
¯
h(b)
¯
h(a)
¯
h(a)
¯
h(b)
= cccddccccccdd.
63
Note que as propriedades (9.1) e (9.2) implicam que h(a) =
¯
h(a), pois h(a) = h(aǫ) =
¯
h(a)h(ǫ) =
¯
h(a). Consequentemente, qualquer homomorfismo definido em Σ

´e unicamente
determinado por seus valores nos elementos de Σ. Por outro lado, qualquer fun¸ c˜ao
¯
h : Σ → Γ

pode ser estendida, de forma ´ unica e indutivamente, para definir um homomorfismo definido
em Σ

.
Defini¸ c˜ao 9.2. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo.
Ent˜ao, para qualquer A ⊆ Σ

, definimos a imagem de A sob o homomorfismo h como sendo a
linguagem
h(A) = ¦h(x) ∈ Γ

[ x ∈ A¦
e, para qualquer B ⊆ Γ

, definimos a imagem inversa de B sob o homomorfismo h como sendo
a linguagem
h
−1
(B) = ¦x ∈ Σ

[ h(x) ∈ B¦.
Exemplo 9.2. Sejam Σ = ¦a, b¦ e Γ = ¦a¦ dois alfabetos e seja h : Σ

→ Γ

um homomorfismo
de Σ em Γ definido unicamente por h(a) = h(b) = a. Agora, considere a linguagem L ⊆ Σ

tal
que
L = ¦a
n
b
n
[ para todo n ∈ Z tal que n ≥ 0¦.
Ent˜ao,
h(L) = ¦x ∈ ¦a¦

[ [x[ ´e par¦.
e
h
−1
(h(L)) = ¦x ∈ ¦a, b¦

[ [x[ ´e par¦.
9.2 Propriedades
Lema 9.1. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo de Σ
em Γ. Ent˜ao,
h(xy) = h(x)h(y)
para quaisquer palavras x, y ∈ Σ

.
Demonstra¸c˜ao. Segue imediatamente da defini¸ c˜ao de homomorfismo e ´e deixada como exerc´ıcio
para o aluno.
Lema 9.2. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo de Σ em
Γ. Ent˜ao, se L
1
e L
2
s˜ ao duas linguagens quaisquer sobre Σ, temos que h(L
1
L
2
) = h(L
1
)h(L
2
).
64
Demonstra¸c˜ao.
h(L
1
L
2
) = ¦h(w) ∈ Γ

[ w ∈ L
1
L
2
¦ (defini¸ c˜ao de h)
= ¦h(xy) ∈ Γ

[ x ∈ L
1
e y ∈ L
2
¦ (defini¸ c˜ao de concatena¸ c˜ao)
= ¦h(x)h(y) ∈ Γ

[ x ∈ L
1
e y ∈ L
2
¦ (Lema 9.1)
= ¦uv ∈ Γ

[ u ∈ h(L
1
) e v ∈ h(L
2

= h(L
1
)h(L
2
).
Lema 9.3. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo de Σ
em Γ. Ent˜ao, para qualquer fam´ılia de linguagens L
i
⊆ Σ

, com i ∈ I, onde I = ¦1, 2, . . . , n¦,
para algum n ∈ Z com n ≥ 1, temos que
h(
_
i∈I
L
i
) =
_
i∈I
h(L
i
).
Demonstra¸c˜ao.
h(

i∈I
L
i
) = ¦h(w) ∈ Γ

[ w ∈

i∈I
L
i
¦
= ¦h(w) ∈ Γ

[ ∃i ∈ I tal que w ∈ L
i
¦
=

i∈I
¦h(w) ∈ Γ

[ w ∈ L
i
¦
=

i∈I
h(L
i
).
Teorema 9.1. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo de
Σ em Γ. Ent˜ao, se L ⊆ Σ

´e qualquer linguagem regular, h(L) ⊆ Γ

tamb´em ´e uma linguagem
regular.
Demonstra¸c˜ao. Se L ´e regular, ent˜ao existe uma express˜ao regular α sobre Σ tal que L(α) = L.
Seja α

uma express˜ao regular obtida atrav´es da substitui¸ c˜ao de cada letra a ∈ Σ em α pela
cada h(a) ∈ Σ

. Por exemplo, se h(a) = ccc e h(b) = dd, ent˜ao
((a + b)

ab)

= (ccc + dd)

cccdd.
Formalmente, definimos α

indutivamente como a

= h(a), para todo a ∈ Σ, ∅

= ∅, ǫ

= ǫ,
(β + γ)

= β

+ γ

, (βγ)

= β

γ

, β


= β


. Agora, mostraremos que, para qualquer express˜ao
regular β sobre Σ,
h(L(β)) = L(β

).
65
Como L(β

) ´e regular (pois β

´e uma express˜ao regular), se nossa afirma¸ c˜ao estiver correta,
temos que h(L(β)) ´e regular. N´os usaremos indu¸ c˜ao no n´ umero n de operadores de β

para
provar nossa afirma¸ c˜ao.
Base (n = 0)
Se n = 0 ent˜ao β

= a

, para algum a ∈ Σ, β

= ∅

ou β

= ǫ

. Mas, por defini¸ c˜ao de β

em cada
um dos casos,
L(a

) = L(h(a)) = ¦h(a)¦ = h(¦a¦) = h(L(a)),
L(∅

) = L(∅) = ∅ = h(∅) = h(L(∅)),
e
L(ǫ

) = L(ǫ) = ¦ǫ¦ = h(¦ǫ¦) = h(L(ǫ)).
Hip´otese (n = k)
Assuma que nossa afirma¸ c˜ao ´e verdadeira para qualquer express˜ao regular β

com k operadores,
onde k ´e um inteiro n˜ao-negativo arbitr´ario (mas, fixo).
Passo Indutivo (n = k + 1)
Suponha que β

possua k + 1 operadores. H´a trˆes casos para tratarmos, um para cada um dos
operadores +, e

.
Para +, temos
L((β + γ)

) = L(β

+ γ

) (defini¸ c˜ao de ′)
= L(β

) ∪ L(γ

) (defini¸ c˜ao de +)
= h(L(β)) ∪ h(L(γ)) (pela hip´otese de indu¸ c˜ao)
= h(L(β) ∪ L(γ)) (Lema 9.3)
= h(L(β + γ)). (defini¸ c˜ao de +)
Para , n´os procedemos de forma semelhante e usamos o Lema 9.2. Ent˜ao, vamos considerar o
operador

:
L(β


) = L(β


(defini¸ c˜ao de ′)
= L(β

)

(defini¸ c˜ao de express˜ao regular)
= h(L(β))

(pela hip´otese de indu¸ c˜ao)
=

i≥0
h(L(β))
i
(defini¸ c˜ao de

)
66
= h
_
i≥0
L(β)
i
_
(Lema 9.2)
= h(L(β)

) (defini¸ c˜ao de

)
= h(L(β

)) (defini¸ c˜ao de express˜ao regular).
A validade da nossa afirma¸ c˜ao implica que L(α

) = h(L(α)). Como L = L(α), temos que h(L)
´e regular.
Teorema 9.2. Sejam Σ e Γ dois alfabetos quaisquer e seja h : Σ

→ Γ

um homomorfismo de
Σ em Γ. Ent˜ao, se L ⊆ Γ

´e uma linguagem regular, h
−1
(L) ⊆ Σ

tamb´em ´e uma linguagem
regular.
Demonstra¸c˜ao. Seja
M = (Q, Γ, δ, s, F)
um AFD tal que L(M) = L. Considere um novo AFD
M

= (Q, Σ, δ

, s, F)
para h
−1
(L) como segue. O conjunto de estados, o estado inicial, e os estados finais de M

s˜ao
os mesmos de M. O alfabeto de entrada ´e Σ ao inv´es de Γ. A fun¸ c˜ao de transi¸ c˜ao δ

´e definida
como
δ

(q, a) =
ˆ
δ(q, h(a)),
para todo q ∈ Q e todo a ∈ Σ. N´os vamos mostrar por indu¸ c˜ao em [x[ que, para toda palavra
x ∈ Σ

,
ˆ
δ

(q, x) =
ˆ
δ(q, h(x)).
Base ([x[ = 0)
Se [x[ = 0 ent˜ao x = ǫ e
ˆ
δ

(q, x) =
ˆ
δ

(q, ǫ) = q =
ˆ
δ(q, ǫ) =
ˆ
δ(q, h(ǫ)) =
ˆ
δ(q, h(x)),
pois h(ǫ) = ǫ pela propriedade (9.1).
Hip´otese ([x[ = k)
Assuma que
ˆ
δ

(q, x) =
ˆ
δ(q, h(x)) para toda palavra x ∈ Σ
k
, onde k ´e um inteiro n˜ao-negativo
arbitr´ario (mas, fixo).
Passo Indutivo ([x[ = k + 1)
Considere x ∈ Σ

. Ent˜ao, x = wa, para alguma palavra w ∈ Σ
k
e letra a ∈ Σ, e
ˆ
δ

(q, x) =
ˆ
δ

(q, wa)
= δ

(
ˆ
δ

(q, w), a) (defini¸ c˜ao de
ˆ
δ

)
67
= δ

(
ˆ
δ(q, h(w)), a) (pela hip´otese de indu¸ c˜ao)
=
ˆ
δ(
ˆ
δ(q, h(w)), h(a)) (defini¸ c˜ao de δ

)
=
ˆ
δ(q, h(w)h(a)) (Exerc´ıcio 8)
=
ˆ
δ(q, h(wa)) (Propriedade (9.2))
=
ˆ
δ(q, h(x)).
Agora, podemos provar que L(M

) = h
−1
(L(M)). Para qualquer x ∈ Σ

,
x ∈ L(M) ⇐⇒
ˆ
δ

(s, x) ∈ F (defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒
ˆ
δ(s, h(x)) ∈ F (pelo que acabamos de provar)
⇐⇒ h(x) ∈ L(M) (defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒ x ∈ h
−1
(L(M)). (defini¸ c˜ao de h
−1
(L(M)))
Observa¸ c˜ao:
´
E importante estar ciente que a afirma¸ c˜ao “se h(L) ´e regular ent˜ao L ´e regular”
´e, em geral, falsa. Por exemplo,
L = ¦a
n
b
n
[ n ∈ Z, n ≥ 0¦
n˜ao ´e regular, embora
h(L) = ¦a
n
[ n ´e par¦,
para o homomorfismo h : ¦a, b¦

→ ¦a¦

, com h(a) = h(b) = a, seja regular. Note que os
teoremas que acabamos de estudar s˜ao parecidos com a afirma¸ c˜ ao acima, mas n˜ao devem ser
confundidos com ela.
9.3 Uma aplica¸c˜ao de homomorfismos
Homomorfismos podem ser utilizados para se provar que certas linguagens s˜ao regulares. Por
exemplo, suponha que L seja uma linguagem regular sobre um dado alfabeto Σ. Ent˜ao, vamos
mostrar que a linguagem
L
1
2
= ¦x ∈ Σ

[ ∃y ∈ Σ

tal que xy ∈ L e [x[ = [y[¦
tamb´em ´e regular.
68
Note que a linguagem L
1
2
consiste de todas as palavras que s˜ao a “metade” de alguma palavra
em L. Por exemplo, se L = ¦ad, abaa, ccccc¦ ent˜ao L
1
2
= ¦a, ab¦. Como L ´e regular, existe
um AFD M = (Q, Σ, δ, s, F) tal que L(M) = L. Vamos definir o homomorfismo comprimento
h : Σ

→ ¦1¦

definido de tal forma que h(a) = 1, para todo a ∈ Σ. De forma geral, podemos
definir h como
h(x) = 1
|x|
para toda palavra x ∈ Σ

. Agora, vamos definir o conjunto inicial de um estado q ∈ Q como o
conjunto
I(M, q) = ¦x ∈ Σ

[
ˆ
δ(s, x) = q¦
e o conjunto terminal de um estado q ∈ Q como o conjunto
T(M, q) = ¦x ∈ Σ

[
ˆ
δ(q, x) ∈ F¦.
Note que L
1
2
consiste exatamente das palavras de I(M, q) que possuem o mesmo comprimento
de alguma palavra de T(M, q), para todos os estados q em Q. Note tamb´em que h(I(M, q)) re-
presenta o conjunto de palavras cujos os comprimentos s˜ao os mesmos das palavras em I(M, q).
De mesma forma, h(T(M, q)) representa o conjunto de palavras cujos os comprimentos s˜ao
os mesmos das palavras em T(M, q). Logo, h(I(M, q)) ∩ h(T(M, q)) consistir´a de todas as
palavras w ∈ ¦1¦

tais que existe uma palavra x ∈ I(M, q) e uma palavra y ∈ T(M, q) com
[w[ = [x[ = [y[. Ent˜ao,
h
−1
(h(I(M, q)) ∩ h(T(M, q)))
consiste de todas as palavras w ∈ Σ

tais que existe uma palavra x ∈ I(M, q) e uma palavra
y ∈ T(M, q) com [w[ = [x[ = [y[. Note que se existirem x ∈ I(M, q) e y ∈ T(M, q) tais
que [x[ = [y[ ent˜ao x ∈ h
−1
(h(I(M, q)) ∩ h(T(M, q))) e y ∈ h
−1
(h(I(M, q)) ∩ h(T(M, q))).
Entretanto, nem toda palavra w ∈ h
−1
(h(I(M, q)) ∩ h(T(M, q))) pertence a I(M, q) ou a
T(M, q). Logo,
I(M, q) ∪ h
−1
(h(I(M, q)) ∩ h(T(M, q)))
consiste de todas as palavras w ∈ Σ

tais que existe uma palavra y ∈ Σ

com [x[ = [y[ e
ˆ
δ(s, xy) ∈ F. Ent˜ao,
L
1
2
=
_
q∈Q
(I(M, q) ∪ h
−1
(h(I(M, q)) ∩ h(T(M, q)))).
Como I(M, q) e T(M, q) s˜ao linguagens regulares (por quˆe?), podemos utilizar o Teorema 9.1
para concluir que h(I(M, q)) e h(T(M, q)) s˜ao regulares. Como as linguagens regulares s˜ao
fechadas com respeito `a opera¸ c˜ao de interse¸ c˜ao, temos que h(I(M, q)) ∩ h(T(M, q)) ´e regular,
para todo q ∈ Q. Pelo Teorema 9.2, temos que h
−1
(h(I(M, q)) ∩ h(T(M, q)) ´e regular, para
todo q ∈ Q. Como as linguagens regulares s˜ao fechadas com respeito `a opera¸ c˜ao de interse¸ c˜ao,
temos que I(M, q)∪h
−1
(h(I(M, q))∩h(T(M, q))) ´e regular, para todo q ∈ Q. Finalmente, como
as linguagens regulares s˜ao fechadas com respeito `a opera¸ c˜ao de uni˜ao, n´os podemos concluir
que
L
1
2
=
_
q∈Q
(I(M, q) ∪ h
−1
(h(I(M, q)) ∩ h(T(M, q))))
tamb´em ´e regular.
69
9.4 Exerc´ıcios
1. Considere as linguagens
L
1
= ¦a
(n+1)
2
[ n ∈ Z, n ≥ 0¦
e
L
2
= ¦baba
2
ba
3
b ba
n
b [ n ∈ Z, n ≥ 0¦
Ent˜ao, defina um homomorfismo de linguagem h : ¦a, b¦

→ ¦a¦

tal que h(L
2
) = L
1
.
70
Cap´ıtulo 10
Padr˜oes e Express˜oes Regulares
10.1 Padr˜oes
Seja Σ um alfabeto. Um padr˜ ao ´e uma cadeia de s´ımbolos de uma certa forma que representa
um conjunto (possivelmente infinito) de cadeias em Σ

. N´os representaremos padr˜oes por letras
gregas: α, β, γ, . . .. Se α ´e um padr˜ao, ent˜ao n´os denotamos por L(α) todas as palavras que
“casam” com o padr˜ao α:
L(α) = ¦x ∈ Σ

[ x casa com α¦.
Um padr˜ao pode ser atˆomico ou composto. Os padr˜oes atˆomicos s˜ao os seguintes:
• a para cada a ∈ Σ, casado apenas com o s´ımbolo a; isto ´e, L(a) = ¦a¦;
• ǫ, casado apenas com a palavra vazia, ǫ; isto ´e, L(ǫ) = ¦ǫ¦;
• ∅, casado com nenhuma palavra; isto ´e, L(∅) = ∅, o conjunto vazio;
• #, casado com qualquer s´ımbolo de Σ; isto ´e, L(#) = Σ;
• @, casado com qualquer palavra de Σ

; isto ´e, L(@) = Σ

.
Padr˜oes compostos s˜ao constru´ıdos usando operadores bin´arios +, ∩ e (normalmente, omitido)
e operadores un´arios +, ∗ e ∼. Se α e β s˜ao padr˜oes, ent˜ao α + β, α ∩ β, α

, α
+
, ∼α e αβ
tamb´em s˜ao. O ´ ultimo deles ´e uma abrevia¸ c˜ao de α β. N´os podemos definir padr˜oes compostos
por indu¸ c˜ao com o segue:
N´os j´a vimos que palavras casam com os padr˜oes atˆomicos. Esta ´e a base da defini¸ c˜ao indutiva.
Agora, suponha que n´os j´a tenhamos definido as linguagens L(α) e L(β) das palavras que casam
com α e β, respectivamente. Ent˜ao, dizemos que
71
• x casa com α + β se, e somente se, x casa com α ou β:
L(α + β) = L(α) ∪ L(β);
• x casa com α ∩ β se, e somente se, x casa com α e β:
L(α ∩ β) = L(α) ∩ L(β);
• x casa com αβ se, e somente se, x pode ser escrita como x = yz tal que y casa com α e
z casa com β:
L(αβ) = L(α)L(β) = ¦yz [ y ∈ L(α) e z ∈ L(β)¦;
• x casa com ∼α se, e somente se, x n˜ao casa com α:
L(∼α) = L(α) = Σ

−L(α);
• x casa com α

se, e somente se, x pode ser expressa como uma concatena¸ c˜ao de zero ou
mais palavras, cada uma das quais casa com α:
L(α

) = ¦x
1
x
2
x
n
[ n ≥ 0 e x
i
∈ L(α), 1 ≤ i ≤ n¦ = L(α)
0
∪ L(α)
1
∪ = L(α)

;
• x casa com α
+
se, e somente se, x pode ser expressa como uma concatena¸ c˜ao de uma ou
mais palavras, cada uma das quais casa com α:
L(α
+
) = ¦x
1
x
2
x
n
[ n ≥ 1 e x
i
∈ L(α), 1 ≤ i ≤ n¦ = L(α)
1
∪ L(α)
2
∪ = L(α)
+
.
Exemplo 10.1. Alguns exemplos de padr˜ oes:
• Σ

= L(@) = L(#

).
• Conjuntos unit´ arios: se x ∈ Σ

ent˜ ao x ´e um padr˜ ao e ´e casado apenas com a palavra x;
isto ´e,
¦x¦ = L(x).
• Conjuntos finitos: se x
1
, . . . , x
m
∈ Σ

, ent˜ ao
¦x
1
, . . . , x
m
¦ = L(x
1
+ + x
m
).
Note que n´ os podemos escrever o padr˜ ao x
1
+ +x
m
sem usar parˆenteses, pois os dois
padr˜ oes (α + β) + γ e α + (β + γ) s˜ ao casados com as mesmas palavras; isto ´e,
L(α + (β + γ)) = L((α + β) + γ).
Matematicamente falando, o operador + ´e associativo. O mesmo pode ser dito do operador
.
72
• Palavras contendo pelo menos trˆes ocorrˆencias de a:
@a@a@a@.
• Palavras contendo um a seguido eventualmente por um b; isto ´e, palavras da forma xaybz
para quaisquer palavras x, y, z ∈ Σ

:
@a@b@.
• Todas as palavras de comprimento 1 exceto a:
# ∩ ∼a.
• Palavras com nenhuma ocorrˆencia da letra a:
(# ∩ ∼a)

.
• Palavras nas quais toda ocorrˆencia de a ´e seguida eventualmente por uma ocorrˆencia de
b; ou seja, palavras nas quais n˜ ao h´a nenhuma ocorrˆencia de a ou nas quais h´a uma
ocorrˆencia de b seguida por nenhuma ocorrˆencia de a:
(# ∩ ∼a)

+ @b(# ∩ ∼a)

.
Se o alfabeto Σ for ¦a, b¦ ent˜ ao o padr˜ ao acima se torna muito mais simples:
ǫ + @b.
Note que padr˜oes s˜ao apenas certas cadeias de s´ımbolos sobre o alfabeto
Σ ∪ ¦ǫ, ∅, #, @, +, ∩, ∼, ∗,
+
, (, )¦.
Note tamb´em que os significados de @, # e ∼ dependem de Σ. Por exemplo, se Σ = ¦a, b, c¦
ent˜ao L(#) = ¦a, b, c¦, mas se Σ = ¦a¦ ent˜ao L(#) = ¦a¦.
10.2 Express˜oes regulares
Um fato muito interessante ´e que os s´ımbolos ǫ, @, #,
+
(un´ario), ∩ e ∼ s˜ao todos redundantes,
isto ´e, cada um deles pode ser escrito como uma combina¸ c˜ao dos demais s´ımbolos e operadores.
De fato, ǫ ´e equivalente a ∅

; @ ´e equivalente a #

; α
+
´e equivalente a αα

, para todo padr˜ao
α; se Σ = ¦a
1
, . . . , a
m
¦ ent˜ao # ´e equivalente ao padr˜ao a
1
+ + a
m
; e o padr˜ao α ∩ β pode
ser escrito como ∼(∼α + ∼β). A redundˆancia de ∼ ´e um fato t˜ao surpreendente quanto dif´ıcil
de se provar.
Uma consequˆencia do que dissemos acima ´e que todo padr˜ao ´e equivalente a um outro constru´ıdo
apenas a partir dos padr˜oes atˆomicos a ∈ Σ e ∅ e dos operadores +, e

. Padr˜oes que utilizam
apenas estes s´ımbolos e o s´ımbolo ǫ s˜ao denominados express˜ oes regulares. Como vimos antes,
o s´ımbolo ǫ ´e redundante, mas ele ´e inclu´ıdo na defini¸ c˜ao de express˜ao regular por causa da
freq¨ uˆencia com que ele ocorre.
73
Exemplo 10.2. Seja Σ = ¦a, b, c¦. Ent˜ao, considere os seguintes exemplos de express˜ oes
regulares:
• A express˜ ao regular que representa a linguagem consistindo apenas da palavra vazia:
ǫ.
• A express˜ ao regular que representa a linguagem consistindo de todas as palavras em Σ

que come¸cam com a:
a((a + b + c)

).
• A express˜ ao regular que representa a linguagem consistindo de todas as palavras em Σ

de comprimento par:
((a + b + c)(a + b + c))

.
• A express˜ ao regular que representa a linguagem consistindo de todas as palavras em Σ

que possuem dois c’s consecutivos:
((a + b + c)

)cc((a + b + c)

).
10.3 Conven¸ c˜oes notacionais
Como os operadores + e s˜ao associativos, podemos escrever
α + β + γ e αβγ
sem gerar ambiguidade. No entanto, em outras situa¸ c˜oes, n´os precisamos associar precedˆencia
aos operadores se quisermos evitar o uso de parˆenteses. Por exemplo,
α + βγ
pode ser interpretado como
α + (βγ) ou (α + β)γ,
que n˜ao s˜ao padr˜oes equivalentes. N´os, arbitrariamente, adotamos a conven¸ c˜ao que o operador
de concatena¸ c˜ao possui maior precedˆencia do que +, de tal forma que interpretamos α + βγ
como α + (βγ). De forma similar, n´os consideramos

com maior precedˆencia do que + e tal
que
α + β

´e interpretada como
α + (β

).
Em todos os demais casos, utilizamos parˆenteses. Como exemplo, se Σ = ¦a, b, c¦, podemos
escrever
a((a + b + c)

) ou a(a + b + c)

,
74
enquanto
((a + b + c)(a + b + c))

e
(a + b + c)(a + b + c)

s˜ao express˜oes regulares que representam linguagens distintas. Qual ´e a linguagem representada
pela segunda express˜ao?
10.4 Exerc´ıcios
1. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

de comprimento ´ımpar e que n˜ao terminam com b.
2. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que n˜ao possuem dois c’s consecutivos.
3. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que come¸ cam com c ou n˜ao possuem dois b’s consecutivos.
4. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras x ∈ Σ

tais que todo b em x seja seguido imediatamente por um c.
5. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que n˜ao possuem mais do que dois c’s.
6. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que n˜ao possuem exatamente um c.
7. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

nas quais nenhum b ´e imediatamente precedido por um a.
8. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

nas quais nenhum b ´e imediatamente precedido por um a e que contˆem
exatamente dois c’s.
9. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que finalizam com um c e nas quais as subcadeias aa, bb e cc nunca
ocorrem.
10. Seja Σ = ¦a, b, c¦. Ent˜ao, forne¸ ca uma express˜ao regular que descreva o conjunto de todas
as palavras em Σ

que come¸ cam com um c e nas quais as subcadeias aa, bb e cc nunca
ocorrem.
75
Cap´ıtulo 11
Express˜oes Regulares e Autˆomatos Finitos
11.1 Considera¸c˜oes iniciais
Padr˜oes, express˜oes regulares e autˆomatos finitos s˜ao todos equivalentes em termos de poder
de representa¸ c˜ao de linguagens, pois todos eles representam linguagens regulares. Este fato ´e
formalizado pelo teorema abaixo:
Teorema 11.1. Seja L ⊆ Σ

. Ent˜ao, as seguintes declara¸c˜oes s˜ ao equivalentes:
(1) L ´e regular; isto ´e, L = L(M) para algum autˆomato finito M;
(2) L = L(α) para algum padr˜ ao α;
(3) L = L(α) para alguma express˜ ao regular α.
A implica¸ c˜ao (3) ⇒ (2) ´e trivial, pois toda express˜ao regular ´e um padr˜ao, por defini¸ c˜ao. Aqui,
provaremos que (1) ⇒ (3). A implica¸ c˜ao (2) ⇒ (1) ser´a provada depois que estudarmos as
propriedades de fechamento das linguagens regulares.
11.2 (1) ⇒ (3)
Dado um AFND
N = (Q, Σ, ∆, S, F)
qualquer, um subconjunto X ⊆ Q e estados u, v ∈ Q (u e v podem ser o mesmo estado), n´os
mostramos como construir uma express˜ao regular
α
X
uv
76
representando o conjunto de todas as palavras x tais que existe um caminho de u para v em
N com r´otulo x (isto ´e, tal que v ∈
ˆ
∆(¦u¦, x), e todos os estados ao longo deste caminho, com
exce¸ c˜ao possivelmente de u e v, pertecem a X.
A express˜ao α
X
uv
´e constru´ıda indutivamente na cardinalidade, [X[, de X. No caso base, [X[ = 0,
temos X = ∅ e, portanto, consideramos todos os s´ımbolos em Σ, digamos a
1
, . . . , a
k
, tais que
v ∈ ∆(u, a
i
) para algum i ∈ ¦1, . . . , k¦. Se u ,= v, definimos
α

uv
=
_
_
_
a
1
+ + a
k
se k ≥ 1
∅ se k = 0
e, se u = v, definimos
α

uv
=
_
_
_
a
1
+ + a
k
+ ǫ se k ≥ 1
ǫ se k = 0.
Agora, para qualquer subconjunto n˜ao-vazio X de Q, n´os podemos escolher um elemento q ∈ X
e definir
α
X
uv
= α
X−{q}
uv
+ α
X−{q}
uq

X−{q}
qq
)

α
X−{q}
qv
.
A express˜ao acima tem o seguinte significado: qualquer caminho de u para v com todos os
estados intermedi´arios como elementos de X (i) nunca passa por q, portanto a express˜ao
α
X−{q}
uv
,
ou (ii) visita q pela primeira vez, portanto a express˜ao
α
X−{q}
uq
,
e cont´em um n´ umero finito (possivelmente zero) de “la¸ cos” de q para q sem visitar q, mas
passando apenas por estados em X, portanto a express˜ao

X−{q}
qq
)

,
e seguido por um caminho de q para v sem passar por q de novo, portanto a express˜ao
α
X−{q}
qv
.
Portanto, se assumirmos, por hip´otese de indu¸ c˜ao, que as express˜oes
α
X−{q}
uv
, α
X−{q}
uq
, (α
X−{q}
qq
)

e α
X−{q}
qv
fazem o que escrevemos acima, a express˜ao α
X
uv
de fato representa todas as palavras que levam
o autˆomato finito, N, do estado u para o estado v passando apenas pelos estados em X e,
possivelmente, por u e v.
A uni˜ao de todas as express˜oes da forma
α
Q
sf
,
onde s ´e um estado inicial e f ´e um estado final de N, representa o conjunto de palavras aceitas
por N.
77
Exemplo 11.1. Seja
N = (Q, Σ, ∆, S, F)
um AFND tal que Q = ¦p, q, r¦, Σ = ¦0, 1¦, S = ¦p¦, F = ¦p¦, e ∆ : QΣ → 2
Q
´e dada pela
tabela abaixo:
∆ 0 1
p ¦p¦ ¦q¦
q ¦r¦ ∅
r ¦p¦ ¦q¦
Vamos converter o AFND N acima em uma express˜ ao regular equivalente. A linguagem aceita
por este AFND ser´ a representada pela express˜ ao regular
α
{p,q,r}
pp
pois p ´e o ´ unico estado inicial e o ´ unico estado final. Para encontrar a express˜ ao acima, n´ os
distinguimos um estado de Q, digamos q, e escrevemos
α
{p,q,r}
pp
= α
{p,r}
pp
+ α
{p,r}
pq

{p,r}
qq
)

α
{p,r}
qr
.
Examinando N, vemos que os ´ unicos caminhos de p para p visitando apenas estados em ¦p, r¦
s˜ ao caminhos definidos pelo ´ unico la¸co rotulado 0 de p para p. Logo,
α
{p,r}
pp
= 0

.
Usando um racioc´ınio similar, temos
α
{p,r}
pq
= 0

1,
α
{p,r}
qq
= ǫ + 01 + 000

1 = ǫ + 00

1,
α
{p,r}
qp
= 000

.
Logo, podemos definir
α
{p,q,r}
pp
= 0

+ 0

1(ǫ + 00

1)

000

.
Agora, n´os vamos provar (2) ⇒ (1) e, depois, (1) ⇒ (3).
11.3 (2) ⇒ (1)
N´os provaremos a implica¸ c˜ao (2) ⇒ (1) por indu¸ c˜ao forte no n´ umero de operadores n de α.
Base (n = 0) e (n = 1)
78
Seja α = a, para algum s´ımbolo a de Σ, α = ǫ, α = ∅, α = # ou α = @. Como L(a) = ¦a¦,
L(ǫ) = ¦ǫ¦, L(∅) = ∅, L(#) = Σ e L(@) = Σ

, e como cada uma dessas linguagens ´e aceita por
algum AFD, temos que a implica¸ c˜ao (2) ⇒ (1) ´e v´alida para qualquer padr˜ao atˆomico (n = 0).
Suponha, agora, que α possui exatamente um dos operadores ∪, ∩, ∼, ,

e
+
. Ent˜ao, α ´e da
forma β + γ, β ∩ γ, ∼β, βγ, β

e β
+
, respectivamente, onde β e γ s˜ao padr˜oes atˆomicos. J´a
mostramos que L(β) e L(γ) s˜ao linguagens regulares. Pelos teoremas 6.1, 6.2, 6.3, 6.4 e 6.5,
se L(β) e L(γ) s˜ao linguagens regulares, temos que L(β)∪L(γ), L(β)∩L(γ), L(β) = Σ

−L(β),
L(β)L(γ) e L(β)

tamb´em s˜ao regulares. Al´em disso, como β
+
= ββ

, temos que L(β)L(β)

=
L(β)
+
e, portanto, L(β)
+
tamb´em ´e regular. Logo, (2) ⇒ (1) ´e v´alida para qualquer padr˜ao α
com exatamente um operador (n = 1).
Hip´otese (1 ≤ n ≤ k)
Suponha que (2) ⇒ (1) seja v´alida para todo padr˜ao com n = 1, . . . , k operadores, onde k ´e
um inteiro arbitr´ario (mas, fixo), com k ≥ 1.
Passo Indutivo (n = k + 1)
Suponha que α possua n = k + 1 operadores. Ent˜ao, α ´e da forma β + γ, β ∩ γ, ∼β, βγ, β

e
β
+
, respectivamente, onde β e γ possuem, no m´aximo, k operadores cada um. Pela hip´otese de
indu¸ c˜ao, L(β) e L(γ) s˜ao linguagens regulares. Pelos teoremas 6.1, 6.2, 6.3, 6.4 e 6.5, se L(β) e
L(γ) s˜ao linguagens regulares, temos que L(β)∪L(γ), L(β)∩L(γ), L(β) = Σ

−L(β), L(β)L(γ)
e L(β)

tamb´em s˜ao regulares. Al´em disso, como β
+
= ββ

, temos que L(β)L(β)

= L(β)
+
e, portanto, L(β)
+
tamb´em ´e regular. Logo, (2) ⇒ (1) ´e v´alida para qualquer padr˜ao α com
n = k + 1 operadores. Como conseq¨ uˆencia, pelo princ´ıpio de indu¸ c˜ao, (2) ⇒ (1) ´e v´alida para
qualquer padr˜ao α.
79
para toda palavra x ∈ Σ

,
80
Cap´ıtulo 12
Minimiza¸ c˜ao de Estados
12.1 Considera¸c˜oes iniciais
Depois de ter estudado AFD’s e AFND’s e ter resolvidos v´arios exerc´ıcios, vocˆe j´a deve ter
observado que alguns AFD’s poderiam ter sido simplificados atrav´es da remo¸ c˜ao de estados
inating´ıveis ou pela combina¸ c˜ao de dois estados em um s´o, os quais s˜ao “equivalentes” de
alguma forma.
Por exemplo, se usarmos a constru¸ c˜ao de subconjuntos com o AFND na Fig. 12.1,
s
t
u v
a, b
a b b
a, b
Figura 12.1: AFND que aceita todas as palavras em ¦a, b¦ que cont´em a subcadeia abb.
o qual aceita todas as palavras contendo a subcadeia abb, n´os obteremos um AFD com 2
4
= 16
estados. Entretanto, com exce¸ c˜ao de 6 estados, todos os demais estados s˜ao inating´ıveis. Se
retirarmos estes estados do AFD resultante, obteremos o AFD na Fig. 12.2.
Os estados s
0
, s
1
, s
2
, s
3
, s
4
e s
5
do AFD na Fig. 12.2 correspondem aos subconjuntos ¦s¦,
¦s, t¦, ¦s, u¦, ¦s, t, v¦, ¦s, u, v¦, ¦s, v¦, respectivamente, do conjunto 2
{s,t,u,v}
, onde ¦s, t, u, v¦
´e o conjunto de estados do AFND da Fig. 12.1.
Agora, note que os estados s
3
, s
4
e s
5
do AFD na Fig. 12.2 poderiam ser “fundidos” em um
´ unico estado, pois eles s˜ao todos estados finais e, uma vez que o autˆomato entre em um deles,
ele n˜ao pode mais sair. Portanto, o AFD ilustrado pela Fig. 12.2 ´e equivalente aquele ilustrado
81
pela Fig. 12.3.
s
0
s
1
s
2
s
3
s
4
s
5
b
a
a
b
b
a
a
b
a
b
b
a
Figura 12.2: AFD equivalente ao AFND na Fig. 12.1.
r
0
r
1
r
2
r
3
b
a
a
b
b
a
a, b
Figura 12.3: AFD equivalente ao AFD na Fig. 12.2.
O exemplo anterior instiga a seguinte pergunta: dada uma linguagem regular L, como podemos
encontrar um AFD D tal que L(D) = L e D tenha o menor n´ umero de estados entre todos
os AFD’s que aceitam L? Nesta aula e na pr´oxima, n´os estudaremos um processo puramente
mecˆanico para construir D a partir de qualquer AFD que aceite L. Este processo ´e denominado
minimiza¸c˜ao de estados.
Seja
M = (Q, Σ, δ, s, F)
um AFD tal que L(M) = L, onde L ´e uma dada linguagem regular. O processo de minimiza¸ c˜ao
de estados consiste de dois est´agios:
1. Eliminar estados inating´ıveis; isto ´e, estados q ∈ Q para os quais n˜ao h´a nenhuma palavra
x ∈ Σ

tal que
ˆ
δ(s, x) = q.
2. Fundir estados “equivalentes”.
82
A elimina¸ c˜ao de estados inating´ıveis n˜ao muda a linguagem aceita pelo AFD. Al´em disso, este
est´agio pode ser efetuado por um algoritmo simples baseado em uma busca em profundidade
no “grafo” correspondente ao diagrama de transi¸ c˜ao do AFD (veja os exerc´ıcios). Portanto,
vamos assumir que este est´agio tenha sido realizado. Para o est´agio 2, n´os precisamos definir
claramente o que significa estado equivalente e como n´os podemos fundir dois deles em um s´o.
Para tal, vamos primeiro dar uma olhada na s´erie de exemplos dada a seguir.
Exemplo 12.1. Considere os dois AFD’s abaixo:
b
a
a, b
a, b
a, b
a, b a, b
a, b
Ambos aceitam a mesma linguagem, ¦a, b¦. O autˆomato com 4 estados entra em estados dis-
tintos dependendo do primeiro s´ımbolo lido, mas n˜ ao h´a raz˜ao nenhuma para que os estados
destinos sejam distintos. Eles s˜ ao “equivalentes” e podem ser fundidos em um s´ o estado, dando
origem ao autˆomato com 3 estados.
Exemplo 12.2. Considere os dois AFD’s abaixo:
q
0
q
1
q
2
q
3
q
4
q
5
b
a
a
b
a
b
a, b
a, b
a, b
a, b
a, b
a, b
a, b
Ambos aceitam a mesma linguagem,
¦a, b¦ ∪ ¦palavras de comprimento igual ou mair do que 3¦.
No autˆomato com mais estados, os estados q
3
e q
4
s˜ ao equivalentes, pois ambos possuem
transi¸c˜oes para o estado q
5
para todos os s´ımbolos de entrada. Logo, n˜ ao h´a raz˜ao para eles
serem distintos. Uma vez que n´ os fundamos q
3
e q
4
, n´ os tamb´em podemos fundir q
1
e q
2
pela
mesma raz˜ao, dando origem ao autˆomato com menos estados.
Exemplo 12.3. Considere os dois AFD’s a seguir. Ambos aceitam a mesma linguagem:
¦x ∈ ¦a, b¦

[ [x[ ≥ 3¦.
Os estados q
3
, q
4
e q
5
s˜ ao equivalentes e podem ser fundidos em um ´ unico estado, dando origem
ao autˆomato com menos estados.
83
q
0
q
1
q
2
q
3
q
4
q
5
b
a
a
b
a
b
a, b
a, b
a, b
a, b a, b
a, b
Exemplo 12.4. Os dois autˆomatos a seguir aceitam a mesma linguagem:
¦a
n
[ (n −1) ´e um m´ ultiplo de 3¦.
q
0
q
1
q
2
q
3
q
4
q
5
a
a
a
a
a
a
a
a
a
No autˆomato com mais estados, os estados q
1
e q
4
s˜ ao equivalentes e podem ser fundidos, dando
origem ao autˆomato com menos estados.
12.2 O autˆomato quociente
Como sabemos em geral quando dois estados podem ser fundidos em um s´o sem mudar a
linguagem aceita pelo autˆomato original? Como n´os sabemos quando n˜ao podemos mais fundir
estados de um dado autˆomato?
Note que n´os n˜ao podemos fundir um estado final p com um estado q que n˜ao seja final, pois
p = δ(p, ǫ) ∈ F e q = δ(q, ǫ) ,∈ F. Logo, n˜ao h´a como decidir se o estado resultante da fundi¸ c˜ao
ser´a um estado final ou n˜ao. Em geral, se p = δ(p, x) ∈ F e q = δ(q, x) ,∈ F para alguma
palavra x ∈ Σ

, ent˜ao n´os n˜ao podemos fundir p e q pela mesma raz˜ao de antes. Por outro
lado, quando p = δ(p, x) ∈ F se, e somente se, q = δ(q, x) ∈ F, para toda palavra x ∈ Σ

,
podemos seguramente fundir p e q. Vamos, a seguir, provar esta condi¸ c˜ao suficiente e necess´aria
para fundir estados.
Primeiro, vamos definir uma rela¸ c˜ao de equivalˆencia em Q, denotada por ≈, como segue:
p ≈ q ⇐⇒ ∀x ∈ Σ

(
ˆ
δ(p, x) ∈ F ⇐⇒
ˆ
δ(q, x) ∈ F).
84
A defini¸ c˜ao de ≈ dada acima nada mais ´e do que uma formaliza¸ c˜ao do crit´erio para fundir
estados que vimos antes. N˜ao ´e dif´ıcil verificar que a rela¸ c˜ ao ≈ ´e de fato uma rela¸ c˜ao de
equivalˆencia:
• Reflexiva: p ≈ p para todo p ∈ Q;
• Sim´etrica: se p ≈ q ent˜ao q ≈ p; e
• Transitiva: se p ≈ q e q ≈ r ent˜ao p ≈ r.
Como toda rela¸ c˜ao de equivalˆencia, ≈ particiona o conjunto no qual ela ´e definida, Q, em
classes de equivalˆencia:
[p] = ¦q ∈ Q [ q ≈ p¦.
Todo elemento p ∈ Q est´a contido em exatamente uma classe de equivalˆencia [p], e
p ≈ q ⇐⇒ [p] = [q].
N´os agora definimos um AFD, M/≈, chamado autˆomato quociente, tal que os estados de M/≈
correspondem `as classes de equivalˆencia de ≈:
Seja
M/≈ = (Q

, Σ, δ

, s

, F

),
onde
Q

= ¦[p] [ p ∈ Q¦,
δ

([p], a) = [δ(p, a)], ∀[p] ∈ Q e a ∈ Σ,
s

= [s],
F

= ¦[p] [ p ∈ F¦.
H´a uma sutileza na defini¸ c˜ao de δ

: como podemos ter certeza que δ

est´a bem definida? Isto
´e, a imagem [δ(p, a)] de δ

([p], a) ´e definida em termos de p. Logo, poder´ıamos desconfiar que
uma escolha diferente de um elemento da classe [p] poderia resultar em uma imagem distinta
de [δ(p, a)]: δ

([p], a) ,= δ

([q], a) para algum q ∈ [p] com q ,= p. Entretanto, o lema abaixo
guarante que isto n˜ao pode acontecer:
Lema 12.1. Se p ≈ q ent˜ ao δ(p, a) ≈ δ(q, a). Equivalentemente, se [p] = [q] ent˜ ao [δ(p, a)] =
[δ(q, a)].
Demonstra¸c˜ao. Suponha que p ≈ q. Seja a ∈ Σ e x ∈ Σ

. Ent˜ao,
ˆ
δ(δ(p, a), x) ∈ F ⇐⇒
ˆ
δ(p, ax) ∈ F
⇐⇒
ˆ
δ(q, ax) ∈ F pois p ≈ q
⇐⇒
ˆ
δ(δ(q, a), x) ∈ F.
85
Como x ´e uma palavra arbitr´aria, n´os temos que δ(p, a) ≈ δ(q, a) pela defini¸ c˜ao de ≈.
Os seguintes resultados provam que L(M/≈) = L(M):
Lema 12.2. p ∈ F ⇐⇒ [p] ∈ F

.
Demonstra¸c˜ao. A implica¸ c˜ao p ∈ F ⇒ [p] ∈ F

´e verdadeira pela pr´opria defini¸ c˜ao de F

.
Ent˜ao, vamos considerar a implica¸ c˜ao [p] ∈ F

⇒ p ∈ F. O que precisamos mostrar ´e que
se p ≈ q e p ∈ F ent˜ao q ∈ F. Em outras palavras, toda classe de equivalˆencia de ≈ ´e um
subconjunto de F ou sua interse¸ c˜ao com F ´e vazia. Mas, por defini¸ c˜ao, se p ≈ q e p ∈ F
ent˜ao
ˆ
δ(p, x) ∈ F se, e somente se,
ˆ
δ(q, x) ∈ F, para toda palavra x ∈ Σ

. Mas, como
ˆ
δ(p, ǫ) = p e
ˆ
δ(q, ǫ) = q, n´os temos que a conjun¸ c˜ao p ≈ q e p ∈ F implica que q ∈ F. Logo,
[p] ∈ F

⇒ p ∈ F.
Lema 12.3. Para toda palavra x ∈ Σ

,
ˆ
δ

([p], x) = [
ˆ
δ(p, x)].
Demonstra¸c˜ao. Vamos mostrar a afirma¸ c˜ao acima usando indu¸ c˜ao em [x[.
Base ([x[ = 0)
Se [x[ = 0 ent˜ao x = ǫ, o que imolica que
ˆ
δ

([p], x) =
ˆ
δ

([p], ǫ) = [p] = [
ˆ
δ(p, ǫ)] = [
ˆ
δ(p, x)].
Hip´otese ([x[ = k)
Assuma que nossa afirma¸ c˜ao seja verdadeira para toda palavra x ∈ Σ
k
, onde k ´e um inteiro
arbitr´ario (mas, fixo) e k ≥ 0.
Passo Indutivo ([x[ = k + 1)
Seja x ∈ Σ
k+1
. Como k ≥ 0, n´os podemos escrever x = ya, onde y ∈ Σ
k
e a ∈ Σ. Ent˜ao,
ˆ
δ

([p], x) =
ˆ
δ

([p], ya)
= δ

(
ˆ
δ

([p], y), a) (pela defini¸ c˜ao de
ˆ
δ

)
= δ

([
ˆ
δ(p, y)], a) (pela hip´otese de indu¸ c˜ao)
= [δ(
ˆ
δ(p, y), a)] (pela defini¸ c˜ao de δ

)
= [
ˆ
δ(p, ya)] (pela defini¸ c˜ao de
ˆ
δ)
= [
ˆ
δ(p, x)].
86
Teorema 12.1. L(M/≈) = L(M).
Demonstra¸c˜ao. Para qualquer x ∈ Σ

,
x ∈ L(M/≈) ⇐⇒
ˆ
δ

(s

, x) ∈ F

(defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒
ˆ
δ

([s], x) ∈ F

(defini¸ c˜ao de s

)
⇐⇒ [
ˆ
δ

(s, x)] ∈ F

(Lema 12.3)
⇐⇒
ˆ
δ(s, x) ∈ F (Lema 12.2)
⇐⇒ x ∈ L(M) (defini¸ c˜ao de aceita¸ c˜ao).
N´os acabamos de provar que M/≈ ´e equivalente a M. Agora, ´e natural nos perguntarmos
se M/≈ ´e o “menor” autˆomato equivalente a M que podemos construir removendo estados
inating´ıveis e fundindo estados equivalentes. A resposta ´e sim. Para provar este fato, vamos
usar a constru¸ c˜ao do autˆomato quociente em M/≈ para tentar fundir dois estados quaisquer
de M/≈, dando origem a um autˆomato “menor”.
Seja
[p] ∼ [q] ⇐⇒ ∀x ∈ Σ

(
ˆ
δ

([p], x) ∈ F

⇐⇒
ˆ
δ

([q], x) ∈ F

).
A rela¸ c˜ao acima ´e a mesma que ≈, mas ela ´e definida no conjunto de estados Q

do autˆomato
quociente M/≈. Agora,
[p] ∼ [q] ⇒ ∀x ∈ Σ

(
ˆ
δ

([p], x) ∈ F

⇐⇒
ˆ
δ

([q], x) ∈ F

) (defini¸ c˜ao de ∼)
⇒ ∀x ∈ Σ

([
ˆ
δ(p, x)] ∈ F

⇐⇒ [
ˆ
δ(q, x)] ∈ F

) (pelo Lema 12.3)
⇒ ∀x ∈ Σ

(
ˆ
δ(p, x) ∈ F ⇐⇒
ˆ
δ(q, x) ∈ F) (pelo Lema 12.2)
⇒ p ≈ q (defini¸ c˜ao de ≈)
⇒ [p] = [q].
Logo, quaisquer dois estados equivalentes de M/≈ s˜ao de fato iguais, e a rela¸ c˜ao ∼ em Q

nada
mais ´e do que a rela¸ c˜ao identidade =. Isto significa que M/≈ ´e o menor autˆomato que se pode
construir atrav´es da remo¸ c˜ao de estados inating´ıveis e da fundi¸ c˜ao de estados equivalentes de
M.
87
Cap´ıtulo 13
Um Algoritmo para Minimiza¸ c˜ao de Estados
13.1 Descri¸ c˜ao e exemplos
Agora, n´os estudaremos um algoritmo para descubrir os pares de estados equivalentes de um
dado AFD M. Tal algoritmo ´e denominado algoritmo de minimiza¸c˜ao de estados e nos permite
construir o autˆomato quociente M/≈, que aceita L(M). O algoritmo assume que n˜ao h´a estados
inating´ıveis em M. Isto n˜ao chega a ser uma restri¸ c˜ao, pois n´os podemos remover tais estados
usando um simples algoritmo, como mencionado antes.
A opera¸ c˜ao b´asica do algoritmo ´e marcar pares ¦p, q¦ (n˜ao ordenados) de estados de M. Um
par ¦p, q¦ ´e marcado pelo algoritmo t˜ao logo ele descubra que p e q n˜ ao s˜ao equivalentes. Os
passos do algoritmo s˜ao os seguintes:
1. Construa uma tabela tal que cada entrada da tabela corresponde a um par n˜ao ordenado
¦p, q¦ de estados de M. Todos os pares est˜ao inicialmente desmarcados. A informa¸ c˜ ao se
um par de estados est´a marcado ou n˜ao ´e armazenada na entrada da tabela correspondente
ao par.
2. Marque ¦p, q¦ se p ∈ F e q ,∈ F ou vice-versa.
3. Repita o seguinte procedimento at´e que ele n˜ao marque mais nenhum par de estados:
se existir um par ¦p, q¦ desmarcado tal que ¦δ(p, a), δ(q, a)¦ est´a marcado para algum
a ∈ Σ, ent˜ao marque ¦p, q¦.
Quando o algoritmo terminar, n´os temos que p ≈ q se, e somente se, ¦p, q¦ n˜ao est´a marcado.
Logo, os pares que est˜ao marcados correspondem aos estados de M que devem ser fundidos
para gerar os estados de M/≈.
Exemplo 13.1. Vamos aplicar o algoritmo de minimiza¸c˜ao acima ao AFD M,
M = (Q, Σ, δ, s, F)
88
tal que Q = ¦q
0
, q
1
, q
2
, q
3
, q
4
, q
5
¦, Σ = ¦a, b¦, s = q
0
, F = ¦q
1
, q
2
, q
5
¦ e δ ´e dada pela tabela a
seguir:
δ a b
q
0
q
1
q
2
q
1
q
3
q
4
q
2
q
4
q
3
q
3
q
5
q
5
q
4
q
5
q
5
q
5
q
5
q
5
O diagrama de transi¸c˜ao de M ´e mostrado a seguir:
q
0
q
1
q
2
q
3
q
4
q
5
b
a
a
b
a
b
a, b
a, b
a, b
Aqui est´ a a tabela constru´ıda no passo 1 do algoritmo:
q
0
q
1
q
2
q
3
q
4
q
1

q
2
− −
q
3
− − −
q
4
− − − −
q
5
− − − − −
Inicialmente, todos os pares est˜ ao desmarcados, o que ´e indicado na tabela pelo s´ımbolo −.
Depois do passo 2, todos os pares consistindo de um estado final e um estado n˜ ao final foram
marcados pelo algoritmo:
q
0
q
1
q
2
q
3
q
4
q
1

q
2
⋆ −
q
3
− ⋆ ⋆
q
4
− ⋆ ⋆ −
q
5
⋆ − − ⋆ ⋆
89
Agora, considere qualquer par desmarcado, digamos ¦q
0
, q
3
¦. H´a uma transi¸ c˜ao de q
0
e q
3
para q
2
e q
5
, respectivamente, com r´otulo a (denotada por ¦q
0
, q
3
¦ → ¦q
1
, q
5
¦). O par ¦q
2
, q
5
¦
n˜ ao est´ a marcado, ent˜ ao n´ os n˜ ao marcamos ¦q
0
, q
3
¦, pelo menos agora. H´a uma transi¸ c˜ao
¦q
0
, q
3
¦ → ¦q
1
, q
5
¦ com r´otulo b, mas ¦q
1
, q
5
¦ n˜ ao est´ a marcado, ent˜ ao n´ os n˜ ao marcamos
¦q
0
, q
3
¦. N´os ent˜ ao consideramos os pares desmarcados ¦q
0
, q
4
¦ e ¦q
1
, q
2
¦ e descubrimos que
n˜ ao podemos marc´a-los ainda pela mesma raz˜ao de antes. Mas, para ¦q
1
, q
5
¦, h´a uma transi¸ c˜ao
¦q
1
, q
5
¦ → ¦q
3
, q
5
¦ com r´otulo a, e ¦q
3
, q
5
¦ est´ a marcado. Logo, marcamos ¦q
1
, q
5
¦. Da mesma
forma, h´a uma transi¸c˜ao ¦q
2
, q
5
¦ → ¦q
4
, q
5
¦ com r´otulo a, e ¦q
4
, q
5
¦ est´ a marcado. Logo,
marcamos ¦q
2
, q
5
¦. Finalmente, ¦q
3
, q
4
¦ n˜ ao est´ a marcado, mas existem transi¸ c˜oes ¦q
3
, q
4
¦ →
¦q
5
, q
5
¦ com r´otulos a e b. Como ¦q
5
, q
5
¦ n˜ ao ´e nunca marcado, n˜ ao marcamos ¦q
3
, q
4
¦. Depois
da primeira itera¸c˜ao do passo 3, a tabela tem a seguinte configura¸c˜ao:
q
0
q
1
q
2
q
3
q
4
q
1

q
2
⋆ −
q
3
− ⋆ ⋆
q
4
− ⋆ ⋆ −
q
5
⋆ ⋆ ⋆ ⋆ ⋆
Agora, n´ os iniciamos uma outra itera¸c˜ao do passo 3. Assim como antes, h´a uma transi¸ c˜ao
¦q
0
, q
3
¦ → ¦q
2
, q
5
¦ com r´otulo a, mas desta vez ¦q
2
, q
5
¦ est´ a marcado. Logo, marcamos ¦q
0
, q
3
¦.
De forma semelhante, h´a uma transi¸c˜ao ¦q
0
, q
4
¦ → ¦q
2
, q
5
¦ com r´otulo b e ¦q
2
, q
5
¦ est´ a marcado.
Logo, marcamos ¦q
0
, q
4
¦. Neste ponto, a tabela est´ a como segue:
q
0
q
1
q
2
q
3
q
4
q
1

q
2
⋆ −
q
3
⋆ ⋆ ⋆
q
4
⋆ ⋆ ⋆ −
q
5
⋆ ⋆ ⋆ ⋆ ⋆
Em seguida, verificamos os pares desmarcados restantes, ¦q
1
, q
2
¦ e ¦q
3
, q
4
¦. Temos as transi¸ c˜oes
¦q
1
, q
2
¦ → ¦q
3
, q
4
¦ e ¦q
3
, q
4
¦ → ¦q
5
, q
5
¦, com r´otulos a e b, mas os pares ¦q
3
, q
4
¦ e ¦q
5
, q
5
¦ n˜ ao
est˜ ao marcados. Logo, n´ os n˜ ao temos mais estados para marcar e o algoritmo termina. Os
pares desmarcados s˜ ao ¦q
1
, q
2
2¦ e ¦q
3
, q
4
¦, o que significa que q
1
≈ q
2
e q
3
≈ q
4
. Logo, para
construir M/≈ a partir de M, basta fundir q
1
com q
2
e q
3
com q
4
e definir as transi¸ c˜oes de e
para os estados resultantes.
13.2 O autˆomato m´ınimo
N´os vimos que M/ ≈ ´e o menor autˆomato determin´ıstico (isto ´e, com o menor n´ umero de
estados) que pode ser obtido a partir de M pela remo¸ c˜ao de estados inating´ıveis e da fundi¸ c˜ao
90
de estados equivalentes de M. Mas, ser´a que M/≈ ´e o menor autˆomato determin´ıstico que
aceita L(M)? Em outras palavras, ´e verdade que n˜ao existe um outro AFD N, com menos
estados do que M/≈ e obtido de uma forma que n˜ao seja a constru¸ c˜ao do autˆomato quociente,
tal que L(N) = L(M)? A resposta ´e sim e provaremos a veracidade desta resposta no cap´ıtulo
que segue.
13.3 Exerc´ıcios
1. Considere o AFD M definido pela tabela abaixo:
a b
→ q
1
q
1
q
4
q
2
q
3
q
1
q
3
F q
4
q
2
q
4
F q
3
q
5
q
5
q
4
q
6
q
6
q
6
q
3
q
7
q
2
q
4
q
8
q
3
q
1
Ent˜ao,
(a) Indique que estados de M s˜ao ating´ıveis e quais n˜ao s˜ao.
(b) Remova os estados inating´ıveis de M e utilize o algoritmo de minimiza¸ c˜ao para
descubrir os pares de estados equivalentes do autˆomato resultante.
(c) Construa M/≈ com base na sua resposta para o item anterior.
2. Refa¸ ca o exerc´ıcio anterior para o AFD M dado pela tabela a seguir:
a b
→ q
1
F q
3
q
5
q
2
F q
8
q
7
q
3
q
7
q
2
q
4
q
6
q
2
q
5
q
1
q
8
q
6
q
2
q
3
q
7
q
1
q
4
q
8
q
5
q
1
3. Seja
M = (Q, Σ, δ, s, F)
um AFD qualquer, e seja ≈
i
a rela¸ c˜ao de equivalˆencia em Q tal que, para quaisquer
p, q ∈ Q,
p ≈
i
q ⇐⇒ ∀x ∈
i
_
k=0
Σ
k
(
ˆ
δ(p, x) ∈ F ⇐⇒
ˆ
δ(q, x) ∈ F)
91
Ent˜ao,
(a) Prove que, para quaisquer p, q ∈ Q,
p ≈
i+1
q ⇐⇒ (p ≈
i
q e δ(p, a) ≈
i
δ(q, a)), ∀a ∈ Σ.
(b) Prove que ≈=≈
i
para algum inteiro n˜ao negativo i.
4. Prove que o algoritmo de minimiza¸ c˜ao apresentado neste cap´ıtulo est´a correto. Isto ´e,
prove que o par ¦p, q¦ ´e marcado pelo algoritmo se, e somente se, existir uma palavra x
em Σ

tal que
ˆ
δ(p, x) ∈ F e
ˆ
δ(q, x) ,∈ F ou vice-versa, ou equivalentemente, se, e somente
se, p ,≈ q.
92
Cap´ıtulo 14
O Autˆomato M´ınimo
Neste cap´ıtulo, n´os mostraremos que o autˆomato quociente M/≈ ´e um autˆomato m´ınimo para
a linguagem regular L = L(M/≈) ; isto ´e, o n´ umero de estados de M/≈ ´e menor ou igual ao
n´ umero de estados de qualquer autˆomato finito determin´ıstico que tamb´em aceite a linguagem
L.
Lema 14.1. Seja L uma linguagem regular sobre um alfabeto Σ. Ent˜ao, o AFD M
R
L
´e m´ınimo.
Demonstra¸c˜ao. Assuma, por contradi¸ c˜ao, que M
R
L
n˜ao ´e m´ınimo. Em outras palavras, assuma
que existe um AFD M tal que L(M) = L e que M possua menos estados do que M
R
L
. Agora,
considere a rela¸ c˜ao ≡
M
. Por defini¸ c˜ao, o n´ umero de classes de equivalˆencia de ≡
M
´e exatamente
o n´ umero de estados de M. Al´em disso, ≡
M
´e uma rela¸ c˜ao de Myhill-Nerode que satisfaz a
propriedade
x ≡
M
y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

.
Como L ´e regular, o Teorema de Myhill-Nerode nos diz que R
L
tamb´em ´e uma rela¸ c˜ao de
Myhill-Nerode para L. Pelo Lema 8.1, R
L
´e a mais grossa congruˆencia `a direita R que satisfaz
a propriedade
x R y ⇒ (x ∈ L ⇐⇒ y ∈ L), ∀x, y ∈ Σ

.
Logo, o n´ umero de classes de equivalˆencia de R
L
´e, no m´aximo, igual ao de ≡
M
. Agora,
considere o AFD M
R
L
, cujo n´ umero de estados ´e igual ao n´ umero de classes de equivalˆencia
de R
L
, por defini¸ c˜ao. Pelo Teorema 8.1, L(M
R
L
) = L, o que implica que M
R
L
´e um AFD que
aceita L e que possui um n´ umero de estados menor ou igual ao n´ umero de estados de M, o que
contradiz nossa hip´otese. Logo, M n˜ao pode existir e M
R
L
´e, de fato, um autˆomato m´ınimo
para L.
Seja L uma linguagem regular sobre um alfabeto Σ, seja M qualquer AFD que aceita L, e
seja M/≈ o autˆomato quociente obtido a partir de M. N´os queremos mostrar que M/≈ ´e um
autˆomato m´ınimo para L. N´os acabamos de provar que M
R
L
´e um autˆomato m´ınimo para L.
O que faremos agora ´e mostrar que M
R
L
e M/≈ s˜ao “iguais”, com exce¸ c˜ao, possivelmente, do
93
nome dos estados deles. Para tal, precisamos primeiro definir o conceito de isomorfismo entre
dois AFD’s.
Defini¸ c˜ao 14.1. Um isomorfismo de dois autˆomatos finitos determin´ısticos,
M = (Q
M
, Σ, δ
M
, s
M
, F
M
) e N = (Q
N
, Σ, δ
N
, s
N
, F
N
),
´e uma uma bije¸c˜ao f : Q
M
→ Q
N
que satisfaz as seguintes propriedades:
• f(s
M
) = s
N
,
• f(δ
M
(p, a)) = δ
N
(f(p), a) para todo p ∈ Q
M
e a ∈ Σ, e
• p ∈ F
M
⇐⇒ f(p) ∈ F
N
.
Quando tal bije¸c˜ao existe, n´ os dizemos que M e N s˜ ao isomorfos e denotamos este fato por
M

= N.
Teorema 14.1. Seja L uma linguagem regular sobre um alfabeto Σ, seja M qualquer AFD tal
que L(M) = L, e seja M/≈ o autˆomato quociente obtido a partir de M. Ent˜ao, n´ os temos que
M
R
L

= M/≈.
Demonstra¸c˜ao. Seja f : Q

→ Q uma fun¸ c˜ao do conjunto de estados Q

de M/≈ no conjunto
de estados Q de M
R
L
, tal que
f(q) = [x
q
]
R
L
para todo estado q ∈ Q

, onde x
q
´e uma palavra de Σ

tal que
ˆ
δ

(s

, x
q
) = q, e δ

e s

s˜ao a fun¸ c˜ao
de transi¸ c˜ao de estados e o estado inicial de M/≈, respectivamente. Note que a existˆencia de
x
q
´e garantida pelo fato de todo estado q em Q

ser ating´ıvel. No que segue, n´os mostramos
que f est´a bem definida e que f ´e um isomorfismo:
• f est´a bem definida.
O que queremos mostrar ´e que f ´e, de fato, uma fun¸ c˜ao. Em outras palavras, se duas
palavras distintas x
q
, y
q
∈ Σ

s˜ao tais que
ˆ
δ

(s

, x
q
) =
ˆ
δ

(s

, y
q
) = q, ent˜ao n´os dever´ıamos
ter que [x
q
]
R
L
= [y
q
]
R
L
. Mas,
ˆ
δ

(s

, x
q
) =
ˆ
δ

(s

, y
q
) ⇒
(
ˆ
δ

(
ˆ
δ

(s

, x
q
), u) ∈ F ⇐⇒
ˆ
δ

(
ˆ
δ

(s

, y
q
), u) ∈ F), ∀u ∈ Σ


(
ˆ
δ

(s

, x
q
u) ∈ F ⇐⇒
ˆ
δ

(s

, y
q
u) ∈ F), ∀u ∈ Σ

⇒ (Exerc´ıcio 8)
(x
q
u ∈ L ⇐⇒ y
q
u ∈ L) ∀u ∈ Σ

⇒ (pelo Teorema 12.1)
x
q
R
L
y
q
⇒ (pela defini¸ c˜ao de R
L
)
[x
q
]
R
L
= [y
q
]
R
L
. (pela defnini¸ c˜ao de [ ])
94
• f ´e injetora.
Sejam q
1
e q
2
dois estados quaisquer de Q

tais que f(q
1
) = f(q
2
) = [x]
R
L
, para algum
estado [x]
R
L
∈ Q, onde x ∈ Σ

. Ent˜ao, pela defini¸ c˜ao de f,
ˆ
δ

(s

, x) = q
1
e
ˆ
δ

(s

, x) = q
2
.
Logo, q
1
= q
2
e, portanto, f ´e injetora.
• f ´e sobrejetora.
Seja [x]
R
L
um estado qualquer de Q. Seja q o estado de Q

tal que
ˆ
δ

(s

, x) = q. Ent˜ao,
pela defini¸ c˜ao de f, temos que f(q) = [x]
R
L
e, portanto, f ´e sobrejetora.
• f(s

) = [ǫ]
R
L
, onde [ǫ]
R
L
´e o estado inicial de M
R
L
.
Por defini¸ c˜ao, f(q) = [x
q
]
R
L
, para todo q ∈ Q

, onde x
q
´e uma palavra de Σ

tal que
ˆ
δ

(s

, x
q
) = q. Mas, se q = s

, ent˜ao (pela defini¸ c˜ao de
ˆ
δ

) sabemos que
ˆ
δ

(s

, ǫ) = s

. Logo,
f(s

) = [ǫ]
R
L
.
• f(δ

(p, a)) = δ(f(p), a) para todo p ∈ Q

e a ∈ Σ, onde δ ´e a fun¸ c˜ao de transi¸ c˜ao de
estados de M
R
L
.
f(δ

(p, a)) = f(δ

(
ˆ
δ

(s

, x
p
), a)), x
p
∈ Σ

e
ˆ
δ

(s

, x
p
) = p (pois p ´e ating´ıvel)
= f(
ˆ
δ

(s

, x
p
a)) (pela defini¸ c˜ao de
ˆ
δ

)
= [x
p
a]
R
L
(pela defini¸ c˜ao de f)
= δ([x
p
]
R
L
, a) (pela defini¸ c˜ao de δ)
= δ(f(p), a). (pela defini¸ c˜ao de f)
• p ∈ F

⇐⇒ f(p) ∈ F, onde F

e F s˜ao os conjuntos de estados finais de M
R
L
e M/≈,
respectivamente.
Se p ∈ F

ent˜ao, para toda palavra x
p
∈ Σ

tal que
ˆ
δ

(s

, x
p
) = p, n´os temos que x
p
∈ L,
pois L = L(M/≈) por hip´otese. Como R
L
´e uma rela¸ c˜ao de Myhill-Nerode, n´os temos
que [x
p
]
R
L
⊆ L, o que implica que o estado f(p) = [x
p
]
R
L
de M
R
L
´e final. Por outro lado,
se f(p) ∈ F, ent˜ao [x
p
]
R
L
⊆ L pela defini¸ c˜ao de F. Por defini¸ c˜ao,
ˆ
δ

(s

, x
p
) = p. Como
L = L(M/≈), temos que p ∈ F

.
Se M
R
L

= M/≈ ent˜ao ambos possuem o mesmo n´ umero de estados. Logo, M/≈´e um autˆomato
m´ınimo que aceita L. Em geral, o autˆomato m´ınimo n˜ao ´e ´ unico, mas n´os podemos mostrar
que qualquer AFD M que aceite L e que possua o mesmo n´ umero de estados de M
R
L
tem
de ser isomorfo a M
R
L
. Logo, todos os autˆomatos m´ınimos que aceitam L diferem apenas
pelo nome de seus estados. A prova deste fato ´e idˆentica a prova do Teorema 14.1, pois em
nenhum momento da prova, n´os usamos o fato que M/≈ ´e o autˆomato quociente. O ´ unico fato
importante ´e que todos os estados de M/≈ s˜ao ating´ıveis, mas se isto n˜ao fosse verdade, M/≈
n˜ao seria m´ınimo!
95
Cap´ıtulo 15
Gram´aticas e Linguagens Livres de Contexto
15.1 Defini¸c˜ao de GLC’s e LLC’s
Defini¸ c˜ao 15.1. Formalmente, uma gram´atica livre de contexto (GLC) ´e uma qu´adrupla
G = (N, Σ, P, S)
onde N ´e um conjunto finito cujos elementos s˜ ao denominados n˜ao-terminais ou vari´aveis, Σ
´e um conjunto finito cujos elementos s˜ ao denominados terminais e tal que (N ∩ Σ) = ∅, P ´e
um subconjunto finito de N (N ∪ Σ)

cujos elementos s˜ ao denominados produ¸ c˜oes, e S ∈ N
´e o s´ımbolo inicial.
N´os utilizamos letras mai´ usculas A, B, C, . . . para n˜ao-terminais e letras min´ usculas a, b, c, . . .
para s´ımbolos terminais. As palavras em (N ∪ Σ)

s˜ao denotadas por α, β, γ, . . .. Ao inv´es
de escrevermos produ¸ c˜oes como (A, α), n´os escrevemos A → α. Comumente, usamos a barra
vertical, [, para abreviar um conjunto de produ¸ c˜oes com o mesmo lado esquerdo. Por exemplo,
ao inv´es de escrevermos
A → α
1
, A → α
2
, A → α
3
,
n´os podemos escrever
A → α
1
[ α
2
[ α
3
.
Gram´aticas livres de contexto, assim como autˆomatos finitos e express˜oes regulares, s˜ao modelos
formais de representa¸ c˜ao de linguagens. A linguagem representada por uma gram´atica livre de
contexto consiste de todas as palavras que podem ser “derivadas” a partir do s´ımbolo inicial
da gram´atica.
O conceito de deriva¸ c˜ao de palavras pode ser formalizado como segue. Se α e β s˜ao duas
palavras quaisquer de (N ∪ Σ)

, n´os dizemos que β ´e deriv´ avel a partir de α em um passo e
escrevemos
α
1
−→
G
β
96
se β pode ser obtida a partir de α atrav´es da substitui¸ c˜ao de alguma ocorrˆencia de um n˜ao-
terminal A em α por γ, onde A → γ pertence a P; isto ´e, se existirem α
1
e α
2
em (N ∪ Σ)

e
uma produ¸ c˜ao A → γ tal que
α = α
1

2
e β = α
1
γα
2
.
Por exemplo, considere a gram´atica livre de contexto G = (N, Σ, P, S) tal que N = ¦S¦,
Σ = ¦a, b¦, e P = ¦S → aSb, S → ǫ¦. Ent˜ao,
aSb
1
−→
G
ab,
pois ab pode ser obtida a partir de aSb atrav´es da substitui¸ c˜ao de S pela palavra vazia ǫ, j´a
que S → ǫ pertence a P.
De forma geral, definimos
• α
0
−→
G
α, para qualquer α ∈ (N ∪ Σ)

,
• α
n+1
−→
G
β, se existir γ tal que α
n
−→
G
γ e γ
1
−→
G
β, e
• α

−→
G
β, se α
n
−→
G
β para algum inteiro n˜ao-negativo n.
Por exemplo,
S

−→
G
aabb,
pois
S
1
−→
G
aSb, aSb
1
−→
G
aaSbb, aaSbb
1
−→
G
aaǫbb, e aaǫbb = aabb.
Uma palavra em (N∪Σ)

deriv´avel a partir do s´ımbolo inicial S ´e dita ser uma forma sentencial.
Uma forma sentencial ´e dita ser uma senten¸ca se ela consistir apenas de s´ımbolos terminais;
isto ´e, se ela estiver em Σ

. A linguagem gerada por G, denotada por L(G), ´e o conjunto de
todas as senten¸ cas:
L(G) = ¦x ∈ Σ

[ S

−→
G
x¦.
Por exemplo, aaSbb e aabb s˜ao formas sentenciais da gram´atica G do exemplo anterior e aabb
´e, tamb´em, uma senten¸ ca, enquanto aaSbb n˜ao ´e. A linguagem L(G) gerada pela gram´atica G
´e exatamente a linguagem
¦a
n
b
n
[ n ∈ Z, n ≥ 0¦.
Defini¸ c˜ao 15.2. Uma linguagem L ⊆ Σ

´e uma linguagem livre de contexto (LLC) se, e
somente, se L ´e igual a linguagem L(G) gerada por alguma gram´ atica livre de contexto G =
(N, Σ, P, S).
Pelo que acabamos de ver, a linguagem ¦a
n
b
n
[ n ∈ Z, n ≥ 0¦ ´e uma linguagem livre de
contexto.
97
15.2 Exemplos
Exemplo 15.1. A linguagem
L = ¦x ∈ ¦a, b¦

[ x = x
r
¦
´e uma linguagem livre de contexto, pois ela ´e gerada pela gram´ atica
G = (¦S, A, B¦, ¦a, b¦, ¦S → aSa [ bSb [ a [ b [ ǫ¦, S).
Exemplo 15.2. A linguagem
L = ¦x ∈ ¦a, b¦

[ [x[
a
= [x[
b
¦
´e uma linguagem livre de contexto, pois ela ´e gerada pela gram´ atica
G = (¦S¦, ¦a, b¦, ¦S → aSbS [ bSaS [ ǫ¦, S).
Exemplo 15.3. A seguinte gram´ atica livre de contexto gera todas as cadeias balanceadas de
parˆenteses:
G = (¦S¦, ¦(, )¦, ¦S → (S) [ SS [ ǫ¦, S).
Uma cadeia x em ¦(, )¦

´e dita balanceada se ela satisfaz as duas seguintes propriedades: (1)
[x[
(
= [x[
)
e (2) para todo prefixo y de x, [y[
(
≥ [y[
)
. Por exemplo, x = (())() ´e balanceada, mas
x = (() e x =)(())( n˜ ao s˜ ao.
Exemplo 15.4. Como sabemos que uma dada gram´ atica gera uma dada linguagem? Por
exemplo, como sabemos que a gram´ atica do Exemplo 15.3 de fato gera a linguagem de todas as
cadeias de parˆenteses balanceadas,
PARBAL = ¦x ∈ ¦(, )¦

[ x ´e balanceada¦?
A resposta matematicamente correta ´e provando que toda palavra derivada a partir da gram´ atica
est´ a na linguagem e toda palavra da linguagem pode ser derivada a partir do s´ımbolo inicial da
gram´ atica.
Como exemplo, vamos mostrar que a gram´ atica
G = (¦S¦, ¦(, )¦, ¦S → (S) [ SS [ ǫ¦, S)
gera
PARBAL = ¦x ∈ ¦(, )¦

[ x ´e balanceada¦.
Primeiro, vamos mostrar que se S

−→
G
x ent˜ ao x ´e balanceada, isto ´e, x satisfaz as condi¸ c˜oes
(1) e (2) de uma cadeia balanceada. N´os mostraremos este fato usando indu¸c˜ao no n´ umero de
deriva¸ c˜oes de qualquer cadeia α ∈ (N ∪ Σ)

. Mais especificamente, mostraremos por indu¸c˜ao
em n que se
S
n
−→
G
α,
98
para qualquer cadeia α ∈ (N ∪ Σ)

e algum inteiro n˜ ao-negativo n, ent˜ ao α satisfaz (1) e (2).
Note que α n˜ ao ´e necessariamente uma cadeia de terminais. Logo, n´ os mostraremos algo “mais
forte” do que precisamos.
Base (n = 0)
Se S
0
−→
G
α ent˜ ao α = S, por defini¸c˜ao. Como a forma sentencial S satisfaz (1) e (2), nossa
afirma¸c˜ao ´e verdadeira para n = 0.
Hip´ otese (n = k)
Assuma que, para qualquer cadeia α ∈ (N ∪ Σ)

tal que S
k
−→
G
α, onde k ´e um inteiro n˜ ao-
negativo arbitr´ario (mas, fixo), α satisfaz (1) e (2).
Passo Indutivo (n = k + 1)
Suponha que S
k+1
−→
G
α. Seja β seja a forma sentencial imediatamente anterior a α na deriva¸c˜ao;
isto ´e,
S
k
−→
G
β
1
−→
G
α.
Pela hip´ otese de indu¸c˜ao, β satisfaz (1) e (2). Como h´a exatamente trˆes produ¸ c˜oes em G, n´ os
consideramos os trˆes poss´ıveis substitui¸c˜oes que podem dar origem a α a partir de β em um
passo de deriva¸c˜ao,
β
1
−→
G
α.
Se quaisquer das duas produ¸ c˜oes, S → ǫ e S → SS, forem usadas para gerar α a partir de
β, ent˜ ao α ser´ a balanceada, pois tais produ¸ c˜oes n˜ ao aumentam o n´ umero nem a ordem dos
parˆenteses em β. Logo, α satisfaz (1) e (2).
Se a produ¸ c˜ao S → (S) foi aplicada para gerar α, ent˜ ao, por defini¸c˜ao, existem β
1
, β
2
∈ (N∪Σ)

tais que
β = β
1

2
e α = β
1
(S)β
2
.
Pela hip´ otese de indu¸c˜ao, (1) e (2) s˜ ao v´alidas para β. Ent˜ao, [α[
(
= [β[
(
+1 = [β[
)
+1 = [α[
)
,
o que implica que (1) ´e v´alida para α. Para mostrar que (2) tamb´em ´e v´alida para α, suponha
que γ seja qualquer prefixo de α. Queremos mostrar que [γ[
(
≥ [γ[
)
. Mas, ou
• γ ´e um prefixo de β
1
e, neste caso, γ ´e um prefixo de β, o que implica que (2) vale para
γ pela hip´ otese de indu¸c˜ao; ou
• γ ´e um prefixo de β
1
(S mas n˜ ao de β e, neste caso, temos que
[γ[
(
= [β
1
[
(
+ 1
≥ [β
1
[
)
+ 1
> [β
1
[
)
= [γ[
)
; ou
99
• γ = β
1
(S)δ, onde δ ´e um prefixo de β
2
, e, neste caso,
[γ[
(
= [β
1
Sδ[
(
+ 1
≥ [β
1
Sδ[
)
+ 1
= [γ[
)
.
Logo, em todos os casos acima, [γ[
(
≥ [γ[
)
. Como γ ´e arbitr´ario, (2) ´e v´alida para α. Con-
sequentemente, conclu´ımos a prova que, para toda cadeia x ∈ Σ

, se S

−→
G
x ent˜ ao x ´e
balanceada.
Agora, precisamos mostrar que se x ∈ Σ

´e balanceada ent˜ ao S

−→
G
x. Nossa prova ´e por
indu¸c˜ao em [x[.
Base ([x[ = 0)
Se [x[ = 0 ent˜ ao x = ǫ e S

−→
G
x em um passo usando a produ¸ c˜ao S → ǫ.
Hip´ otese ([x[ ≤ k)
Assuma que se x ∈ Σ
i
, para qualquer 0 ≤ i ≤ k, e x for balanceada ent˜ ao S

−→
G
x, onde k ´e
um inteiro n˜ ao-negativo arbitr´ario (mas, fixo).
Passo Indutivo ([x[ = k + 1)
N´os consideramos dois casos:
(a) existe um prefixo pr´ oprio y de x (um prefixo tal que 0 < [y[ < [x[) que satisfaz (1) e (2),
ou
(b) n˜ ao existe tal prefixo.
No caso (a), temos que x = yz para algum z com 0 < [z[ < [x[, e z tem de satisfazer (1)
e (2) tamb´em, pois [z[
(
= [x[
(
− [y[
(
= [x[
)
− [y[
)
= [z[
)
, e para qualquer prefixo w de z,
[w[
(
= [yw[
(
−[y[
(
≥ [yw[
)
−[y[
)
= [w[
)
, pois yw ´e um prefixo de x e y satisfaz (1). Pela hip´ otese
de indu¸c˜ao, S

−→
G
y e S

−→
G
z. Logo, podemos derivar a cadeia balanceada x come¸ cando com
a produ¸ c˜ao S → SS, derivando y a partir do primeiro S, e por fim, derivando z a partir do
segundo S:
S
1
−→
G
SS

−→
G
yS

−→
G
yz = x.
No caso (b), n˜ ao existe o tal prefixo y. Ent˜ao, temos que x = (z), para algum z ∈ Σ

, e z
satisfaz (1) e (2), pois
[z[
(
= [x[
(
−1 = [x[
)
−1 = [z[
)
,
100
e, para todo prefixo u de z tal que u ,= ǫ,
[u[
(
−[u[
)
= [(u[
(
−1 −[[u[
)
≥ 0,
pois, como estamos no caso (b), [(u[
(
− [[u[
)
≥ 1. Pela hip´ otese de indu¸c˜ao, S

−→
G
z. Combi-
nando esta deriva¸c˜ao com a produ¸ c˜ao S → (S), n´ os obtemos uma deriva¸c˜ao de x a partir de
S:
S
1
−→
G
(S)

−→
G
(z) = x.
Logo, qualquer cadeia balanceada x ∈ Σ

pode ser gerada por G. Consequentemente, temos que
L(G) = PARBAL.
15.3 Exerc´ıcios
1. Considere a linguagem livre de contexto L
1
= ¦wcw
r
[ w ∈ ¦a, b¦

¦, onde w
r
denota a
palavra reversa de w. Forne¸ ca uma gram´atica livre de contexto G
1
tal que a linguagem
L(G
1
) gerada por G
1
seja igual a L
1
.
2. Considere a linguagem livre de contexto
L
2
= ¦a
n
b
n
[ n ∈ Z, n ≥ 1¦ ∪ ¦a
n
b
2n
[ n ∈ Z, n ≥ 1¦
Forne¸ ca uma gram´atica livre de contexto G
2
tal que a linguagem L(G
2
) gerada por G
2
seja igual a L
2
.
3. Considere a linguagem livre de contexto L
3
= ¦xcy [ [x[ = 2[y[, x, y ∈ ¦a, b¦

¦. Forne¸ ca
uma gram´atica livre de contexto G
3
tal que a linguagem L(G
3
) gerada por G
3
seja igual
a L
3
.
4. Considere a linguagem L
4
= ¦a
m
b
n
[ m, n ∈ Z, 1 ≤ m ≤ n ≤ 2m¦. Mostre que L
4
´e livre
de contexto. Dica: Forne¸ ca uma gram´atica livre de contexto G
4
para gerar L
4
e prove
que L(G
4
) = L
4
.
5. Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer sobre o mesmo alfabeto Σ.
Ent˜ao, mostre que a linguagem resultante da uni˜ao de L
1
e L
2
, L
1
∪ L
2
, tamb´em ´e livre
de contexto.
6. Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer sobre o mesmo alfabeto Σ.
Ent˜ao, mostre que a linguagem resultante da concatena¸ c˜ao de L
1
e L
2
, L
1
L
2
, tamb´em ´e
livre de contexto.
7. Sejam Σ e Γ dois alfabetos, e seja h : Σ

→ Γ

um homomorfismo de linguagem. Ent˜ao,
mostre que se L ´e livre de contexto, ent˜ao h(L) tamb´em ´e. Lembre-se de que, para
qualquer linguagem L ⊆ Σ

,
h(L) = ¦h(x) [ x ∈ L¦.
101
Cap´ıtulo 16
Deriva¸ c˜oes
H´a algumas vantagens pr´aticas e te´oricas em substituirmos o n˜ao-terminal mais `a esquerda em
cada deriva¸ c˜ao ou, analogamente, o n˜ao-terminal mais `a direita. Tais deriva¸ c˜oes s˜ao denomina-
das deriva¸c˜oes mais `a esquerda e deriva¸c˜oes mais `a direita, respectivamente, e s˜ao formalmente
definidas como segue:
Defini¸ c˜ao 16.1. Seja (N, Σ, P, S) uma GLC, e sejam α, β ∈ (N∪Σ)

tais que α
1
−→
G
β. Ent˜ao,
n´ os dizemos que α
1
−→
G
β ´e um passo de deriva¸ c˜ao mais `a esquerda se, e somente se, existirem
x ∈ Σ

, ρ ∈ (N ∪ Σ)

e uma produ¸ c˜ao (A → γ) ∈ P tais que
α = xAρ e β = xγρ.
N´os denotamos o passo de deriva¸c˜ao mais `a esquerda α
1
−→
G
β por α
1
−→
G,e
β, ou simplesmente,
α
1
−→
e
β quando n˜ ao houver mais de uma gram´ atica em quest˜ ao. De forma geral, n´ os temos
que
• α
0
−→
G,e
α para todo α ∈ (N ∪ Σ)

,
• α
n+1
−→
G,e
β se existir γ tal que α
n
−→
G,e
γ e γ
1
−→
G,e
β,
• α

−→
G,e
β se α
n
−→
G,e
β para algum inteiro n˜ ao-negativo n.
Defini¸ c˜ao 16.2. Seja (N, Σ, P, S) uma GLC, e sejam α, β ∈ (N∪Σ)

tais que α
1
−→
G
β. Ent˜ao,
n´ os dizemos que α
1
−→
G
β ´e um passo de deriva¸ c˜ao mais `a direita se, e somente se, existirem
λ ∈ (N ∪ Σ)

, y ∈ Σ

e uma produ¸ c˜ao (A → γ) ∈ P tais que
α = λAy e β = λγy.
102
N´os denotamos o passo de deriva¸c˜ao mais `a direita α
1
−→
G
β por α
1
−→
G,d
β, ou simplesmente,
α
1
−→
d
β quando n˜ ao houver mais de uma gram´ atica em quest˜ ao. De forma geral, n´ os temos
que
• α
0
−→
G,d
α para todo α ∈ (N ∪ Σ)

,
• α
n+1
−→
G,d
β se existir γ tal que α
n
−→
G,d
γ e γ
1
−→
G,d
β,
• α

−→
G,d
β se α
n
−→
G,d
β para algum inteiro n˜ ao-negativo n.
Exemplo 16.1. Considere a GLC G = (¦E¦, ¦+, , (, ), a¦, P, E), onde P ´e o conjunto con-
sistindo das regras E → E + E, E → E E, E → (E), e E → a. Ent˜ao, a cadeia a + a a
possui as deriva¸c˜oes mais `a esquerda e mais `a direita em G (usamos negrito para identificar o
n˜ ao-terminal substitu´ıdo):
E
1
−→
e
E E
1
−→
e
E + E E
1
−→
e
a +E E
1
−→
e
a + a E
1
−→
e
a + a a
e
E
1
−→
d
E +E
1
−→
d
E + E E
1
−→
d
E +E a
1
−→
d
E + a a
1
−→
d
a + a a.
O lema a seguir mostra que deriva¸ c˜oes mais `a esquerda e mais `a direita s˜ao “universais”; isto
´e, toda palavra da linguagem gerada por uma gram´atica livre de contexto pode ser derivada
por uma deriva¸ c˜ao mais `a esquerda e por uma deriva¸ c˜ao mais `a direita. Esta propriedade tem
implica¸ c˜oes pr´aticas importantes para a complexidade dos algoritmos de an´alise sint´atica em
Compiladores.
Lema 16.1. Seja G = (N, Σ, P, S) uma GLC. Ent˜ao, para toda palavra w ∈ Σ

tal que w ∈
L(G), h´a uma deriva¸c˜ao mais `a esquerda, S

−→
G,e
w, e uma deriva¸c˜ao mais ` a direita, S

−→
G,d
w,
em G que geram w.
Demonstra¸c˜ao. N´os usamos indu¸ c˜ao no comprimento das deriva¸ c˜oes para provar um argumento
“mais forte” do que aquele do lema, o que tornar´a nossa demonstra¸ c˜ao mais simples. Isto ´e, n´os
vamos mostrar por indu¸ c˜ao em n que, para toda palavra w ∈ (Σ

∪N), para todo α ∈ (N∪Σ)
+
,
e para todo inteiro n, com n ≥ 1, se α
n
−→
G
w, ent˜ao h´a uma deriva¸ c˜ao mais `a esquerda α
n
−→
G,e
w.
Uma prova da mesma afirma¸ c˜ao para deriva¸ c˜oes mais `a direita ´e an´aloga e ser´a deixada como
exerc´ıcio para o aluno.
Base (n = 1)
Se n = 1 ent˜ao existem λ, ρ ∈ (N ∪ Σ)

e uma produ¸ c˜ao A → γ tais que α = λAρ e w = λγρ.
Como w ´e uma cadeia de terminais, λ, ρ e γ tˆem de ser cadeias de terminais tamb´em. Logo, A
103
´e o ´ unico n˜ao-terminal em α, e o passo de deriva¸ c˜ao α
1
−→
G
w ´e um passo de deriva¸ c˜ao mais `a
esquerda (e mais `a direita tamb´em!).
Hip´otese (n = k)
Assuma que nossa afirma¸ c˜ao seja verdadeira para qualquer valor arbitr´ario (mas, fixo) k de n,
com k ≥ 1.
Passo Indutivo (n = k + 1)
Considere o caso n = k + 1. Ent˜ao, a deriva¸ c˜ao α
n
−→
G
w ´e da forma
α
1
−→
G
β
k
−→
G
w.
H´a dois casos a considerar:
1) Se o passo de deriva¸ c˜ao α
1
−→
G
β ´e uma deriva¸ c˜ao mais `a esquerda, pela hip´otese de
indu¸ c˜ao, h´a uma deriva¸ c˜ao mais `a esquerda β
k
−→
G,e
w, e n´os obtemos a deriva¸ c˜ao mais `a
esquerda
α
1
−→
G,e
β
k
−→
G,e
w.
2) Se o passo de deriva¸ c˜ao α
1
−→
G
β n˜ao ´e uma deriva¸ c˜ao mais `a esquerda, ent˜ao existem
x ∈ Σ

, µ, ρ ∈ (N ∪ Σ)

, n˜ao-terminais A e B e uma produ¸ c˜ao B → δ tais que
α = xAµBρ e β = xAµδρ,
onde A ´e o n˜ao-terminal mais `a esquerda em α. Como n´os temos uma deriva¸ c˜ao β
k
−→
G
w
de comprimento k, pela hip´otese de indu¸ c˜ao, deve existir uma deriva¸ c˜ao mais `a esquerda
β
k
−→
G,e
w.
Como β = xAµδρ, onde A ´e o n˜ao-terminal mais `a esquerda em β, o primeiro passo da
deriva¸ c˜ao mais `a esquerda β
k
−→
G,e
w ´e da forma
xAµδρ
1
−→
G,e
xγµδρ,
para alguma produ¸ c˜ao A → γ. Logo, n´os obtemos uma deriva¸ c˜ao da forma
α = xAµBρ
1
−→
G
xAµδρ
1
−→
G,e
xγµδρ
k−1
−→
G,e
w.
N´os podemos trocar a ordem dos dois primeiros passos envolvendo as regras B → δ e
A → γ, e obtemos a deriva¸ c˜ao
α = xAµBρ
1
−→
G,e
xγµBρ
1
−→
G
xγµδρ
k−1
−→
G,e
w.
104
A deriva¸ c˜ao acima pode n˜ao ser mais `a esquerda, mas ela possui comprimento k + 1 e o
primeiro passo ´e uma deriva¸ c˜ao mais `a esquerda. Isto implica que estamos de volta ao
caso 1). Logo, n´os podemos aplicar a hip´otese de indu¸ c˜ao para concluir que existe uma
deriva¸ c˜ao mais `a esquerda xγµBρ
1
−→
G,e
w.
16.1 Exerc´ıcios
1. Considere a gram´atica
G = (N, Σ, P, S)
tal que
N = ¦S, A¦, Σ = ¦a, b¦, P = ¦S → AA, A → AAA [ a [ bA [ Ab¦ .
Ent˜ao,
(a) Quais palavras de L(G) podem ser produzidas por deriva¸ c˜oes de, no m´aximo, quatro
passos?
(b) Forne¸ ca pelo menos quatro deriva¸ c˜oes diferentes para a cadeia babbab?
(c) Para quaisquer inteiros positivos, m, n, e p, descreva uma deriva¸ c˜ao em G da cadeia
b
m
ab
n
ab
p
.
105
Cap´ıtulo 17
´
Arvores Sint´aticas
H´a uma representa¸ c˜ao para deriva¸ c˜oes na forma de ´arvore que mostra claramente como os
s´ımbolos de uma senten¸ ca est˜ao agrupados em subcadeias. Cada uma dessas subcadeias per-
tence `a linguagem gerada a partir de uma das vari´aveis da gram´atica. Formalmente, uma ´arvore
sint´atica ´e definida como segue:
Defini¸ c˜ao 17.1. Seja G = (N, Σ, P, S) uma GLC. Ent˜ao, uma ´arvore sint´atica para G ´e uma
´arvore que satisfaz as seguintes condi¸ c˜oes:
1. Cada n´ o interior ´e rotulado por um n˜ ao-terminal em N.
2. Cada folha ´e rotulada por um n˜ ao-terminal, um terminal ou ǫ. No entanto, se a folha for
rotulada por ǫ, ela deve ser o ´ unico filho de seu pai.
3. Se um n´ o interior ´e rotulado A e seus filhos s˜ ao rotulados X
1
, X
2
, . . . , X
n
, respectivamente,
da esquerda para a direita, ent˜ ao
A → X
1
X
2
X
n
´e uma produ¸ c˜ao em P. Observe que um dos X’s ´e ǫ se, e somente se, ele for o r´otulo do
´ unico filho (isto ´e, A → ǫ ´e uma produ¸ c˜ao de G).
A Figura 17.1 mostra uma ´arvore sint´atica para a gram´atica
G = (¦S¦, ¦(, )¦, ¦S → (S) [ SS [ ǫ¦, S) ,
que gera a linguagem
PARBAL = ¦x ∈ ¦(, )¦

[ x ´e balanceada¦ .
A raiz ´e identificada com a produ¸ c˜ao S → SS, pois os trˆes filhos da raiz possuem r´otulo S e
S, respectivamente, da esquerda para a direita. Os filhos mais `a esquerda e mais `a direita da
106
raiz s˜ao ambos associados com a produ¸ c˜ao S → (S), pois os trˆes filhos do filho mais `a esquerda
(resp. mais `a direita) da raiz s˜ao rotulados com (, S e ), respectivamente, da esquerda para a
direita.
Se examinarmos as folhas de uma ´arvore sint´atica e as concatenarmos a partir da esquerda,
obteremos uma cadeia chamada resultado da ´arvore, que ´e sempre uma cadeia derivada do
n˜ao-terminal raiz (este fato ser´a provado em breve). S˜ao de especial importˆancia as ´arvores
sint´aticas de cujas as ra´ızes s˜ao rotuladas com o s´ımbolo inicial da gram´atica e das quais os
resultados s˜ao cadeias de terminais; isto ´e, todas as folhas s˜ao rotuladas por um terminal ou
pela palavra vazia, ǫ. Essas s˜ao ´arvores que representam deriva¸ c˜oes de senten¸ cas da linguagem
gerada pela gram´atica.
) ( ) ( S S
S S
S
ǫ ǫ
Figura 17.1: Uma ´arvore sint´atica para a gram´atica que gera a linguagem PARBAL.
Intuitivamente, ´arvores sint´aticas s˜ao maneiras de se representar deriva¸ c˜oes de senten¸ cas tal
que as diferen¸ cas “superficiais” entre as deriva¸ c˜oes, relativas `a ordem de deriva¸ c˜ao, sejam omi-
tidas. Em outras palavras, ´arvores sint´aticas representam classes de equivalˆencia de deriva¸c˜oes.
Vamos formalizar esta intui¸ c˜ao.
Seja G = (N, Σ, P, S) uma gram´atica livre de contexto. Ent˜ao, suponha que
A = α
1
1
−→
G
α
2

1
−→
G
α
n
e
A

= α

1
1
−→
G
α

2

1
−→
G
α

n
sejam duas deriva¸ c˜oes em G, onde α
i
, α

i
∈ (N ∪ Σ)

, para todo i = 1, . . . , n, α
1
, α

1
∈ N e
α
n
, α

n
∈ Σ

. Dizemos que A precede A

, e escrevemos A ≺ A

, se n > 2 e se existir um inteiro
k, com 1 < k < n, tal que
(1) para todo i ,= k, temos que α
i
= α

i
;
(2) α
k−1
= α

k−1
= µAνBγ, onde µ, ν, γ ∈ (N ∪ Σ)

, e A, B ∈ N;
(3) α
k
= µβ
1
νBγ, onde A → β
1
∈ P;
107
(4) α

k
= µAνβ
2
γ, onde A → β
2
∈ P;
(5) α
k+1
= α

k+1
= µβ
1
νβ
2
γ.
Em outras palavras, as duas deriva¸ c˜oes s˜ao idˆenticas exceto por dois passos consecutivos, nos
quais os mesmos dois n˜ao-terminais s˜ao substitu´ıdos pelas mesmas cadeias, mas em ordens
distintas nas duas deriva¸c˜oes. A deriva¸ c˜ao em que o n˜ao-terminal mais `a esquerda ´e substitu´ıdo
primeiro ´e dita preceder a outra. Por exemplo, considere as seguintes trˆes deriva¸ c˜oes, D
1
, D
2
e
D
3
, na gram´atica G,
G = (¦S¦, ¦(, )¦, ¦S → (S) [ SS [ ǫ¦, S) ,
que geram a senten¸ ca (())() da linguagem PARBAL:
D
1
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
((S))S
1
−→
G
(())S
1
−→
G
(())(S)
1
−→
G
(())() ,
D
2
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
((S))S
1
−→
G
((S))(S)
1
−→
G
(())(S)
1
−→
G
(())() ,
D
3
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
((S))S
1
−→
G
((S))(S)
1
−→
G
((S))()
1
−→
G
(())() .
Note que D
1
≺ D
2
e D
2
≺ D
3
. Entretanto, n˜ao ´e o caso que D
1
≺ D
3
ou D
3
≺ D
1
, pois
D
1
e D
3
diferem em mais do que uma cadeia intermedi´aria. No entanto, D
1
e D
3
podem
ser transformadas, uma na outra, trocando-se a ordem em que as produ¸ c˜oes s˜ao aplicadas.
Cada troca pode substituir um passo de deriva¸ c˜ao por outro que o precede ou sucede. N´os
dizemos que duas deriva¸ c˜oes s˜ao similares se uma pode ser transformada na outra atrav´es de
mudan¸ cas da ordem de aplica¸ c˜ao das produ¸ coes. Similaridade ´e uma rela¸ c˜ao de equivalˆencia
entre deriva¸ c˜oes e ´arvores sint´aticas representam exatamente as classes de equivalˆencia desta
rela¸ c˜ao.
Por exemplo, as deriva¸ c˜oes D
1
, D
2
e D
3
s˜ao representadas pela mesma ´arvore sint´atica: a ´arvore
da Figura 17.1. Na verdade, a classe de equivalˆencia que cont´em todas as deriva¸ c˜oes similares
da cadeia (())() consiste das deriva¸ c˜oes D
1
, D
2
e D
3
acima e das sete deriva¸ c˜oes mostradas a
seguir:
D
4
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
(S)(S)
1
−→
G
((S))(S)
1
−→
G
(())(S)
1
−→
G
(())() ,
D
5
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
(S)(S)
1
−→
G
((S))(S)
1
−→
G
((S))()
1
−→
G
(())() ,
D
6
= S
1
−→
G
SS
1
−→
G
(S)S
1
−→
G
(S)(S)
1
−→
G
(S)()
1
−→
G
((S))()
1
−→
G
(())() ,
D
7
= S
1
−→
G
SS
1
−→
G
S(S)
1
−→
G
(S)(S)
1
−→
G
((S))(S)
1
−→
G
(())(S)
1
−→
G
(())() ,
D
8
= S
1
−→
G
SS
1
−→
G
S(S)
1
−→
G
(S)(S)
1
−→
G
((S))(S)
1
−→
G
((S))()
1
−→
G
(())() ,
D
9
= S
1
−→
G
SS
1
−→
G
S(S)
1
−→
G
(S)(S)
1
−→
G
(S)()
1
−→
G
((S))()
1
−→
G
(())() ,
108
D
10
= S
1
−→
G
SS
1
−→
G
S(S)
1
−→
G
S()
1
−→
G
(S)()
1
−→
G
((S))()
1
−→
G
(())() .
Note que
D
1
≺ D
2
, D
2
≺ D
3
, D
2
≺ D
4
, D
3
≺ D
5
, D
4
≺ D
5
, D
4
≺ D
7
,
D
5
≺ D
6
, D
6
≺ D
9
, D
7
≺ D
8
, D
8
≺ D
10
, D
9
≺ D
10
.
Todas as dez deriva¸ c˜oes acima s˜ao similares porque elas representam aplica¸ c˜oes das mesmas
regras nas mesmas posi¸ c˜oes das senten¸ cas, diferindo apenas na ordem relativa em que as regras
s˜ao aplicadas. As dez deriva¸ c˜oes acima s˜ao as ´ unicas deriva¸ c˜oes similares a qualquer uma delas.
Entretanto, existem outras deriva¸ c˜oes da cadeia (())() que n˜ao similares a nenhuma das dez
deriva¸ c˜oes acima — e portanto n˜ao podem ser representadas pela mesma ´arvore sint´atica! Por
exemplo,
S
1
−→
G
SS
1
−→
G
SSS
1
−→
G
S(S)S
1
−→
G
S((S))S
1
−→
G
S(())(S)
1
−→
G
S(())()
1
−→
G
(())() .
A ´arvore sint´atica da deriva¸ c˜ao acima est´a na Figura 17.2. Note que esta ´arvore ´e isom´orfica `a
´arvore na Figura 17.1.
( )
( )
( ) S
S S
S
S
S
ǫ
ǫ
Figura 17.2: Uma ´arvore sint´atica com o mesmo resultado da ´arvore da Figura 17.1.
H´a uma rela¸ c˜ao entre interessante entre ´arvores sint´aticas e deriva¸ c˜oes mais `a esquerda (resp.
mais `a direita). Cada classe de equivalˆencia da rela¸ c˜ao de similaridade de deriva¸ c˜oes cont´em
uma deriva¸ c˜ao “maximal” sob ≺; isto ´e, que n˜ao ´e precedida por nenhuma outra. Esta deriva¸ c˜ao
´e justamente a deriva¸c˜ao mais `a esquerda. Analogamente, h´a uma deriva¸ c˜ao que n˜ao precede
nenhuma outra, que ´e justamente a deriva¸c˜ao mais `a direita. Os dois lemas seguintes mostram
que todo resultado de uma ´arvore de deriva¸ c˜ao para uma GLC G ´e uma forma sentencial gerada
a partir de um n˜ao-terminal de G:
Lema 17.1. Seja G = (N, Σ, P, S) uma GLC. Se A ∈ N, w ∈ Σ

e A

−→
G
w, ent˜ ao existe uma
´arvore sint´atica com raiz A e resultado w.
109
Demonstra¸c˜ao. Usamos indu¸ c˜ao no n´ umero, n, de passos para derivar w a partir de A.
Base (n = 1):
Quando n = 1, temos que A
1
−→
G
w. Ent˜ao, a produ¸ c˜ao A → w deve pertencer a P. Logo, pela
defini¸ c˜ao de ´arvore sint´atica, a ´arvore com raiz rotulada A e um ou mais filhos rotulados por
w, da esquerda para direita, ´e uma ´arvore sint´atica. O resultado desta ´e w, o que demonstra
que nossa afirma¸ c˜ao ´e verdadeira para n = 1.
Hip´otese (n = k):
Suponha que, para n = k, onde k ´e um inteiro arbitr´ario (mas, fixo) e k ≥ 1, temos que se
A
n
−→
G
w ent˜ao existe uma ´arvore sint´atica para G cujo resultado ´e w.
Passo Indutivo (n = k + 1):
Suponha que A
k+1
−→
G
w. Ent˜ao, podemos escrever esta deriva¸ c˜ao como
A
k
−→
G
αBβ
1
−→
G
αγβ = w,
onde α, β, γ ∈ Σ

e (B → γ) ∈ P. Pela hip´otese de indu¸ c˜ao, podemos afirmar que existe
uma ´arvore sint´atica, T, cuja raiz possui r´otulo A e cujo resultado ´e αBβ. Note que B ´e
necessariamente um n´o folha de T. Pelo caso base, tamb´em podemos afirmar que existe uma
´arvore sint´atica, T

cuja raiz possui r´otulo B e o resultado ´e γ. Agora, se substituirmos, em
T, o seu n´o folha com r´otulo B pela ´arvore T

, obteremos uma nova ´arvore cujas folhas, lidas
da esquerda para a direita, formam a palavra αγβ = w. Como a raiz de T

possui r´otulo B e
a produ¸ c˜ao B → γ pertence a P, a nova ´arvore tamb´em ´e uma ´arvore sint´atica, o que conclui
nossa demonstra¸ c˜ao.
Lema 17.2. Seja G = (N, Σ, P, S) uma GLC. Se A ∈ N, w ∈ Σ

e existir uma ´ arvore sint´atica
com raiz A e resultado w, ent˜ ao A

−→
G
w.
Demonstra¸c˜ao. Usamos indu¸ c˜ao na altura, h, da ´arvore sint´atica. Note que a menor altura de
uma ´arvore sint´atica cujo resultado ´e uma cadeia de terminais ´e 1, por defini¸ c˜ao.
Base (h = 1):
Se a ´arvore possui altura h = 1, ent˜ao a raiz da ´arvore possui r´otulo A e seus filhos (os n´os
folhas) s˜ao rotulados por w, da esquerda para a direita. Pela defini¸ c˜ao de ´arvore sint´atica,
A → w deve pertencer a P. Logo, A
1
−→
G
w e, portanto, nossa afirma¸ c˜ao ´e v´alida para ´arvores
sint´aticas com altura 1.
Hip´otese (h ≤ k):
Suponha que, para h ≤ k, onde k ´e um inteiro arbitr´ario (mas, fixo) e k ≥ 1, temos que se
existir uma ´arvore sint´atica de altura h com raiz A e resultado w, ent˜ao A

−→
G
w.
110
Passo Indutivo (h = k + 1):
Suponha que a ´arvore sint´atica possua altura h = k + 1. Ent˜ao, considere a raiz, A, e seus m
filhos, X
1
, . . . , X
m
, onde m ≥ 1 e cada X
i
´e uma cadeia de terminais ou um n˜ao-terminal de
G, para todo 1 ≤ i ≤ m. Note que pelo menos um X
i
deve ser um n˜ao-terminal, pois h ≥ 2.
Note tamb´em que o resultado w pode ser escrito como w = w
1
w
m
, onde w
i
= X
i
se X
i
´e
uma cadeia de terminais ou w
i
´e igual ao resultado da sub´arvore sint´atica enraizada em X
i
se
X
i
´e um n˜ao-terminal. Neste ´ ultimo caso, a altura da ´arvore enraizada em X
i
deve ser menor
do que h. Logo, pela hip´otese de indu¸ c˜ao, X
i

−→
G
w
i
. Desta forma, temos que
A
1
−→
G
X
1
X
m

−→
G
w
1
w
m
= w
e, portanto, o resultado, w, pode ser derivado a partir do n˜ao-terminal A.
17.1 Exerc´ıcios
1. Considere a gram´atica
G = (¦S¦, ¦a, b¦, ¦S → aS [ aSbS [ ǫ¦, S) .
Essa gram´atica ´e amb´ıgua. Mostre em particular que a cadeia aab possui duas:
(a)
´
Arvores sint´aticas.
(b) Deriva¸ c˜oes mais `a esquerda.
(c) Deriva¸ c˜oes mais `a direita.
2. Suponha que G seja uma GLC sem quaisquer produ¸ c˜oes que tenha ǫ como lado direito.
Se w est´a em L(G), o comprimento de w ´e n, e w pode ser derivada em G com m passos
de deriva¸ c˜ao a partir do s´ımbolo inicial de G, mostre que w possui uma ´arvore sint´atica
com n + m n´os.
111
Cap´ıtulo 18
Ambiguidade e Gram´aticas Lineares `a Direita
18.1 Ambiguidade
Considere novamente a GLC do Exemplo 16.1:
G = (¦E¦, ¦+, , (, ), a¦, P, E),
onde P ´e o conjunto consistindo das regras E → E +E, E → E E, E → (E), e E → a. Esta
gram´atica admite duas deriva¸ c˜oes mais `a esquerda da senten¸ ca a + a a, a deriva¸ c˜ao descrita
no exemplo,
E
1
−→
G,e
E E
1
−→
G,e
E + E E
1
−→
G,e
a +E E
1
−→
G,e
a + a E
1
−→
G,e
a + a a,
e a deriva¸ c˜ao mais `a esquerda
E
1
−→
e
E + E
1
−→
G,e
a +E
1
−→
G,e
a +E E
1
−→
G,e
a + a E
1
−→
G,e
a + a a.
A GLC G tamb´em admite duas deriva¸ c˜oes mais `a direita da senten¸ ca a + a a. Quando uma
GLC admite mais de uma deriva¸ c˜ao mais `a esquerda ou mais `a direita de uma mesma senten¸ ca,
ent˜ao ela ´e dita ser amb´ıgua. De forma equivalente, dizemos que uma gram´atica ´e amb´ıgua
quando h´a uma cadeia que pode ser gerada por duas deriva¸ c˜oes que n˜ ao s˜ao similares — isto
´e, com duas ´arvores sint´aticas distintas.
Em alguns casos, n´os podemos modificar a gram´atica para gerar uma gram´atica equivalente e
n˜ao-amb´ıgua. Por exemplo, a GLC G acima pode ser modificada para gerar uma gram´atica
equivalente e n˜ao-amb´ıgua,
G

= (¦E, T, F¦, ¦+, , (, ), a¦, P

, E),
onde P

´e o conjunto consistindo das regras E → E+T, E → T, T → T F, T → F, F → (E),
e F → a.
112
Infelizmente, nem sempre ´e poss´ıvel modificar uma GLC para obter uma GLC equivalente e
n˜ao-amb´ıgua, pois h´a linguagens livres de contexto que n˜ao podem ser geradas por nenhuma
GLC n˜ao-amb´ıgua. Por exemplo,
L = ¦a
m
b
m
c
n
[ m, n ≥ 1¦ ∪ ¦a
m
b
n
c
n
[ m, n ≥ 1¦
´e uma linguagem sobre ¦a, b, c¦ gerada pela GLC (¦S, S
1
, S
2
, X, Y, A, C¦, ¦a, b, c¦, P, S), onde
P consiste das produ¸ c˜oes:
S → S
1
,
S → S
2
,
S
1
→ XC,
S
2
→ AY,
X → aXb,
X → ab,
Y → bY c,
Y → bc,
A → aA,
A → a,
C → cC,
C → c.
A gram´atica acima ´e amb´ıgua e n´os podemos mostrar que qualquer gram´atica para L ´e amb´ıgua
tamb´em.
Defini¸ c˜ao 18.1. Uma GLC G = (N, Σ, P, S) ´e amb´ıgua se existir uma palavra w ∈ L(G) que
possui duas deriva¸c˜oes mais `a esquerda distintas (ou duas deriva¸c˜oes mais ` a direita distintas).
Logo, uma gram´ atica ´e n˜ao-amb´ıgua se, para toda palavra w ∈ L(G), houver apenas uma
´ unica deriva¸c˜ao mais `a esquerda (e uma ´ unica deriva¸c˜ao mais `a direita). Uma linguagem livre
de contexto L ´e dita ser inerentemente amb´ıgua se toda GLC G tal que L = L(G) for uma
gram´ atica amb´ıgua.
Se ou n˜ao uma gram´atica ´e amb´ıgua afeta a complexidade dos algoritmos de an´alise sint´atica dos
compiladores, pois algoritmos para gram´aticas n˜ao-amb´ıguas s˜ao mais eficientes do que aque-
les para gram´aticas amb´ıguas. Por este motivo, gram´aticas amb´ıguas s˜ao extremamente inde-
sej´aveis em se tratando de compiladores, e as linguagens de programa¸ c˜ao usadas no seu dia-a-dia
foram desenvolvidas cuidadosamente como linguagens que n˜ ao s˜ao inerentemente amb´ıguas.
18.2 Gram´aticas lineares `a direita
As linguagens regulares podem ser caracterizadas por um tipo muito especial de gram´atica
livre de contexto: as gram´aticas lineares `a direita. A implica¸ c˜ao imediata deste fato ´e que toda
113
linguagem regular ´e uma linguagem livre de contexto. Lembre-se de que nem toda linguagem
livre de contexto ´e uma linguagem regular.
Defini¸ c˜ao 18.2. Uma GLC G = (N, Σ, P.S) ´e linear `a direita se, e somente se, todas as
produ¸ c˜oes em P forem da forma
A → aB,
A → a,
A → ǫ,
onde A, B ∈ N, e a ∈ Σ.
O seguinte lema estabelece que toda linguagem regular pode ser gerada por uma gram´atica
linear `a direita, o que implica que toda linguagem regular ´e, na verdade, uma linguagem livre
de contexto:
Lema 18.1. Se L ´e uma linguagem regular ent˜ ao L ´e gerada por alguma gram´ atica linear ` a
direita.
Demonstra¸c˜ao. Seja L = L(M) para algum AFD M = (Q, Σ, δ, s, F). N´os constru´ımos uma
gram´atica linear `a direita G como segue. Seja N = Q, S = s, e seja P definido da seguinte
forma:
P = ¦p → aq [ q = δ(p, a), p, q ∈ Q, a ∈ Σ¦ ∪ ¦p → ǫ [ p ∈ F¦.
Agora, n´os mostramos por indu¸ c˜ao no comprimento de w ∈ Σ

, [w[, que p

−→
G
wq ⇐⇒ q =
ˆ
δ(p, w):
Base ([w[ = 0)
Se [w[ = 0 ent˜ao w = ǫ. Se p

−→
G
wq, para algum p, q ∈ Q, ent˜ao p

−→
G
q. Mas, por defini¸ c˜ao,
toda produ¸ c˜ao em P, com p do lado esquerdo, ´e da forma p → ar ou p → ǫ, onde a ∈ Σ e
r ∈ Q. Logo, p

−→
G
q implica em p = q. Como p =
ˆ
δ(p, ǫ) =
ˆ
δ(p, w) e p = q, n´os temos que
p

−→
G
wq implica q =
ˆ
δ(p, w). Por outro lado, se q =
ˆ
δ(p, w) =
ˆ
δ(p, ǫ) ent˜ao q = p. Logo,
temos que mostrar que p

−→
G
wp. Mas, p

−→
G
wp ´e igual a p

−→
G
p, para w = ǫ, e p

−→
G
p pela
defini¸ c˜ao de deriva¸ c˜ao.
Hip´otese ([w[ = k)
Assuma que nossa afirma¸ c˜ao seja verdadeira para toda palavra w ∈ Σ
k
, onde k ´e um inteiro
n˜ao-negativo arbitr´ario (mas, fixo).
Passo Indutivo ([w[ = k + 1)
Note que, se w ∈ Σ
k+1
, ent˜ao podemos escrever w = xa, onde x ∈ Σ
k
e a ∈ Σ.
114
Primeiro, vamos provar que se p

−→
G
wq, para algum p, q ∈ Q, ent˜ao q =
ˆ
δ(p, w). Por
defini¸ c˜ao, qualquer produ¸ c˜ao de P ´e da forma A → aB ou A → ǫ. Isto implica que qualquer
forma sentencial (que n˜ao ´e uma senten¸ ca) de G possui um ´ unico n˜ao-terminal e este n˜ao-
terminal ´e o s´ımbolo mais `a direita da forma sentencial. Logo, se p

−→
G
wq ent˜ao n´os podemos
escrever a deriva¸ c˜ao p

−→
G
wq como p

−→
G
xr
1
−→
G
xaq, onde r, q ∈ Q, e r → aq ´e uma
produ¸ c˜ao em P. Como [x[ = k, pela hip´otese de indu¸ c˜ao, temos que se p

−→
G
xr ent˜ao
ˆ
δ(p, x) = r. Pela defini¸ c˜ao de P, temos que se (r → aq) ∈ P ent˜ao δ(r, a) = q. Logo,
ˆ
δ(p, w) =
ˆ
δ(p, xa) = δ(
ˆ
δ(p, x), a) = δ(r, a) = q.
Agora, vamos provar que se q =
ˆ
δ(p, w), para algum p, q ∈ Q, ent˜ao p

−→
G
q. De fato, se
ˆ
δ(p, w) = q e w = xa, ent˜ao existe r ∈ Q tal que
ˆ
δ(p, w) =
ˆ
δ(p, xa) = δ(
ˆ
δ(p, x), a) = δ(r, a) = q.
Pela hip´otese de indu¸ c˜ao, temos que se
ˆ
δ(p, x) = r ent˜ao p

−→
G
xr. Pela defini¸ c˜ao de P, temos
que se δ(r, a) = q ent˜ao (r → aq) ∈ P. Logo, p

−→
G
xr
1
−→
G
xaq, o que implica que p

−→
G
wq.
Como conseq¨ uˆencia imediata da prova acima, temos que, para toda palavra w ∈ Σ

,
w ∈ L(M) ⇐⇒
ˆ
δ(s, w) ∈ F (defini¸ c˜ao de aceita¸ c˜ao)
⇐⇒ s

−→
G
wf, para algum f ∈ F (pela indu¸ c˜ao acima)
=⇒ s

−→
G
w, (pois, f ∈ F ⇒ (f → ǫ) ∈ P)
⇐⇒ w ∈ L(G).
Por outro lado, se s

−→
G
w ent˜ao n´os consideramos dois casos: 1) w = ǫ e 2) w ,= ǫ. Considere
o caso 1). Pela defini¸ c˜ao de P, se w = ǫ e s

−→
G
w ent˜ao (s → ǫ) ∈ P, o que implica que s ∈ F
e, portanto,
ˆ
δ(s, w) =
ˆ
δ(s, ǫ) = s ∈ F e w ∈ L(M). Agora, considere o caso 2). N´os temos que
w = xa, para x = Σ

e a ∈ Σ, e a deriva¸ c˜ao s

−→
G
w pode ser escrita como s

−→
G
xaf
1
−→
G
xa,
onde (f → ǫ) ∈ P, pois as produ¸ c˜oes de P s˜ao todas da forma A → aB e A → ǫ. Logo, f ∈ F
e, pela indu¸ c˜ao acima, temos que
ˆ
δ(s, xa) =
ˆ
δ(s, w) = f, o que implica que w ∈ L(M).
Como estabelecido no seguinte lema, a linguagem gerada por qualquer gram´atica linear `a direita
´e regular. Ent˜ao, autˆomatos finitos determin´ısticos e n˜ ao-determin´ısticos, express˜oes regulares
e gram´aticas lineares `a direita s˜ao formas equivalentes de representa¸ c˜ao de linguagens regulares.
Lema 18.2. Se G = (N, Σ, P, S) ´e uma gram´ atica linear `a direita ent˜ ao L(G) ´e regular.
A prova do lema acima tamb´em pode ser construtiva. Primeiro, constru´ımos uma gram´atica
linear `a direita, G

= (N

, Σ, P

, S), a partir de G, atrav´es da inclus˜ao de um novo n˜ao-terminal
E em N, isto ´e, N

= N ∪ ¦E¦, e da substitui¸ c˜ao de toda produ¸ c˜ao de P da forma A → a,
onde a ∈ Σ, pela produ¸ c˜ao A → aE, e pela inclus˜ao da regra E → ǫ em P.
´
E f´acil mostrar que
L(G) = L(G

). O pr´oximo passo ´e construir um AFND M = (Q
M
, Σ, ∆
M
, S
M
, F
M
) como segue:
115
Q
M
= N

, S
M
= ¦S¦, F
M
= ¦A ∈ N

[ A → ǫ¦, e ∆
M
(A, a) = ¦B ∈ N

[ (A → aB) ∈ P

¦,
para todo A ∈ N

e para todo a ∈ Σ.
Para mostrar que L(G) = L(M), n´os podemos usar indu¸ c˜ao no comprimento [w[ de w ∈ Σ

para mostrar que a seguinte afirma¸ c˜ao ´e verdadeira:
A

−→
G
wB ⇐⇒ B ∈
ˆ
∆(A, w).
O fato L(G) = L(M) ´e uma conseq¨ uˆencia imediata da veracidade da afirma¸ c˜ao acima. A
indu¸ c˜ao acima e uma prova do lema usando a indu¸ c˜ao s˜ao deixadas como exerc´ıcio para o
aluno na lista de exerc´ıcios 9.
18.3 Exerc´ıcios
1. Considere a gram´atica
G = (¦S, A, B¦, ¦0, 1¦, P, S)
tal que P consiste das produ¸ c˜oes
S → A1B, A → OA [ ǫ, B → OB [ 1B [ ǫ .
Ent˜ao, para cada uma das cadeias abaixo, forne¸ ca uma deriva¸ c˜ao mais `a esquerda e uma
deriva¸ c˜ao mais `a direita, e desenhe a ´arvore sint´atica que representa as deriva¸ c˜oes que
vocˆe encontrou: 00101, 1001 e 00011.
2. Encontre uma gram´atica n˜ao-amb´ıgua para a linguagem do exerc´ıcio anterior.
3. A gram´atica a seguir gera express˜oes pr´e-fixadas com operandos x e y e operadores bin´arios
+, − e ∗:
G = (¦E¦, ¦x, y, +, −, ∗¦, ¦E → +EE [ −EE [ ∗EE [ x [ y¦, E) .
Ent˜ao:
(a) Encontre as deriva¸ c˜oes mais `a esquerda e mais `a direita, e uma ´arvore sint´atica para
a cadeia +∗ −xyxy.
(b) Prove que G gram´atica ´e n˜ao-amb´ıgua.
4. Considere a gram´atica
G = (N, Σ, P, S)
tal que
N = ¦S¦, Σ = ¦a, b¦, P = ¦S → aSb [ aSa [ bSa [ bSb [ ǫ¦ .
Ent˜ao, mostre que L(G) ´e regular.
5. Seja G = (¦S, A, B¦, ¦a¦, P, S) uma gram´atica livre de contexto tal que P consiste das
produ¸ c˜oes S → A, S → B, A → aaA, A → ǫ, B → aaaB e B → ǫ. Mostre que G ´e
amb´ıgua.
116
Cap´ıtulo 19
Autˆomatos de Pilha N˜ao-Determin´ısticos
19.1 Considera¸c˜oes iniciais
Um autˆomato de pilha n˜ ao-determin´ıstico (APND) ´e semelhante a um autˆomato finito n˜ao-
determin´ıstico, exceto pelo fato de um APND possuir uma pilha que pode ser usada para
armazenar uma quantidade ilimitada de informa¸ c˜ao.

B
C
B
A Q
a
1
a
2
a
3
a
4
a
5
a
6
a
7
a
8
a
n
Fita de entrada
Pilha
Controle finito
push/pop
da esquerda para a direita
A leitura da entrada ´e feita considerando-se um s´ımbolo da palavra de entrada por vez e ´e
realizada da esquerda para a direita. Em cada passo de uma computa¸ c˜ao, o APND retira o
s´ımbolo do topo da pilha e, com base no pr´oximo s´ımbolo da entrada a ser lido e no estado
atual, o APND pode colocar uma seq¨ uˆencia de s´ımbolos na pilha, mover a posi¸ c˜ao de leitura um
s´ımbolo `a direita e entrar em um novo estado. Tudo isso de acordo com as regras de transi¸ c˜ao
do autˆomato. Pode haver tamb´em transi¸ c˜oes vazias nas quais o APND retira o s´ımbolo do
topo da pilha e pode colocar uma seq¨ uˆencia de s´ımbolos na pilha sem ler nenhum s´ımbolo da
117
palavra de entrada.
19.2 Defini¸c˜ao formal
Defini¸ c˜ao 19.1. Formalmente, um autˆomato de pilha n˜ao-determin´ıstico (APND) ´e uma
s´etupla
P = (Q, Σ, Γ, δ, s, ⊥, F),
onde Q ´e um conjunto finito e n˜ ao-vazio de estados (os estados), Σ ´e um alfabeto (o alfabeto
de entrada), Γ ´e um alfabeto tamb´em (o alfabeto da pilha), δ ⊆ (Q(Σ∪¦ǫ¦) Γ) (QΓ

)
´e uma rela¸c˜ao (a rela¸ c˜ao de transi¸ c˜ao), s ∈ Q ´e o estado inicial, ⊥ ´e o s´ımbolo inicial da pilha
e F ⊆ Q ´e o conjunto de estados finais ou de aceita¸ c˜ao.
Se
((p, a, A), (q, B
1
B
2
B
k
)) ∈ δ
ent˜ao, intuitivamente, sempre que P estiver no estado p lendo o s´ımbolo de entrada a e A for o
s´ımbolo no topo da pilha, o autˆomato pode retirar A da pilha, colocar a seq¨ uˆencia B
1
B
2
B
k
na pilha (B
k
primeiro e B
1
por ´ ultimo), mover a posi¸ c˜ao de leitura um s´ımbolo `a direita e entrar
no estado q.
Se
((p, ǫ, A), (q, B
1
B
2
B
k
)) ∈ δ
ent˜ao, intuitivamente, sempre que P estiver no estado p e A for o s´ımbolo no topo da pilha
(independente do pr´oximo s´ımbolo a ser lido, se algum), o autˆomato pode retirar A da pilha e
colocar a seq¨ uˆencia B
1
B
2
B
k
na pilha (B
k
primeiro e B
1
por ´ ultimo), sem que a posi¸ c˜ao de
leitura dos s´ımbolos de entrada seja alterada.
Lembre-se de que P ´e n˜ao-determin´ıstico, o que implica que podem existir v´arias transi¸ c˜oes, a
partir de um mesmo estado, para o mesmo s´ımbolo de entrada e o mesmo s´ımbolo no topo da
pilha, assim como v´arias transi¸ c˜oes vazias. De forma an´aloga, pode ser que n˜ao exista nenhuma
transi¸ c˜ao, a partir de um dado estado, para um dado s´ımbolo de entrada e um dado s´ımbolo
no topo da pilha.
Exemplo 19.1. Um exemplo de APND ´e
P
1
= (¦q, r¦, ¦a, b¦, ¦A, Z¦, q, δ, Z, ∅),
onde δ consiste dos pares ordenados
((q, a, Z), (q, A)), ((q, a, A), (q, AA)), ((q, b, A), (r, ǫ)) e ((r, b, A), (r, ǫ)).
N´os tamb´em representamos um APND por um diagrama de transi¸c˜ao de estados, que ´e bas-
tante semelhante aquele usado para representar autˆomatos finitos. Por exemplo, o diagrama de
transi¸c˜ao de estados de P
1
´e ilustrado na Figura 19.1.
118
19.3 Configura¸c˜oes
Uma configura¸c˜ao de um autˆomato de pilha P ´e um elemento de Q Σ

Γ

descrevendo o
estado atual, a parte da entrada que ainda n˜ao foi lida, e o conte´ udo atual da pilha. Uma
configura¸ c˜ao fornece a informa¸ c˜ao completa sobre o estado global de P em qualquer instante
da computa¸ c˜ao.
r
(b, A)/ǫ (a, A)/AA
(a, Z)/A
(b, A)/ǫ
q
Figura 19.1: Diagrama de transi¸ c˜ao de estados do APND P
1
do Exemplo 19.1.
Por exemplo, a configura¸ c˜ao
(p, baaabba, ABCB ⊥)
poderia descrever a situa¸ c˜ao

a b a b b a a a b b a
A
B
C
B
p
A parte da entrada `a esquerda do pr´oximo s´ımbolo a ser lido n˜ ao precisa ser representada na
configura¸ c˜ao, pois ela n˜ao afeta a computa¸ c˜ao a ser feita pelo autˆomato de pilha daqui pra
frente.
A configura¸c˜ao inicial para a entrada x ´e (s, x, ⊥). Isto ´e, o autˆomato sempre come¸ ca uma
computa¸ c˜ao em seu estado inicial s com a posi¸ c˜ao de leitura como sendo o primeiro s´ımbolo de
x e a pilha cont´em apenas o s´ımbolo inicial ⊥.
A rela¸c˜ao pr´ oxima configura¸c˜ao
1
−→
P
descreve como o autˆomato pode se mover de uma confi-
gura¸ c˜ao para outra em um ´ unico passo da computa¸ c˜ao. Formalmente, n´os definimos
1
−→
P
como
119
descrito a seguir.
Se
((p, a, A), (q, γ)) ∈ δ,
ent˜ao, para quaisquer y ∈ Σ

e β ∈ Γ

,
(p, ay, Aβ)
1
−→
P
(q, y, γβ), (19.1)
e se
((p, ǫ, A), (q, γ)) ∈ δ,
ent˜ao, para quaisquer y ∈ Σ

e β ∈ Γ

,
(p, y, Aβ)
1
−→
P
(q, y, γβ). (19.2)
Em (19.1), a cadeia ay muda para y, indicando que o s´ımbolo a foi consumido durante a
computa¸ c˜ao; a cadeia Aβ muda para γβ, indicando que o s´ımbolo A foi retirado da pilha e a
seq¨ uˆencia γ foi inserida na pilha; e p muda para q, indicando a mudan¸ ca de estado. Em (19.2),
temos o mesmo que em (19.1), exceto que a cadeia y n˜ao muda, indicando que nenhum s´ımbolo
da entrada foi consumido. Duas configura¸ c˜oes est˜ao relacionadas por
1
−→
P
se, e somente se, uma
das regras (19.1) e (19.2) se aplica.
N´os podemos descrever, formalmente, a computa¸ c˜ao de um autˆomato de pilha atrav´es de todas
as seq¨ uˆencias distintas de configura¸ c˜oes poss´ıveis a partir da configura¸ c˜ao inicial. Por exemplo,
considere a cadeia de entrada aabbb e o APND P
1
do Exemplo 19.1. A rea¸ c˜ao de P a aabbb ´e
descrita na tabela a seguir:
configura¸ c˜ao transi¸ c˜ao aplicada
(q, aabbb, Z) ((q, a, Z), (q, A))
→ (q, abbb, A) ((q, a, A), (q, AA))
→ (q, bbb, AA) ((q, b, A), (r, ǫ))
→ (r, bb, A) ((r, b, A), (r, ǫ))
→ (r, b, ǫ)
Note que h´a apenas uma seq¨ uˆencia (finita) de configura¸ c˜oes na computa¸ c˜ao de aabb por P
1
.
Em geral, autˆomatos de pilha admitem v´arias seq¨ uˆencias distintas de configura¸ c˜oes para uma
mesma entrada, e o n´ umero de configura¸ c˜oes em uma seq¨ uˆencia pode ser infinito. A seq¨ uˆencia
acima ´e finita porque n˜ao h´a nenhuma transi¸ c˜ao em δ que possa se relacionar com (r, b, ǫ)
atrav´es de
1
−→
P
1
.
120
Note tamb´em que a rela¸ c˜ao δ ´e definida em (Q (Σ ∪ ¦ǫ¦) Γ) (Q Γ

). Mas, nenhuma
tripla da forma (p, a, ǫ), para quaisquer p ∈ Q e a ∈, pertence a (Q (Σ ∪ ¦ǫ¦) Γ), pois ǫ
n˜ao ´e uma letra de Γ. Consequentemente, uma configura¸ c˜ao da forma (p, x, ǫ), para quaisquer
p ∈ Q e x ∈ Σ

, jamais poder´a pertencer ao dom´ınio de
1
−→
P
, para qualquer APND P. Isto
significa que, se a pilha se tornar vazia em uma seq¨ uˆencia de configura¸ c˜oes da computa¸ c˜ao de
um autˆomato de pilha, essa seq¨ uˆencia termina e a ´ ultima configura¸ c˜ao ´e justamente aquela cuja
pilha ´e vazia.
N´os definimos as rela¸ c˜oes
n
−→
P
e

−→
P
como segue:
C
0
−→
P
D ⇐⇒ C = D,
C
n+1
−→
P
D ⇐⇒ ∃E tal que C
n
−→
P
E e E
1
−→
P
D,
C

−→
P
D ⇐⇒ ∃n ∈ Z, n ≥ 0 tal que C
n
−→
P
D.
Por exemplo,
(q, aabbb, Z)
4
−→
P
1
(r, b, ǫ) e (q, aabbb, Z)

−→
P
1
(r, b, ǫ),
onde P
1
´e o autˆomato de pilha do Exemplo 19.1.
19.4 Aceita¸c˜ao
H´a duas formas de aceita¸ c˜ao para autˆomatos de pilha: por pilha vazia e por estado final. Como
veremos depois, as duas formas s˜ao equivalentes; isto ´e, os autˆomatos de pilha que aceitam
palavras por pilha vazia reconhecem exatamante a mesma classe de linguagens reconhecida
pelos autˆomatos de pilha que aceitam palavras por estado final.
Informalmente, um autˆomato de pilha aceita uma palavra x por pilha vazia se ele retira o
´ ultimo elemento da pilha, e n˜ao insere nenhum outro elemento nela, ap´os ler todos os s´ımbolos
da palavra de entrada, a partir da configura¸ c˜ao inicial tendo x como entrada. Formalmente,
dizemos que P aceita x por pilha vazia se (s, x, ⊥)
1
−→
P
(q, ǫ, ǫ), para qualquer estado q ∈ Q.
Informalmente, um autˆomato de pilha aceita uma palavra x por estado final se ele entra em
uma estado de F depois de ler todos os s´ımbolos de x, a partir da configura¸ c˜ao inicial tendo x
como entrada. Formalmente, dizemos que P aceita x por estado final se (s, x, ⊥)
1
−→
P
(q, ǫ, γ),
para algum q ∈ F e γ ∈ Γ

.
´
E importante ressaltar que, em ambas as formas de aceita¸ c˜ao, a palavra de entrada foi comple-
tamente lida pelo autˆomato.
121
Como exemplo, considere o APND P
1
do Exemplo 19.1. A palavra aabb ´e aceita por pilha vazia
por P
1
, pois
(q, aabb, Z)
1
−→
P
1
(q, abb, A)
1
−→
P
1
(q, bb, AA)
1
−→
P
1
(r, b, A)
1
−→
P
1
(r, ǫ, ǫ).
Defini¸ c˜ao 19.2. Seja
P = (Q, Σ, Γ, δ, s, ⊥, F)
um autˆomato de pilha n˜ ao-determin´ıstico. Ent˜ao, n´ os definimos L(P), a linguagem aceita pelo
APND P por estado final, e N(P), a linguagem aceita pelo APND P por pilha vazia, como
sendo
L(P) = ¦x ∈ Σ

[ (s, x, ⊥)

−→
P
(q, ǫ, γ), para algum q ∈ F, γ ∈ Γ

¦
e
N(P) = ¦x ∈ Σ

[ (s, x, ⊥)

−→
P
(q, ǫ, ǫ), para algum q ∈ Q¦,
respectivamente.
Exemplo 19.2. Considere o APND do Exemplo 19.1. A linguagem aceita por P
1
por estado
final, L(P
1
), ´e vazia, enquanto a linguagem aceita por P
1
por pilha vazia, N(P
1
) ´e justamente
a linguagem
N(P
1
) = ¦a
n
b
n
[ n ∈ Z, n ≥ 1¦.
19.5 Exemplos
Exemplo 19.3. Considere a linguagem
L
2
= ¦ww
r
[ w ∈ ¦0, 1¦

¦.
O APND P
2
abaixo ´e tal que L(P
2
) = ∅ e N(P
2
) = L
2
:
P
2
= (¦q, r¦, ¦0, 1¦, ¦Z, A, B¦, δ, q, Z, ∅),
onde
((q, 0, Z), (q, AZ)), ((q, 1, Z), (q, BZ)), ((q, 0, A), (q, AA)), ((q, 0, A), (r, ǫ)),
((q, 1, B), (q, BB)), ((q, 1, B), (r, ǫ)), ((q, 0, B), (q, AB)), ((q, 1, A), (q, BA)),
((r, 0, A), (r, ǫ)), ((r, 1, B), (r, ǫ)), ((q, ǫ, Z), (q, ǫ)) e ((r, ǫ, Z), (r, ǫ)).
122
Exemplo 19.4. Considere a linguagem
L
3
= ¦a
i
b
j
c
k
[ i, j, k ∈ Z, i, j, k ≥ 0 e i = j ou i = k¦.
O APND P
3
abaixo ´e tal que L(P
3
) = L
3
e N(P
3
) = ∅:
P
3
= (¦q
1
, q
2
, q
3
, q
4
, q
5
, q
6
, q
7
, q
8
¦, ¦a, b, c¦, ¦A, Z¦, δ, q
1
, Z, ¦q
4
, q
8
¦),
onde
((q
1
, a, Z), (q
1
, AZ)), ((q
1
, a, A), (q
1
, AA)), ((q
1
, ǫ, Z), (q
2
, Z)), ((q
1
, ǫ, A), (q
2
, A)),
((q
2
, b, A), (q
2
, ǫ)), ((q
2
, ǫ, Z), (q
3
, Z)), ((q
3
, c, Z), (q
3
, Z)),
((q
1
, ǫ, Z), (q
4
, Z)), ((q
1
, ǫ, A), (q
4
, A)), ((q
4
, b, A), (q
4
, A)), ((q
4
, b, Z), (q
4
, Z)),
((q
4
, ǫ, Z), (q
5
, Z)), ((q
4
, ǫ, A), (q
5
, A)), ((q
5
, c, A), (q
5
, ǫ)), ((q
5
, ǫ, Z), (q
5
, Z))
e
((q
7
, ǫ, Z), (q
8
, Z)).
19.6 Exerc´ıcios
1. Considere a linguagem livre de contexto
L
1
= ¦ww
r
[ w ∈ ¦a, b¦

¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
2. Considere a linguagem livre de contexto
L
2
= ¦a
m
b
n
[ m, n ∈ Z, 1 ≤ m ≤ n ≤ 3m¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
3. Considere a linguagem livre de contexto
L
3
= ¦a
n
b
n
[ n ≥ 1¦ ∪ ¦a
2n
b
n
[ n ≥ 1¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
4. Considere a linguagem livre de contexto
L
4
= ¦a
2m
b
n
a
2m
b
p
[ m, n, p ∈ Z, m, n, p ≥ 1¦ ∪ ¦a
m
b
3n
a
p
b
3n
[ m, n, p ∈ Z, m, n, p ≥ 1¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
123
5. Considere a linguagem livre de contexto
L
5
= ¦xcy [ [x[ = [y[, x, y ∈ ¦a, b¦

¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
6. Considere a linguagem livre de contexto
L
6
= ¦xcy [ x ,= y
r
, x, y ∈ ¦a, b¦

¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
7. Considere a linguagem livre de contexto
L
7
= ¦xcy [ x ,= y, x, y ∈ ¦a, b¦

¦ .
Ent˜ao, forne¸ ca um APND que aceite a linguagem acima por estado final ou pilha vazia
ou ambos.
124
Cap´ıtulo 20
Estado Final versus Pilha Vazia
20.1 Considera¸c˜oes iniciais
Seja
P = (Q, Σ, Γ, δ, s, ⊥, F)
um APND qualquer que aceita cadeias por estado final ou pilha vazia. N´os queremos mostrar
que a aceita¸ c˜ao por estado final e por pilha vazia s˜ao equivalentes. Para tal, construiremos dois
autˆomatos de pilha, P

e P
′′
, tais que P

e P
′′
aceitam apenas por pilha vazia e estado final,
respectivamente, e a linguagem aceita por pilha vazia pelo autˆomato P

(resp. P
′′
) ´e igual `a
linguagem aceita por estado final (resp. pilha vazia) pelo autˆ omato P; isto ´e, P

e P
′′
s˜ao tais
que
N(P

) = L(P), L(P

) =, N(P
′′
) = ∅ e L(P
′′
) = N(P) .
20.2 Simula¸c˜ao de aceita¸c˜ao por pilha vazia
Seja
P

= (Q∪ ¦u, t¦, Σ, Γ ∪ ¦⋊⋉¦, δ

, u, ⋊⋉, ∅),
onde u, t ,∈ Q, ⋊⋉,∈ Γ e δ

cont´em todas as transi¸ c˜oes de δ t˜ao bem quanto as seguintes transi¸ c˜oes:
((u, ǫ, ⋊⋉), (s, ⊥⋊⋉)), (20.1)
((q, ǫ, A), (t, A)), (20.2)
para todo q ∈ F e A ∈ (Γ ∪ ¦⋊⋉¦), e
((t, ǫ, A), (t, ǫ)), (20.3)
para todo A ∈ (Γ ∪ ¦⋊⋉¦).
125
O autˆomato P

possui um novo estado inicial u, um novo s´ımbolo inicial da pilha ⋊⋉, e um ´ unico
estado final t. No reconhecimento de qualquer cadeia, o primeiro passo deve sempre utilizar
a transi¸ c˜ao (20.1), que coloca o s´ımbolo inicial da pilha de P, ⊥, acima de ⋊⋉ e da´ı entra no
estado inicial de P, s. Da´ı em diante, P

pode fazer a mesma computa¸ c˜ao realizada por P na
mesma entrada, pois P

cont´em as todas as transi¸ c˜oes em δ. No entanto, em qualquer instante,
se P

est´a em um estado final de P (mas, n˜ao de P

), P

pode usar a transi¸ c˜ao (20.2) para
mudar para o estado t sem consumir nenhum s´ımbolo da entrada nem alterar o conte´ udo da
pilha. Uma vez que o estado atual seja t, P

pode apenas “esvaziar” a pilha completamente e
nada mais. Al´em disso, esta ´e a ´ unica forma de P

esvaziar a pilha, pois ⋊⋉ n˜ao ´e removido da
pilha, a menos que o estado atual seja t.
Agora, vamos mostrar que N(P

) = L(P).
Se P aceita x por estado final ent˜ao x ∈ L(P). Ent˜ao,
(s, x, ⊥)
n
−→
P
(q, ǫ, γ),
para algum inteiro n, com n ≥ 0, e algum q ∈ F. Logo, temos que
(u, x, ⋊⋉)
1
−→
P

(s, x, ⊥⋊⋉)
n
−→
P

(q, ǫ, γ ⋊⋉)
1
−→
P

(t, ǫ, γ ⋊⋉)

−→
P

(t, ǫ, ǫ).
Logo, x ∈ N(P

) e, portanto, L(P) ⊆ N(P

).
Se P

aceita x ent˜ao x ∈ N(P

), pois M(P

) = ∅, j´a que P

n˜ao possui nenhum estado final.
Logo,
(u, x, ⋊⋉)
1
−→
P

(s, x, ⊥⋊⋉)
n
−→
P

(q, y, γ ⋊⋉)
1
−→
P

(t, y, γ ⋊⋉)

−→
P

(t, ǫ, ǫ)
para algum q ∈ F. Mas, como P

n˜ao pode ler nenhum s´ımbolo de entrada ap´os atingir o
estado t, a subcadeia y acima deve ser vazia. Consequentemente, (s, x, ⊥)
n
−→
P
(q, ǫ, γ) e n´os
temos que
(u, x, ⋊⋉)
1
−→
P

(s, x, ⊥⋊⋉)
n
−→
P

(q, ǫ, γ ⋊⋉)
1
−→
P

(t, ǫ, γ ⋊⋉)

−→
P

(t, ǫ, ǫ)
e, conseq¨ uentemente, x ∈ L(P), o que implica que N(P

) ⊆ L(P). Logo, L(P

) = M(P), e n´os
podemos simular a aceita¸ c˜ao por estado final de P usando um APND que aceita apenas por
pilha vazia.
20.3 Simula¸c˜ao de aceita¸c˜ao por estado final
Seja
P
′′
= (Q∪ ¦u, t¦, Σ, Γ ∪ ¦⋊⋉¦, δ
′′
, u, ⋊⋉, ¦t¦),
onde u, t ,∈ Q, ⋊⋉,∈ Γ e δ
′′
cont´em todas as transi¸ c˜oes de δ t˜ao bem quanto as seguintes transi¸ c˜oes:
((u, ǫ, ⋊⋉), (s, ⊥⋊⋉)), (20.4)
((q, ǫ, ⋊⋉), (t, ⋊⋉)), (20.5)
126
para todo q ∈ Q.
O autˆomato P
′′
possui um novo estado inicial u, um novo s´ımbolo inicial da pilha ⋊⋉, e um ´ unico
estado final t. No reconhecimento de qualquer cadeia, o primeiro passo deve sempre utilizar
a transi¸ c˜ao (20.4), que coloca o s´ımbolo inicial da pilha de P, ⊥, acima de ⋊⋉ e da´ı entra no
estado inicial de P, s. Da´ı em diante, P
′′
pode fazer a mesma computa¸ c˜ao realizada por P na
mesma entrada, pois P
′′
cont´em as todas as transi¸ c˜oes em δ. No entanto, em qualquer instante,
se o estado atual ´e um estado de P e a pilha cont´em apenas o s´ımbolo ⋊⋉, ent˜ao P
′′
pode usar
a transi¸ c˜ao (20.5) para mudar para o estado t sem consumir nenhum s´ımbolo da entrada nem
alterar o conte´ udo da pilha. Uma vez que o estado atual seja t, a computa¸ c˜ao termina, pois
n˜ao h´a transi¸ c˜oes de P
′′
saindo de t. Note, no entanto, que o s´ımbolo ⋊⋉ n˜ao ´e removido da
pilha em nenhum momento.
Agora, vamos mostrar que L(P
′′
) = N(P).
Se P aceita x por pilha vazia, isto ´e, se x ∈ N(P), ent˜ao
(s, x, ⊥)
n
−→
P
(q, ǫ, ǫ),
para algum inteiro n, com n ≥ 0, e algum q ∈ Q. Logo, temos que
(u, x, ⋊⋉)
1
−→
P
′′
(s, x, ⊥⋊⋉)
n
−→
P
′′
(q, ǫ, ⋊⋉)
1
−→
P
′′
(t, ǫ, ⋊⋉).
Logo, x ∈ L(P
′′
) e, portanto, N(P) ⊆ L(P
′′
).
Se x ´e aceita por P
′′
ent˜ao x ∈ L(P
′′
), pois a pilha de P
′′
nunca se esvazia. Logo, temos que
(u, x, ⋊⋉)
1
−→
P
′′
(s, x, ⊥⋊⋉)
n
−→
P
′′
(q, y, ⋊⋉)
1
−→
P
′′
(t, y, ⋊⋉)
para algum q ∈ Q. Mas, como P
′′
n˜ao pode ler nenhum s´ımbolo de entrada ap´os atingir o
estado t, a subcadeia y acima deve ser vazia. Consequentemente, (s, x, ⊥)
n
−→
P
(q, ǫ, ǫ) e n´os
temos que
(u, x, ⋊⋉)
1
−→
P
′′
(s, x, ⊥⋊⋉)
n
−→
P
′′
(q, ǫ, ⋊⋉)
1
−→
P
′′
(t, ǫ, ⋊⋉)
e, portanto, x ∈ N(P), o que implica que L(P
′′
) ⊆ N(P). Logo, L(P
′′
) = N(P), e n´os podemos
simular a aceita¸ c˜ao por pilha vazia de P usando um APND que aceita apenas por estado final.
20.4 Exerc´ıcios
1. Dado um APND P qualquer, mostre que h´a um APND P

e um APND P
′′
tais que
L(P

) = N(P

) = L(P) e L(P
′′
) = N(P
′′
) = N(P).
127
Cap´ıtulo 21
APND’s e GLC’s
Neste cap´ıtulo, n´os veremos que APND’s e GLC’s s˜ao equivalentes em poder expressivo: a
classe das linguagens aceitas pelos APND’s ´e exatamente a classe das linguagens geradas pelas
GLC’s, as linguagens livres de contexto.
21.1 De uma GLC para um APND
Seja G = (N, Σ, P, S) uma gram´atica livre de contexto qualquer. N´os queremos definir um
APND D tal que N(D) = L(G). A constru¸ c˜ao que usaremos aqui sup˜oe que todas as produ¸ c˜ oes
de G s˜ao da forma
A → cB
1
B
2
B
k
,
onde c ∈ (Σ ∪ ǫ) e k ≥ 0.
Como veremos no pr´oximo cap´ıtulo, nossa suposi¸ c˜ao pode ser feita sempre, pois qualquer GLC
pode ser convertida em uma GLC equivalente onde todas as produ¸ c˜oes s˜ao da forma mostrada
acima.
Agora, n´os definimos o APND D equivalente a G como segue:
D = (¦q¦, Σ, N, δ, q, S, ∅),
onde q ´e o ´ unico estado do autˆomato; Σ, o conjunto de terminais de G, ´e o alfabeto de entrada
de D; N, o conjunto de n˜ao-terminais de G, ´e o alfabeto da pilha de D; q ´e o estado inicial; S,
o s´ımbolo inicial de G, ´e o s´ımbolo inicial da pilha de D; ∅, o conjunto vazio, ´e o conjunto de
estados finais de D; e δ, a rela¸ c˜ao de transi¸ c˜ao de D, ´e definida da seguinte forma: para cada
produ¸ c˜ao
A → cB
1
B
2
B
k
em P, a transi¸ c˜ao
((q, c, A), (q, B
1
B
2
B
k
))
128
est´a em δ. Logo, δ possui uma transi¸ c˜ao para cada produ¸ c˜ao de G.
Exemplo 21.1. Seja
G = (¦S, B¦, ¦[, ]¦, P, S)
onde P consiste das produ¸ c˜oes S → [BS, S → [B, S → [SB, S → [SBS e B →]. Ent˜ao, n´ os
definimos
D = (¦q¦, ¦[, ]¦, ¦S, B¦, δ, q, S, ∅)
tal que δ cont´em as seguintes transi¸c˜oes:
((q, [, S), (q, BS)), correspondente a S → [BS;
((q, [, S), (q, B)), correspondente a S → [B;
((q, [, S), (q, SB)), correspondente a S → [SB;
((q, [, S), (q, SBS)), correspondente a S → [SBS; e
((q, ], B), (q, ǫ)), correspondente a B →].
Considere a palavra x = [ [ [ ] ] [ ] ]. Note que x ∈ L(G). A tabela abaixo mostra que uma
deriva¸c˜ao mais ` a esquerda de x em G corresponde a uma computa¸ c˜ao de D que aceita x e
vice-versa:
Produ¸ c˜ao Forma Sentencial Configura¸ c˜ao
S (q, [ [ [ ] ] [ ] ], S)
S → [SB
1
−→
G,e
[SB
1
−→
D
(q, [ [ ] ] [ ] ], SB)
S → [SBS
1
−→
G,e
[ [SBSB
1
−→
D
(q, [ ] ] [ ] ], SBSB)
S → [B
1
−→
G,e
[ [ [BBSB
1
−→
D
(q, ] ] [ ] ], BBSB)
B →]
1
−→
G,e
[ [ [ ]BSB
1
−→
D
(q, ] [ ] ], BSB)
B →]
1
−→
G,e
[ [ [ ] ]SB
1
−→
D
(q, [ ] ], SB)
S → [B
1
−→
G,e
[ [ [ ] ] [BB
1
−→
D
(q, ] ], BB)
B →]
1
−→
G,e
[ [ [ ] ] [ ]B
1
−→
D
(q, ], B)
B →]
1
−→
G,e
[ [ [ ] ] [ ] ]
1
−→
D
(q, ǫ, ǫ)
Agora, vamos mostrar que N(D) = L(G).
129
Lema 21.1. Para quaisquer z, y ∈ Σ

, γ ∈ N

, e A ∈ N, temos que A
n
−→
G,e
zγ se, e somente
se, (q, zy, A)
n
−→
D
(q, y, γ), onde n ∈ Z e n ≥ 0.
Demonstra¸c˜ao. N´os usamos indu¸ c˜ao em n.
Base (n = 0)
Se n = 0, temos que
A
0
−→
G,e
zγ ⇐⇒ A = zγ
⇐⇒ z = ǫ e γ = A
⇐⇒ (q, zy, A) = (q, y, γ)
⇐⇒ (q, zy, A)
0
−→
D
(q, y, γ).
Hip´otese (n = k)
Assuma que A
k
−→
G,e
zγ se, e somente se, (q, zy, A)
k
−→
D
(q, y, γ), para qualquer inteiro arbitr´ario
(mas, fixo) k, com k ≥ 0.
Passo Indutivo (n = k + 1)
(⇒):
Suponha que A
k+1
−→
G,e
zγ. Ent˜ao, podemos escrever
A
k
−→
G,e
uBα
1
−→
G,e
ucβα = zγ,
onde B → cβ foi a ´ ultima produ¸ c˜ao aplicada, onde c ∈ (Σ ∪ ¦ǫ¦), β ∈ N

, u ∈ Σ

, α ∈ N

,
z = uc e γ = βα.
Pela hip´otese de indu¸ c˜ao,
(q, ucy, A)
k
−→
D
(q, cy, Bα). (21.1)
Pela defini¸ c˜ao de D, (B → cβ) ∈ P implica que
((q, c, B), (q, β)) ∈ δ.
Logo,
(q, cy, Bα)
1
−→
D
(q, y, βα). (21.2)
Combinando (21.1) e (21.2), obtemos
(q, zy, A) = (q, ucy, A)
k+1
−→
D
(q, y, βα) = (q, y, γ).
130
(⇐):
Suponha que (q, zy, A)
k+1
−→
D
(q, y, γ). Ent˜ao, podemos escrever
(q, ucy, A)
k
−→
D
(q, cy, Bα)
1
−→
D
(q, y, βα),
onde
((q, c, B), (q, β)) ∈ δ
foi a ´ ultima transi¸ c˜ao feita pelo autˆomato, com z = uc para algum u ∈ Σ

e γ = βα para algum
α ∈ N

.
Pela hip´otese de indu¸ c˜ao,
A
k
−→
G,e
uBα
e, pela constru¸ c˜ao de D,
B → cβ
´e uma produ¸ c˜ao de G. Aplicando esta produ¸ c˜ao na forma sentencial uBα, obtemos
A
k
−→
G,e
uBα
1
−→
G,e
ucβα = zγ.
Teorema 21.1. N(D) = L(G).
Demonstra¸c˜ao.
x ∈ L(G) ⇐⇒ S

−→
G,e
x (defini¸ c˜ao de L(G) e Lema 16.1)
⇐⇒ (q, x, S)

−→
D
(q, ǫ, ǫ) (Lema 21.1)
⇐⇒ x ∈ N(D). (defini¸ c˜ao de N(D))
21.2 De um APND para uma GLC
Como vimos no Cap´ıtulo 20, dado qualquer APND A, n´os podemos definir um APND D,
com um ´ unico estado final, que aceita apenas por estado final e tal que L(D) = N(A). N´os
podemos modificar ligeiramente a constru¸ c˜ao de D (veja os exerc´ıcios) tal que L(D) = N(A) ∪
L(A). Consequentemente, n´os podemos afirmar que qualquer APND A possui um APND D
equivalente,
D = (Q, Σ, Γ, δ, s, ⊥, ¦t¦)
que aceita apenas por estado final, possui um ´ unico estado final e tal que L(D) = N(D) =
N(A) ∪ L(A).
131
N´os vamos mostrar que a linguagem aceita por qualquer APND pode ser gerada por uma
gram´atica livre de contexto. Para tal, criaremos um novo APND E, equivalente a D, mas que
possui um ´ unico estado. Depois, mostraremos como construir uma GLC G tal que L(G) =
N(E).
Seja
Γ

= QΓ Q.
Os elementos de Γ

s˜ao escritos ¸p A q), onde p, q ∈ Q e A ∈ Γ. Ent˜ao, n´os definimos um novo
APND
E = (¦u¦, Σ, Γ

, δ

, u, ¸s A t), ∅).
A rela¸ c˜ao de transi¸ c˜ao δ

de E ´e definida como segue: para cada transi¸ c˜ao
((p, c, A), (q
0
, B
1
B
2
B
k
)) ∈ δ,
onde c ∈ (Σ ∪ ¦ǫ¦), inclu´ımos em δ

as transi¸ c˜oes
((u, c, ¸p A q
k
)), (u, ¸q
0
B
1
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
)))
para todas as poss´ıveis escolhas de q
1
, q
2
, . . . , q
k
∈ Q. Para k = 0, ent˜ao se
((p, c, A), (q
0
, ǫ)) ∈ δ
inclu´ımos em δ

a transi¸ c˜ao
((u, c, ¸p A q
0
)), (u, ǫ)).
Intuitivamente, E simula D advinhando (n˜ao-deterministicamente) em quais estados D estar´a
no futuro da computa¸ c˜ao, guardando estas “advinha¸ c˜oes” na pilha e, depois, verificando se elas
estavam corretas.
Lema 21.2. Seja E o APND constru´ıdo a partir de D como mostrado acima. Ent˜ao,
(p, x, B
1
B
2
B
k
)
n
−→
D
(q, ǫ, ǫ)
se, e somente se, existirem estados q
0
, q
1
, . . . , q
k
tais que p = q
0
, q = q
k
, e
(u, x, ¸q
0
B
1
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
))
n
−→
E
(u, ǫ, ǫ).
Em particular,
(p, x, B)
n
−→
D
(q, ǫ, ǫ) ⇐⇒ (u, x, ¸p B q))
n
−→
E
(u, ǫ, ǫ).
Demonstra¸c˜ao. N´os usamos indu¸ c˜ao em n.
Base (n = 0)
Se n = 0 ent˜ao ambos os lados da equivalˆencia s˜ao equivalentes ` a proposi¸ c˜ao p = q, x = ǫ e
k = 0. Logo, o lema ´e v´alido para n = 0.
132
Hip´otese (n = m)
Assuma que o lema seja v´alido para todo inteiro arbitr´ario (mas, fixo) m, com m ≥ 0.
Passo Indutivo (n = m + 1)
(⇒):
Suponha que (p, x, B
1
B
2
B
k
)
m+1
−→
D
(q, ǫ, ǫ).
Seja
((p, c, B
1
), (r, C
1
C
2
C
l
))
a primeira transi¸ c˜ao aplicada, onde c ∈ (Σ ∪ ¦ǫ¦) e l ≥ 0. Ent˜ao, x = cy e
(p, x, B
1
B
2
B
k
)
1
−→
D
(r, y, C
1
C
2
C
l
B
2
B
k
)
m
−→
D
(q, ǫ, ǫ).
Pela hip´otese de indu¸ c˜ao, existem r
o
, r
1
, . . . , r
l−1
, q
1
, . . . , q
k−1
, q
k
tais que r = r
0
, q = q
k
, e
(u, y, ¸r
0
C
1
r
1
)¸r
1
C
2
r
2
) ¸r
l−1
C
l
q
1
)¸q
1
B
2
q
2
)¸q
k−1
B
k
q
k
))
m
−→
E
(u, ǫ, ǫ). (21.3)
Pela defini¸ c˜ao de E,
((u, c, ¸p B
1
q
1
)), (u, ¸r
0
C
1
r
1
)¸r
1
C
2
r
2
) ¸r
l−1
C
l
q
1
))) (21.4)
´e uma transi¸ c˜ao de δ

.
Logo, combinando (21.3) e (21.4), obtemos
(u, x, ¸q
0
B
1
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
))
m+1
−→
E
(u, ǫ, ǫ).
(⇐):
Suponha que
(u, x, ¸q
0
B
1
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
))
m+1
−→
E
(u, ǫ, ǫ).
Seja
((u, c, ¸q
0
B
1
q
1
)), (u, ¸r
0
C
1
r
1
)¸r
1
C
2
r
2
) ¸r
l−1
C
l
q
1
)))
a primeira transi¸ c˜ao usada pelo autˆomato E, onde c ∈ (Σ ∪ ¦ǫ¦) e l ≥ 0. Ent˜ao, x = cy e
(u, x, ¸q
0
B
1
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
))
1
−→
E
(u, y, ¸r
0
C
1
r
1
)¸r
1
C
2
r
2
) ¸r
l−1
C
l
q
1
)¸q
1
B
2
q
2
) ¸q
k−1
B
k
q
k
))
m
−→
E
(u, ǫ, ǫ).
Pela hip´otese de indu¸ c˜ao,
(r
0
, y, C
1
C
2
C
l
B
2
B
k
)
m
−→
D
(q
k
, ǫ, ǫ).
133
Pela defini¸ c˜ao de E,
((q
0
, c, B
1
), (r
0
, C
1
C
2
C
m
))
´e uma transi¸ c˜ao de δ.
Combinando os resultados acima, conclu´ımos que
(q
0
, x, B
1
B
2
B
k
)
1
−→
D
(r
0
, y, C
1
C
2
C
l
B
2
B
k
)
m
−→
D
(q
k
, ǫ, ǫ).
Teorema 21.2. N(E) = L(D) ∪ N(D).
Demonstra¸c˜ao. Para toda palavra x ∈ Σ

,
x ∈ N(E) ⇐⇒ (u, x, ¸s ⊥ t))

−→
E
(u, ǫ, ǫ) (defini¸ c˜ao de N(E))
⇐⇒ (s, x, ⊥)

−→
D
(t, ǫ, ǫ) (Lema 21.2)
⇐⇒ x ∈ L(D). (defini¸ c˜ao de L(D))
Como L(D) = N(D), nossa afirma¸ c˜ao segue.
Note que o que fizemos at´e aqui foi apenas mostrar que todo APND pode ser simulado por um
APND com um ´ unico estado que aceita apenas por pilha vazia. Mas, o que realmente queremos
´e mostrar que toda linguagem aceita por um APND pode ser gerada por uma GLC. Felizmente,
o restante do trabalho j´a foi feito!
Dado um APND
F = (¦q¦, Σ, Γ, δ, s, ⊥, ∅)
com um ´ unico estado e que aceita apenas por pilha vazia, n´os definimos a gram´atica
G = (Γ, Σ, P, ⊥)
onde P cont´em uma produ¸ c˜ao
A → cB
1
B
2
B
k
para toda transi¸ c˜ao
((q, c, A), (q, B
1
B
2
B
k
)) ∈ δ,
onde c ∈ (Σ ∪ ¦ǫ¦). Agora, n´os podemos aplicar o Lema 21.1 e o Teorema 21.1 para concluir
que L(G) = N(F). Como F n˜ao possui nenhum estado final, temos que L(F) = ∅ e, portanto,
L(G) = N(F) ∪ L(F), o que implica que G e F s˜ao equivalentes.
134
Cap´ıtulo 22
Simplifica¸ c˜ao de Linguagens Livres de Contexto
22.1 Considera¸c˜oes iniciais
A defini¸ c˜ao de uma linguagem livre de contexto n˜ao imp˜oe nenhuma restri¸ c˜ao no “lado direito”
de uma produ¸ c˜ao. Entretanto, em algumas ocasi˜oes, ´e desej´ avel impor restri¸ c˜oes na gram´atica
para facilitar uma demonstra¸ c˜ao ou reduzir a complexidade de um algoritmo. Por exemplo,
impusemos uma restri¸ c˜ao nas produ¸ c˜oes da GLC usada na prova do Teorema 21.1 para tornar a
demonstra¸ c˜ao mais f´acil e estudaremos um algoritmo no Cap´ıtulo 26 para decidir se uma dada
palavra ´e gerada por uma dada gram´atica que tamb´em sup˜oe que as produ¸ c˜oes da gram´atica
obedecem a certas restri¸ c˜oes de forma.
Neste cap´ıtulo, estudaremos v´arias transforma¸ c˜oes e substitui¸ c˜oes que podem ser utilizadas
para transformar uma GLC em outra GLC equivalente e cujas produ¸ c˜oes obedecem a certas
restri¸ c˜oes.
22.2 Uma regra ´ util de substitui¸ c˜ao
Seja
G = (N, Σ, P, S)
uma GLC. Suponha que P cont´em uma produ¸ c˜ao da forma
A → x
1
Bx
2
,
onde x
1
, x
2
∈ (Σ ∪ N)

.
Suponha que A e B sejam n˜ao-terminais distintos e que
B → y
1
[ y
2
[ [ y
n
135
seja o conjunto de todas as produ¸ c˜oes em P que possuem B como “lado esquerdo”, com
y
i
∈ (Σ ∪ N)

, para todo i ∈ ¦1, . . . , n¦.
Seja
G

= (N, Σ, P

, S)
a gram´atica em que P

´e constru´ıdo atrav´es da remo¸ c˜ao de
A → x
1
Bx
2
de P e da inclus˜ao de
A → x
1
y
1
x
2
[ x
1
y
2
x
2
[ [ x
1
y
n
x
2
em P. Ent˜ao, temos que
Teorema 22.1. L(G

) = L(G).
Demonstra¸c˜ao. Seja w ∈ Σ

tal que S

−→
G
w. Se esta deriva¸ c˜ao n˜ao envolve a produ¸ c˜ao
A → x
1
Bx
2
, ent˜ao
S

−→
G

w.
Caso contr´ario, vamos considerar a primeira vez que esta produ¸ c˜ao ´e utilizada. O n˜ao-terminal
B introduzido pela substitui¸ c˜ao de A por x
1
Bx
2
tem de ser eventualmente substitu´ıdo; sem
perda de generalidade, podemos assumir que B ´e substitu´ıdo no passo seguinte ao seu apareci-
mento (por quˆe?). Ent˜ao,
S

−→
G
αAβ
1
−→
G
αx
1
Bx
2
β
1
−→
G
αx
1
y
i
x
2
β

−→
G
w,
para algum i ∈ ¦1, . . . , n¦. Mas, com a gram´atica G

, temos que
S

−→
G

αAβ
1
−→
G

αx
1
y
i
x
2
β .
Ent˜ao, podemos derivar a mesma forma sentencial, αx
1
y
i
x
2
β, a partir de S, tanto com G como
com G

. Logo, toda vez que a produ¸ c˜ao A → x
1
Bx
2
for utilizada no restante da deriva¸ c˜ao
acima,
x
1
y
i
x
2
β

−→
G
w,
n´os podemos repetir o argumento acima para mostrar que a forma sentencial obtida ap´os a
substitui¸ c˜ao de B pode ser obtida com a gram´atica G

. Ent˜ao, podemos mostrar, por indu¸ c˜ao
no n´ umero de vezes em que a produ¸ c˜ao A → x
1
Bx
2
aparece em S

−→
G
w, que S

−→
G

w, ou seja,
que w ∈ L(G

). Desta forma, mostramos que L(G) ⊆ L(G

). Para mostrarmos a rec´ıproca,
isto ´e, que L(G

) ⊆ L(G), podemos proceder de forma an´aloga `a que usamos para mostrar que
L(G) ⊆ L(G

).
136
Exemplo 22.1. Considere
G = (¦A, B¦, ¦a, b, c¦, P, A)
onde
P = ¦A → a [ aaA [ abBc, B → abbA [ b¦ .
Usando o Teorema 22.1, podemos obter uma nova GLC, G

G

= (¦A, B¦, ¦a, b, c¦, P

, A) ,
tal que
P

= ¦A → a [ aaA [ ababbAc [ abbc, B → abbA [ b¦
e
L(G

) = L(G) .
22.3 Elimina¸c˜ao de produ¸c˜oes in´ uteis
Defini¸ c˜ao 22.1. Seja G = (N, Σ, P, S) uma GLC. Um n˜ ao-terminal A ∈ N ´e dito ´ util se, e
somente se, existir pelo menos uma palavra w ∈ L(G) tal que S

−→
G
αAβ, com α, β ∈ (N∪Σ)

.
Em outras palavras, um n˜ ao-terminal ´e ´ util se, e somente se, ele ocorre em pelo menos uma
deriva¸c˜ao. Um n˜ ao-terminal que n˜ ao ´e ´ util ´e dito in´ util. Uma produ¸ c˜ao ´e in´ util se ela cont´em
pelo menos um n˜ ao-terminal in´ util.
Na pr´atica, ´e desej´avel eliminar produ¸ c˜oes in´ uteis, pois elas ocupam espa¸ co (isto ´e, “mem´oria”),
mas n˜ao servem para gerar palavras. Felizmente, h´a um algoritmo simples para remover este
tipo de produ¸ c˜ao. Vamos ilustrar o algoritmo para elimina¸ c˜ao de produ¸ c˜oes in´ uteis com um
exemplo:
Seja
G = (¦S, A, B, C¦, ¦a, b¦, P, S)
onde
P = ¦S → aS [ A [ C, A → a, B → aa, C → aCb¦ .
O primeiro passo do algoritmo calcula o conjunto, Φ, de s´ımbolos geradores de G. O conjunto
Φ ´e inicializado com os n˜ao-terminais de G que ocorrem do lado esquerdo de uma produ¸ c˜ao de
G cujo lado direito pertence a Σ

. Em seguida, executamos o la¸ co a seguir at´e que Φ n˜ao possa
mais ser modificado:
para cada (A → α) ∈ P fa¸ ca
se α ∈ (Σ ∪ Φ)

ent˜ao
Φ ← Φ ∪ ¦A¦
fimse
fimpara
137
Podemos mostrar que L(G) ,= ∅ se, e somente se, S ∈ Φ. O algoritmo termina se S ,∈ Φ. Ent˜ao,
vamos assumir que S ∈ Φ.
Se executarmos o passo acima com a GLC G, obteremos Φ = ¦S, A, B¦. Em seguida, n´os
geramos uma GLC, G

, que cont´em todas as produ¸ c˜oes de Gem que todos os s´ımbolos pertencem
a Φ:
G

= (¦S, A, B¦, ¦a¦, P

, S)
onde
P

= ¦S → aS [ A, A → a, B → aa¦ .
O segundo passo do algoritmo calcula o conjunto, Ψ, de n˜ao-terminais ating´ıveis de G

. Dizemos
que X ´e ating´ıvel se, e somente se, existir uma deriva¸ c˜ao S

−→
G

αXβ, para algum α, β ∈
(N ∪ Σ)

. Para calcular Ψ, inicializamos este conjunto com o s´ımbolo inicial de G

. Em
seguida, para cada produ¸ c˜ao A → αBβ de P

, com A ∈ Ψ, B ∈ N e α, β ∈ (N ∪Σ)

, inserimos
B em Ψ. N´os repetimos este procedimento para cada produ¸ c˜ao em P

e at´e que todos os
n˜ao-terminais de G

tenham sido inseridos em Ψ ou quando n˜ao possamos mais inserir nenhum
n˜ao-terminal de G

em Ψ.
Se executarmos o passo acima com a GLC G

, obteremos Ψ = ¦S, A¦. Em seguida, n´os geramos
uma GLC, G
′′
, que cont´em todas as produ¸ c˜oes de G em que todos os n˜ao-terminais pertencem
a Ψ:
G
′′
= (¦S, A¦, ¦a¦, P
′′
, S)
onde
P
′′
= ¦S → aS [ A, A → a¦ .
O algoritmo acima gera uma GLC, G

, que ´e equivalente a G:
Teorema 22.2. Seja G = (N, Σ, P, S) uma GLC qualquer. Ent˜ao, existe uma GLC equivalente
a G,
G
′′
= (N
′′
, Σ, P
′′
, S) ,
que n˜ ao possui nenhum n˜ ao-terminal ou vari´ avel in´ util.
Demonstra¸c˜ao. A prova do teorema ´e deixada como exerc´ıcio para o aluno.
22.4 Elimina¸c˜ao de produ¸c˜oes nulas
Defini¸ c˜ao 22.2. Em uma GLC, qualquer produ¸ c˜ao da forma
A → ǫ
´e chamada de produ¸ c˜ao-ǫ ou produ¸ c˜ao nula.
138
Produ¸ c˜oes nulas s˜ao, de alguma forma, in´ uteis tamb´em, pois elas n˜ao contribuem com nenhum
terminal na deriva¸ c˜ao de uma palavra, a n˜ao ser a pr´opria palavra vazia. No entanto, mesmo
que uma gram´atica n˜ao gere a palavra vazia, ela pode ainda possuir uma produ¸ c˜ao nula. A
seguir, n´os mostramos que tais produ¸ c˜oes podem ser eliminadas por um esquema construtivo e
simples:
Lema 22.1. Seja G = (N, Σ, P, S) uma GLC qualquer. Ent˜ao, existe uma GLC G

sem
nenhuma produ¸ c˜ao nula tal que
L(G

) = L(G) −¦ǫ¦ .
Demonstra¸c˜ao. Seja
´
P o menor conjunto de produ¸ c˜oes que cont´em P e ´e fechado sob a seguinte
regra:
se A → αBβ e B → ǫ est˜ao em
´
P, ent˜ao A → αβ est´a em
´
P.
N´os podemos construir
´
P indutivamente a partir de P, adicionando produ¸ c˜oes para satisfazer
a regra acima. Note que n´os n˜ao podemos adicionar um n´ umero infinito de produ¸ c˜oes em
´
P,
pois cada lado direito de uma produ¸ c˜ao adicionada a
´
P ´e uma subcadeia do lado direito de
alguma produ¸ c˜ao de
´
P.
Seja
´
G a gram´atica
´
G = (N, Σ,
´
P, S).
Como P ⊆
´
P, toda deriva¸ c˜ao de G ´e uma deriva¸ c˜ao de
´
G. Logo, L(G) ⊆ L(
´
G). Mas, como cada
nova produ¸ c˜ao adicionada a
´
P para satisfazer a regra acima pode ser simulada em dois passos
pelas duas produ¸ c˜oes de
´
P que a fizeram ser adicionada a
´
P, n´os temos que L(
´
G) ⊆ L(G).
Logo, L(G) = L(
´
G).
Agora, vamos mostrar que, para qualquer palavra x ∈ Σ
+
tal que S

−→
b
G
x, se S

−→
b
G
x ´e uma
deriva¸ c˜ao de comprimento m´ınimo ent˜ao nenhuma produ¸ c˜ao nula foi usada na deriva¸ c˜ao de x.
Se este ´e mesmo o caso, ent˜ao as produ¸ c˜oes nulas de
´
P s˜ao redundantes e, portanto, podem ser
descartadas de
´
P sem causar qualquer altera¸ c˜ao na linguagem L(
´
G) gerada por
´
G.
Seja x ,= ǫ e considere uma deriva¸ c˜ao de comprimento m´ınimo S

−→
b
G
x. Suponha, por con-
tradi¸ c˜ao, que uma produ¸ c˜ao nula, B → ǫ, tenha sido usada em algum ponto da deriva¸ c˜ao de
x:
S

−→
b
G
γBδ
1
−→
b
G
γδ

−→
b
G
x.
Como x ∈ Σ
+
, pelo menos uma das duas palavras γ e δ ´e n˜ao vazia. Logo, a ocorrˆencia de B
deve ter aparecido antes na deriva¸ c˜ao, quando uma produ¸ c˜ao da forma A → αBβ foi aplicada.
Ent˜ao, podemos escrever
S
m
−→
b
G
ηAθ
1
−→
b
G
ηαBβθ
n
−→
b
G
γBδ
1
−→
b
G
γδ
k
−→
b
G
x
139
para inteiros n˜ao-negativos m, n, k. Mas, pela regra acima, A → αβ ´e uma regra de
´
P, e esta
produ¸ c˜ao poderia ter sido aplicada naquele ponto da deriva¸ c˜ao, produzindo uma deriva¸ c˜ao de
x estritamente mais curta,
S
m
−→
b
G
ηAθ
1
−→
b
G
ηαβθ
n
−→
b
G
γδ
k
−→
b
G
x.
Isto contradiz nossa hip´otese de que a deriva¸ c˜ao que usa a produ¸ c˜ao nula tem comprimento
m´ınimo.
Logo, n´os n˜ao precisamos de produ¸ c˜oes nulas e unit´arias para gerar cadeias n˜ao nulas. Se n´os
as descartarmos de
´
G, n´os obteremos uma gram´atica G

tal que a linguagem L(G

) gerada por
G

´e L(G) −¦ǫ¦.
Exemplo 22.2. Seja
G = (¦S, A, B, C, D¦, ¦a, b, d¦, P, S)
onde
P = ¦S → ABaC, A → BC, B → b [ ǫ, C → D [ ǫ, D → d¦ .
Vamos encontrar uma GLC sem produ¸ c˜oes nulas que seja equivalente a G. Para tal, aplicamos
(at´e n˜ ao podermos mais mudar o conjunto
´
P) a regra da prova do Lema 22.1 para gerar as
produ¸ c˜oes do conjunto
´
P:
S → ABaC [ AaC [ ABa [ Aa [ BaC [ Ba [ aC [ a ,
A → BC [ C [ B [ ǫ ,
B → b [ ǫ ,
C → D [ ǫ ,
D → d .
Ent˜ao, a GLC G

´e tal que
G

= (¦S, A, B, C, D¦, ¦a, b, d¦, P

, S)
onde
P

=
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
S → ABaC [ AaC [ ABa [ Aa [ BaC [ Ba [ aC [ a ,
A → BC [ C [ B,
B → b ,
C → D,
D → d .
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
.
22.5 Elimina¸c˜ao de produ¸c˜oes unit´arias
Defini¸ c˜ao 22.3. Em uma GLC G = (N, Σ, P, S), qualquer produ¸ c˜ao da forma
A → B,
onde A, B ∈ N, ´e chamada de produ¸ c˜ao unit´aria.
140
Produ¸ c˜oes unit´arias podem ser vistas tamb´em como produ¸ c˜oes in´ uteis, pois elas n˜ao contribuem
com nenhum terminal na deriva¸ c˜ao de uma palavra e ainda tornam a deriva¸ c˜ao mais “longa”.
Assim como as produ¸ c˜oes nulas, as produ¸ c˜oes unit´arias podem ser eliminadas por um esquema
construtivo e simples:
Lema 22.2. Seja G = (N, Σ, P, S) uma GLC qualquer. Ent˜ao, existe uma GLC G

sem
nenhuma produ¸ c˜ao unit´ aria tal que
L(G

) = L(G) .
Demonstra¸c˜ao. Seja
´
P o menor conjunto de produ¸ c˜oes que cont´em P e ´e fechado sob a seguinte
regra:
se A → B e B → γ est˜ao em
´
P, ent˜ao A → γ est´a em
´
P.
N´os podemos construir
´
P indutivamente a partir de P, adicionando produ¸ c˜oes para satisfazer
a regra acima. Note que n´os n˜ao podemos adicionar um n´ umero infinito de produ¸ c˜oes em
´
P,
pois cada lado direito de uma produ¸ c˜ao adicionada a
´
P ´e uma subcadeia do lado direito de
alguma produ¸ c˜ao de
´
P.
Seja
´
G a gram´atica
´
G = (N, Σ,
´
P, S).
Como P ⊆
´
P, toda deriva¸ c˜ao de G ´e uma deriva¸ c˜ao de
´
G. Logo, L(G) ⊆ L(
´
G). Mas, como cada
nova produ¸ c˜ao adicionada a
´
P para satisfazer a regra acima pode ser simulada em dois passos
pelas duas produ¸ c˜oes de
´
P que a fizeram ser adicionada a
´
P, n´os temos que L(
´
G) ⊆ L(G).
Logo, L(G) = L(
´
G).
Agora, vamos mostrar que, para qualquer palavra x ∈ Σ
+
tal que S

−→
b
G
x, se S

−→
b
G
x ´e uma
deriva¸ c˜ao de comprimento m´ınimo ent˜ao nenhuma produ¸ c˜ao unit´aria foi usada na deriva¸ c˜ao de
x. Se este ´e mesmo o caso, ent˜ao as produ¸ c˜oes unit´arias de
´
P s˜ao redundantes e, portanto,
podem ser descartadas de
´
P sem causar qualquer altera¸ c˜ao na linguagem L(
´
G) gerada por
´
G.
Seja x ∈ Σ
+
e suponha que S

−→
b
G
x seja uma deriva¸ c˜ao de comprimento m´ınimo. Suponha que
uma produ¸ c˜ao A → B seja usada am algum momento da deriva¸ c˜ao de x, digamos
S

−→
b
G
αBβ
1
−→
b
G
αBβ

−→
b
G
x.
Como x ∈ Σ
+
, o n˜ao-terminal B deve ser eventualmente substitu´ıdo na deriva¸ c˜ao atrav´es da
aplica¸ c˜ao de uma produ¸ c˜ao B → γ:
S
m
−→
b
G
αAβ
1
−→
b
G
αBβ
n
−→
b
G
ηBθ
1
−→
b
G
ηγθ
k
−→
b
G
x.
Mas, pela regra acima, a produ¸ c˜ao A → γ tamb´em est´a em
´
P, e esta produ¸ c˜ao poderia ter sido
aplicada no lugar de A → B e B → γ, produzindo uma deriva¸ c˜ao de x estritamente mais curta
141
do que a deriva¸ c˜ao acima:
S
m
−→
b
G
αAβ
1
−→
b
G
αγβ
n
−→
b
G
ηγθ
k
−→
b
G
x.
Isto contradiz a hip´otese de que a deriva¸ c˜ao de x com a produ¸ c˜ao unit´aria possui comprimento
m´ınimo. Logo, n´os n˜ao precisamos de produ¸ c˜oes unit´arias. Se n´os as descartarmos de
´
G,
obteremos uma gram´atica G

tal que a linguagem L(G

) gerada por G

´e L(G).
Exemplo 22.3. Seja
G = (¦S, A, B¦, ¦a, b, c¦, P, S)
onde
P = ¦S → Aa [ B, B → A [ bb, A → a [ bc [ B¦ .
Vamos encontrar uma GLC sem produ¸ c˜oes unit´ arias que seja equivalente a G. Para tal, apli-
camos (at´e n˜ ao podermos mais mudar o conjunto
´
P) a regra da prova do Lema 22.2 para gerar
as produ¸ c˜oes do conjunto
´
P:
S → Aa [ B [ bb [ A [ a [ bc ,
B → a [ bc [ B [ bb ,
A → a [ bc [ A [ bb .
Ent˜ao, a GLC G

´e tal que
G

= (¦S, B, A¦, ¦a, b, d¦, P

, S)
onde
P

= ¦S → Aa [ bb [ a [ bc, B → a [ bc [ bb, A → a [ bc [ bb¦ .
22.6 Exerc´ıcios
1. Mostre que as gram´aticas
G
1
= (¦S, A, B¦, ¦a, b¦, ¦S → abAB [ ba, A → aaa, B → aA [ bb¦, S¦)
e
G
2
= (¦S, A¦, ¦a, b¦, ¦S → abAaA [ abAbb [ ba, A → aaa¦, S¦)
s˜ao equivalentes. Fa¸ ca uso de um dos teoremas vistos neste cap´ıtulo.
2. Elimine todas as produ¸ c˜oes in´ uteis da gram´atica
G
3
= (¦S, A, B¦, ¦a, b¦, ¦S → aS [ AB, A → bA, B → AA¦, S¦) .
Qual ´e a linguagem gerada pela gram´atica?
3. Elimine todas as produ¸ c˜oes nulas da gram´atica
G
4
= (¦S, A, B¦, ¦a, b¦, ¦S → AaB [ aaB, A → ǫ, B → bbA [ ǫ¦, S¦) .
142
4. Elimine todas as produ¸ c˜oes nulas, unit´arias e in´ uteis da gram´atica
G
5
= (¦S, A, B, C¦, ¦a, b¦, ¦S → aA [ aBB, A → aaA [ ǫ, B → bB [ bbC, C → B¦, S¦) .
Qual ´e a linguagem gerada pela gram´atica?
5. Dˆe um exemplo de uma situa¸ c˜ao em que a elimina¸ c˜ao de produ¸ c˜oes nulas introduz
produ¸ c˜oes unit´arias que n˜ao existiam antes. Em seguida, argumente sobre a ordem em
que os procedimentos de elimina¸ c˜ao de produ¸ c˜oes nulas e de produ¸ c˜oes unit´arias devem
ser aplicados.
6. Prove que se uma gram´atica n˜ao possui nenhuma produ¸ c˜ao nula e nenhuma produ¸ c˜ao
unit´aria, ent˜ao a elimina¸ c˜ao de produ¸ c˜oes in´ uteis, pela constru¸ c˜ao dada neste cap´ıtulo,
n˜ao introduz nenhuma produ¸ c˜ao nula nem unit´aria. Em seguida, argumente sobre a
ordem em que os procedimentos de elimina¸ c˜ao de produ¸ c˜oes nulas, unit´arias e in´ uteis
devem ser aplicados.
7. Suponha que uma GLC
G = (N, Σ, P, S)
tenha uma produ¸ c˜ao da forma
A → xy
onde x, y ∈ (N ∪ Σ)
+
. Prove que se esta regra for substitu´ıda por
A → By e B → x,
onde B ,∈ N, ent˜ao a gram´atica resultante ser´a equivalente `a original.
8. Considere o procedimento de dois passos, dado neste cap´ıtulo, para eliminar produ¸ c˜oes
in´ uteis. Inverta a ordem dos dois passos. Isto ´e, primeiro calcule o conjunto Ψ dos
s´ımbolos ating´ıveis e, em seguida, calcule o conjunto Φ dos s´ımbolos geradores. Vocˆe acha
que esta invers˜ao de passos produz um procedimento correto para gerar uma gram´atica
equivalente `a original, mas sem produ¸ c˜oes in´ uteis? Se sim, prove que vocˆe est´a correto.
Caso contr´ario, forne¸ ca um contra-exemplo.
143
Cap´ıtulo 23
A Forma Normal de Chomsky
23.1 Defini¸c˜ao
Em muitas aplica¸ c˜oes ´e comum assumirmos que as produ¸ c˜oes de uma GLC’s est˜ao restritas a
uma ou outra forma especial. Duas das formas mais ´ uteis s˜ao a Forma Normal de Chomsky
(FNC) e a Forma Normal de Greibach (FNG).
Neste cap´ıtulo, estudaremos apenas a FNC. A FNG ser´a o assunto do pr´ oximo cap´ıtulo.
Defini¸ c˜ao 23.1. Uma gram´ atica livre de contexto G = (N, Σ, P, S) est´ a na Forma Normal de
Chomsky (FNC) se, e somente se, todas as produ¸ c˜oes de G s˜ ao da forma A → BC ou A → a,
onde A, B, C ∈ N e a ∈ Σ.
Exemplo 23.1. A gram´ atica G = (¦S, A, B, C¦, ¦(, )¦, P, S), tal que o conjunto P consiste das
produ¸ c˜oes
S → AB [ AC [ SS,
C → SB,
A → (,
B →),
est´ a na Forma Normal de Chomsky. Note que a linguagem L(G) gerada por G ´e exatamente
PARBAL (veja Exemplo 15.4).
Note que uma gramatica G na FNC n˜ao possui produ¸ c˜oes nulas nem produ¸ c˜oes unit´arias. Isto
implica que ǫ ,∈ L(G) (por quˆe?). Apesar dessas duas restri¸ c˜oes, gram´aticas livres de contexto
na FNC s˜ao completamente gerais:
Teorema 23.1. Dada qualquer GLC G, h´a uma GLC G

na FNC tal que L(G

) = L(G) −¦ǫ¦.
144
Demonstra¸c˜ao. Suponha que G n˜ao possui produ¸ c˜oes nulas nem unit´arias. Caso contr´ario,
aplique as regras do Lema 22.1 e Lema 22.2 para obter uma gram´ atica equivalente, exceto
possivelmente pela palavra vazia. Em seguida, para cada terminal a ∈ Σ, n´os introduzimos um
n˜ao-terminal A
a
e uma produ¸ c˜ao A
a
→ a, e substitu´ımos todas as ocorrˆencias de a no lado
direito das antigas produ¸ c˜oes (exceto produ¸ c˜oes da forma B → a) por A
a
. Como resultado,
todas as produ¸ c˜oes ser˜ao da forma
A → a ou A → B
1
B
2
B
k
, k ≥ 2,
onde os B
i
’s s˜ao n˜ao-terminais. O conjunto de palavras de terminais gerado pela gram´atica
n˜ao ´e modificado; a ´ unica diferen¸ ca ´e que se faz necess´ario um passo a mais do que antes para
se gerar um s´ımbolo terminal.
Para qualquer produ¸ c˜ao
A → B
1
B
2
B
k
com k ≥ 3, introduzimos um novo n˜ao-terminal C e substitu´ımos esta produ¸ c˜ao por duas
produ¸ c˜oes
A → B
1
C e C → B
2
B
3
B
k
.
Continuamos fazendo isso at´e que todos os lados direitos tenham comprimento, no m´aximo, 2.
A gram´atica resultante est´a na FNC.
23.2 Exemplos
Exemplo 23.2. Vamos obter uma gram´ atica G

na FNC a partir da gram´ atica livre de contexto
abaixo
G = (¦S¦, ¦a, b¦, ¦S → aSb [ ǫ¦, S)
e tal que L(G

) = L(G) −¦ǫ¦. Note que L(G) ´e a linguagem
¦a
n
b
n
[ n ∈ Z, n ≥ 0¦
e que ǫ ∈ L(G).
N´os usamos o Lema 22.1 e o Lema 22.2 para gerar uma gram´ atica
´
G a partir de G sem
produ¸ c˜oes nulas ou unit´ arias. As produ¸ c˜oes de
´
G s˜ ao
S → aSb [ ab [ ǫ.
A gram´ atica
´
G possui uma produ¸ c˜ao nula, S → ǫ, e n˜ ao possui produ¸ c˜oes unit´ arias. A eli-
mina¸ c˜ao dessa produ¸ c˜ao nula d´a origem a uma gram´ atica com apenas duas produ¸ c˜oes: S → aSb
e S → ab. Esta gram´ atica gera a linguagem ¦a
n
b
n
[ n ∈ Z, n ≥ 1¦, que ´e de fato igual a
L(G) −¦ǫ¦.
Agora, vamos colocar esta gram´ atica na FNC. N´os adicionamos n˜ ao-terminais A
a
e A
b
para
substituir as produ¸ c˜oes S → aSb e S → ab pelas produ¸ c˜oes S → A
a
SA
b
[ A
a
A
b
, A
a
→ a e
145
A
b
→ b. Finalmente, adicionamos o n˜ ao-terminal C e substitu´ımos a produ¸ c˜ao S → A
a
SA
b
pelas produ¸ c˜oes S → A
a
C e C → SA
b
. A gram´ atica G

= (¦S, A, B, C¦, ¦a, b¦, P

, S) resultante
´e tal que
P

= ¦S → A
a
A
b
[ A
a
C, C → SA
b
, A
a
→ a, A
b
→ b¦.
Exemplo 23.3. Vamos obter uma gram´ atica G

na FNC a partir da gram´ atica livre de contexto
abaixo
G = (¦S¦, ¦(, )¦, ¦S → (S) [ SS [ ǫ¦, S)
e tal que L(G

) = L(G) −¦ǫ¦. Note que L(G) ´e a linguagem PARBAL do Exemplo 15.3 e que
ǫ ∈ L(G).
N´os usamos o Lema 22.1 e o Lema 22.2 para gerar uma gram´ atica
´
G a partir de G sem
produ¸ c˜oes nulas ou unit´ arias. As produ¸ c˜oes de
´
G s˜ ao
S → (S) [ SS [ () [ ǫ.
A gram´ atica
´
G possui uma produ¸ c˜ao nula, S → ǫ, e n˜ ao possui produ¸ c˜oes unit´ arias. A eli-
mina¸ c˜ao dessa produ¸ c˜ao nula d´a origem a uma gram´ atica com apenas trˆes produ¸ c˜oes: S → (S),
S → SS e S → (). Esta gram´ atica gera a linguagem PARBAL − ¦ǫ¦, que ´e de fato igual a
L(G) −¦ǫ¦.
Agora, vamos colocar esta gram´ atica na FNC. N´os adicionamos n˜ ao-terminais A
(
e A
)
para
substituir as produ¸ c˜oes S → (S) e S → () pelas produ¸ c˜oes S → A
(
SA
)
[ A
(
A
)
, A
(
→ ( e
A
)
→). Finalmente, adicionamos o n˜ ao-terminal C e substitu´ımos a produ¸ c˜ao S → A
(
SA
)
pelas produ¸ c˜oes S → A
(
C e C → SA
)
. A gram´ atica G

= (¦S, A, B, C¦, ¦a, b¦, P

, S) resultante
´e tal que
P

= ¦S → A
(
C [ SS, C → SA
)
, A
(
→ (, A
)
→)¦.
Exemplo 23.4. Vamos obter uma gram´ atica G

na FNC a partir da gram´ atica livre de contexto
abaixo
G = (¦S, A, B, C, D, E¦, ¦a, b, c, d, e, f, g, h¦, P, S)
onde P consiste das produ¸ c˜oes
S → CBh [ D [ ǫ,
A → aaD,
B → Sf [ ggg,
C → cA [ d [ C,
D → E [ SABC,
E → be
e tal que L(G

) = L(G) −¦ǫ¦.
146
N´os usamos o Lema 22.1 e o Lema 22.2 para gerar uma gram´ atica
´
G a partir de G sem
produ¸ c˜oes nulas ou unit´ arias. As produ¸ c˜oes de
´
G s˜ ao
S → CBh [ D [ E [ SABC [ ABC [ be [ ǫ,
A → aaD
B → Sf [ ggg [ f,
C → cA [ d [ C,
D → E [ SABC [ ABC [ be
E → be.
H´a v´arias produ¸ c˜oes unit´ arias em
´
P, S → D, S → E, C → C, e D → E, e uma produ¸ c˜ao nula,
S → ǫ. A elimina¸ c˜ao dessas produ¸ c˜oes d´a origem a uma gram´ atica com apenas as seguintes
produ¸ c˜oes:
S → CBh [ SABC [ ABC [ be
A → aaD
B → Sf [ ggg [ f,
C → cA [ d,
D → SABC [ ABC [ be,
E → be.
Agora, vamos colocar esta gram´ atica na FNC. N´os adicionamos n˜ ao-terminais A
a
, . . . , A
h
para
substituir as produ¸ c˜oes
S → CBh [ be
A → aaD,
B → Sf [ ggg,
C → cA,
D → be,
E → be,
147
pelas produ¸ c˜oes
S → CBA
h
[ A
b
A
e
A → A
a
A
a
D
B → SA
f
[ A
g
A
g
A
g
,
C → A
c
A,
D → A
b
A
e
,
E → A
b
A
e
,
A
a
→ a,
A
b
→ b,
A
c
→ c,
A
d
→ d,
A
e
→ e,
A
f
→ f,
A
g
→ g,
A
h
→ h.
Finalmente, adicionamos os n˜ ao-terminais X
1
, . . . , X
5
e substitu´ımos as produ¸ c˜oes S → CBA
h
,
S → SABC, S → ABC, A → A
a
A
a
D, B → A
g
A
g
A
g
, D → SABC e D → ABC pelas
produ¸ c˜oes
S → CX
1
[ SX
2
[ AX
3
[ A
b
A
e
X
1
→ BA
h
,
X
2
→ AX
3
,
X
3
→ BC,
A → A
a
X
4
X
4
→ A
a
D,
B → A
g
X
5
,
X
5
→ A
g
A
g
,
D → SX
2
[ AX
3
[ A
b
A
e
.
A gram´ atica G

= (N

, ¦a, b, c, d, e, f, g¦, P

, S) resultante ´e tal que
N

= ¦S, A, B, C, D, E, A
a
, A
b
, A
c
, A
d
, A
e
, A
f
, A
g
, A
h
, X
1
, X
2
, X
3
, X
4
, X
5
¦
148
e P

consiste das produ¸ c˜oes
S → CX
1
[ SX
2
[ AX
3
[ A
b
A
e
A → A
a
X
4
,
B → SA
f
[ A
g
X
5
[ f
C → A
c
A [ d,
D → SX
2
[ AX
3
[ A
b
A
e
,
E → A
b
A
e
,
A
a
→ a,
A
b
→ b,
A
c
→ c,
A
d
→ d,
A
e
→ e,
A
f
→ f,
A
g
→ g,
A
h
→ h,
X
1
→ BA
h
,
X
2
→ AX
3
,
X
3
→ BC,
X
4
→ A
a
D,
X
5
→ A
g
A
g
.
23.3 Exerc´ıcios
1. Seja G = (¦S, B, C¦, ¦a, b, c¦, P, S) uma gram´atica livre de contexto tal que P consiste
das produ¸ c˜oes S → aB, S → abC, B → bc e C → c. Ent˜ao, forne¸ ca uma gram´atica livre
de contexto G

na FNC tal que L(G

) = L(G).
2. Seja G uma gram´atica livre de contexto na FNC. Ent˜ao, mostre que qualquer palavra
w ∈ L(G) ´e derivada a partir do s´ımbolo inicial de G com exatamente 2 [w[ − 1 passos
de deriva¸ c˜ao.
149
Cap´ıtulo 24
A Forma Normal de Greibach
24.1 Defini¸c˜ao
Defini¸ c˜ao 24.1. Uma GLC G = (N, Σ, P, S) est´ a na Forma Normal de Greibach (FNG) se, e
somente se, todas as produ¸ c˜oes de G s˜ ao da forma
A → aB
1
B
2
B
k
,
para algum k ∈ Z, com k ≥ 0, onde A, B
1
, . . . , B
k
∈ N e a ∈ Σ. Note que k = 0 ´e permitido, o
que implica que podemos ter produ¸ c˜oes da forma A → a.
Exemplo 24.1. A gram´ atica G = (¦S, A¦, ¦(, )¦, P, S), tal que o conjunto P consiste das
produ¸ c˜oes
S → (A [ (SA [ (AS [ (SAS,
A →)
est´ a na Forma Normal de Greibach. Note que a linguagem L(G) gerada por G ´e tamb´em
PARBAL (veja Exemplo 15.4).
Assim como uma gram´atica na FNC, uma gram´atica na FNG n˜ao possui produ¸ c˜oes nulas nem
produ¸ c˜oes unit´arias. Apesar disso, gram´aticas na FNG tamb´em s˜ao completamente gerais:
Teorema 24.1. Dada qualquer GLC G, h´a uma GLC G

na FNG tal que L(G

) = L(G) −¦ǫ¦.
Para provar o Teorema 24.1, n´os assumimos que a GLC G n˜ao possui produ¸ c˜oes nulas nem
produ¸ c˜oes unit´arias, e n´os utilizamos os lemas 24.1 e 24.2 a seguir. Nestes lemas, n´os nos
referimos a uma produ¸ c˜ao com a vari´avel A do lado esquerdo, isto ´e, A → α, para algum
α ∈ (N ∪ Σ)

, como produ¸ c˜ao-A.
150
Lema 24.1. Seja G = (N, Σ, P, S) uma GLC qualquer sem produ¸ c˜oes nulas ou unit´ arias.
Seja A → α
1

2
uma produ¸ c˜ao em P e seja B → β
1
[ β
2
[ [ β
k
o conjunto de todas as
produ¸ c˜oes-B em P. Seja G

= (N, Σ, P

, S) a GLC obtida a partir de G atrav´es da substitui¸c˜ao
da produ¸ c˜ao A → α
1

2
pelas produ¸ c˜oes A → α
1
β
1
α
2
[ α
1
β
2
α
2
[ [ α
1
β
k
α
2
. Ent˜ao, temos
que L(G) = L(G

).
Demonstra¸c˜ao. Note que L(G

) ⊆ L(G), pois se A → α
1
β
i
α
2
´e usada em uma deriva¸ c˜ao de
G

, ent˜ao A
1
−→
G
α
1

2
1
−→
G
α
1
β
i
α
2
pode ser usada em G. Para que L(G) ⊆ L(G

), note que
A → α
1

2
´e a ´ unica produ¸ c˜ao de G que n˜ao est´a em G

. Sempre que A → α
1

2
´e usada
para derivar uma senten¸ ca em L(G), o n˜ao-terminal B deve ser substitu´ıdo em algum passo
futuro pelo lado direito de uma produ¸ c˜ao da forma B → β
i
. Estes dois passos podem ser
substitu´ıdos pelo ´ unico passo A
1
−→
G

α
1
β
i
α
2
para produzir uma deriva¸ c˜ao da mesma palavra
usando as produ¸ c˜oes de G

apenas.
Lema 24.2. Seja G = (N, Σ, P, S) uma GLC qualquer sem produ¸ c˜oes nulas ou unit´ arias. Seja
A → Aα
1
[ Aα
2
[ [ Aα
r
o conjunto de produ¸ c˜oes-A de P nas quais o s´ımbolo mais ` a esquerda
do lado direito de cada produ¸ c˜ao ´e o pr´ oprio A. Sejam A → β
1
[ β
2
[ [ β
s
as produ¸ c˜oes-A
restantes. Seja G

= (N ∪ ¦B¦, Σ, P

, S) a GLC obtida pela adi¸ c˜ao do n˜ ao-terminal B e pela
substitui¸c˜ao de todas as produ¸ c˜oes-A da forma A → Aα
i
, para 1 ≤ i ≤ r, pelas produ¸ c˜oes
B → α
i
e B → α
i
B, e A → β
j
B, para 1 ≤ j ≤ s. Ent˜ao, L(G

) = L(G).
Demonstra¸c˜ao. Seja γ ∈ Σ

uma palavra em L(G) e seja S

−→
G
γ uma deriva¸ c˜ao de γ em G. Se
S

−→
G
γ n˜ao cont´em nenhuma produ¸ c˜ao da forma A → Aα
i
, ent˜ao S

−→
G

γ, pois toda produ¸ c˜ao
de P que n˜ao ´e da forma A → Aα
i
est´a em P

. Logo, vamos considerar o caso em que S

−→
G
γ
cont´em uma ou mais produ¸ c˜oes da forma A → Aα
i
. Note que cada A que surge na deriva¸ c˜ao
de γ deve ser eventualmente substitu´ıdo pelo lado direito de uma produ¸ c˜ao da forma A → Aα
i
ou da forma A → β
j
.
Agora, considere qualquer seq¨ uˆencia maximal de p produ¸ c˜oes da forma A → Aα
i
em S

−→
G
γ,
A
1
−→
G

i
1
, . . . , A
1
−→
G

i
p
,
onde p ∈ Z, com p ≥ 1, e 1 ≤ i
p
≤ r, tal que o n˜ao-terminal A no lado direito de A
1
−→
G

i
l
−1
seja substitu´ıdo, eventualmente, pelo lado direito de A
1
−→
G

i
l
, para todo i
l
, com 2 ≤ l ≤ p, e o
n˜ao-terminal A do lado direito de A
1
−→
G

i
p
seja substitu´ıdo pelo lado direito de uma produ¸ c˜ao
da forma A → β
j
, que n˜ao pode come¸ car com A, por defini¸ c˜ao. Note que a substitui¸ c˜ao do A
no lado direito de A
1
−→
G

i
p
pelo lado direito de uma produ¸ c˜ao da forma A → β
j
tem sempre
de ocorrer, pois γ ´e uma senten¸ ca.
151
N´os afirmamos que S

−→
G

γ. Para mostrar este fato, basta considerar a deriva¸ c˜ao S

−→
G
γ
acima e substituir cada seq¨ uˆencia maximal de p produ¸ c˜oes da forma A → Aα
i
em S

−→
G
γ,
pela seq¨ uˆencia
A
1
−→
G

β
j
B, B
1
−→
G

α
i
p
B, . . . , B
1
−→
G

α
i
1
.
Note que
A
1
−→
G

i
1
1
−→
G

i
2
α
i
1
1
−→
G
A
1
−→
G

i
p
α
i
2
α
i
1
1
−→
G
β
j
α
i
p
α
i
2
α
i
1
e
A
1
−→
G
β
j
B
1
−→
G
β
j
α
i
p
B
1
−→
G
A
1
−→
G
β
j
α
i
p
α
i
2
B
1
−→
G

β
j
α
i
p
α
i
2
α
i
1
.
Logo, S

−→
G

γ. Note tamb´em que a tranaforma¸ c˜ao inversa tamb´em pode ser feita, o que
implica que toda palavra em L(G

) tamb´em ´e uma palavra em L(G). Portanto, temos que
L(G

) = L(G).
N´os agora podemos provar o Teorema 24.1. Seja G
1
= (N
1
, Σ, P
1
, S) a GLC na FNC obtida
a partir de G. Pelo Teorema 23.1, sabemos que L(G
1
) = L(G) − ¦ǫ¦. N´os vamos mostrar
como obter uma GLC G

na FNG tal que L(G

) = L(G
1
), que ´e suficiente como prova do
Teorema 24.1.
Assuma que N
1
= ¦A
1
, A
2
, . . . , A
m
¦. N´os come¸ camos com N

= N
1
e P

= P
1
. O primeiro
passo de nossa demonstra¸ c˜ao modifica as produ¸ c˜oes de P

tal que se A
i
→ A
j
α pertence a
P

ent˜ao j > i. Come¸ cando com A
1
e procedendo at´e A
m
, usamos o seguinte procedimento
indutivo explicado a seguir.
Assuma que as produ¸ c˜oes tenham sido modificadas tal que, para todo 1 ≤ i < k, A
i
→ A
j
α
´e uma produ¸ c˜ao em P

se, e somente se, j > i. Ent˜ao, modificamos as produ¸ c˜oes-A
k
. Se
A
k
→ A
j
α ´e uma produ¸ c˜ao em P

com j < k, n´os geramos um novo conjunto de produ¸ c˜oes que
substitui o lado direito de A
k
→ A
j
α pelo lado direito das produ¸ c˜oes-A
j
usando o Lema 24.1.
Repetindo este processo, no m´aximo, k −1 vezes, para cada produ¸ c˜ao A
k
→ A
j
α, com j < k,
n´os obtemos produ¸ c˜oes da forma A
k
→ A
l
α, com l ≥ k. Em seguinda, n´os substitu´ımos as
produ¸ coes com l = k atrav´es da introdu¸ c˜ao de um novo n˜ao-terminal B
k
como explicado no
enunciado do Lema 24.2.
O resultado do passo anterior ´e um conjunto de produ¸ c˜oes da forma
A
i
→ A
j
α, j > i,
A
i
→ aγ, a ∈ Σ,
B
i
→ γ γ ∈ (N ∪ Σ ∪ ¦B
1
, . . . , B
i−1
¦)

.
Note que o s´ımbolo mais `a esquerda do lado direito de qualquer produ¸ c˜ao-A
m
deve ser um
terminal, pois m ´e o maior valor de i. O s´ımbolo mais `a esquerda do lado direito de qual-
quer produ¸ c˜ao-A
m−1
deve ser A
m
ou um terminal. Quando ele for A
m
, n´os podemos gerar
152
novas produ¸ c˜oes-A
m−1
substituindo A
m
pelo lado direito das produ¸ c˜oes-A
m
de acordo com o
Lema 24.1. Cada uma destas novas produ¸ c˜oes possui lado direito come¸ cando com um terminal.
Logo, podemos repetir o mesmo procedimento para A
m−2
, . . . , A
2
, A
1
, nesta ordem, at´e que
o lado direito de cada produ¸ c˜ao-A
i
comece com um terminal. O resultado ´e um conjunto de
produ¸ c˜oes da forma
A
i
→ aγ,
B
i
→ γ,
com a ∈ Σ e γ ∈ (N ∪ Σ ∪ ¦B
1
, . . . , B
i−1
¦)

. Note que o lado direito de cada B
i
pode come¸ car
com um n˜ao-terminal.
Como a gram´atica G est´a na FNC, a cadeia α de toda produ¸ c˜ao da forma A
k
→ A
k
α, que foi
substitu´ıda pelas produ¸ c˜oes B
k
→ α e B
k
→ αB
k
no procedimento acima, n˜ao pode ser vazia
ou come¸ car com algum B
j
. Logo, o lado direito de uma produ¸ c˜ao-B
j
n˜ao pode come¸ car com
um outro B
j
. Como conseq¨ uˆencia, todas as produ¸ c˜oes-B
j
possuem lados direitos que iniciam
com um terminal ou um n˜ao-terminal A
i
. Logo, uma aplica¸ c˜ao a mais do Lema 24.1 para cada
produ¸ c˜ao-B
j
completa a constru¸ c˜ao da gram´atica G

na FNG.
24.2 Exemplo
Exemplo 24.2. Vamos obter uma GLC na FNG a partir da gram´ atica
G = (¦A
1
, A
2
, A
3
¦, ¦a, b¦, P, A
1
),
onde P consiste das seguintes produ¸ c˜oes:
A
1
→ A
2
A
3
,
A
2
→ A
3
A
1
[ b,
A
3
→ A
1
A
2
[ a.
Desde que o lado direito das produ¸ c˜oes para A
1
e A
2
come¸cam com terminais ou n˜ ao-terminais
com ´ındices mais altos, n´ os aplicamos o Lema 24.1 apenas para A
3
→ A
1
A
2
, o que resulta
na substitui¸c˜ao de A
3
→ A
1
A
2
pela produ¸ c˜ao A
3
→ A
2
A
3
A
2
, e a substitui¸c˜ao desta pelas
produ¸ c˜oes A
3
→ A
3
A
1
A
3
A
2
e A
3
→ bA
3
A
2
. O conjunto de produ¸ c˜oes resultantes da aplica¸c˜ao
do Lema 24.1 ´e
A
1
→ A
2
A
3
,
A
2
→ A
3
A
1
[ b,
A
3
→ A
3
A
1
A
3
A
2
[ bA
3
A
2
[ a.
O pr´ oximo passo ´e aplicar o Lema 24.2 para substituir a produ¸ c˜ao A
3
→ A
3
A
1
A
3
A
2
. O s´ımbolo
B
3
´e introduzido, e a produ¸ c˜ao A
3
→ A
3
A
1
A
3
A
2
´e substitu´ıda pelas produ¸ c˜oes A
3
→ bA
3
A
2
B
3
,
153
A
3
→ aB
3
, B
3
→ A
1
A
3
A
2
, e B
3
→ A
1
A
3
A
2
B
3
. O conjunto de produ¸ c˜oes resultantes da
aplica¸c˜ao do Lema 24.2 ´e
A
1
→ A
2
A
3
,
A
2
→ A
3
A
1
[ b,
A
3
→ bA
3
A
2
B
3
[ aB
3
[ bA
3
A
2
[ a,
B
3
→ A
1
A
3
A
2
[ A
1
A
3
A
2
B
3
.
Agora, toda produ¸ c˜ao para A
3
possui lado direito que come¸ca com um terminal. As produ¸ c˜ oes-A
3
s˜ ao ent˜ ao usadas para substituir a produ¸ c˜ao A
2
→ A
3
A
1
por produ¸ coes cujo lado direito inicia
com um terminal. Por sua vez, as novas produ¸ c˜oes-A
2
s˜ ao usadas para substituir A
1
→ A
2
A
3
por produ¸ coes cujo lado direito inicia com um terminal. As substitui¸c˜oes s˜ ao realizadas de
acordo com o Lema 24.1. O conjunto de produ¸ c˜oes resultantes das substitui¸c˜oes mencionadas
acima ´e:
A
1
→ bA
3
A
2
B
3
A
1
A
3
[ aB
3
A
1
A
3
[ bA
3
A
2
A
1
A
3
[ aA
1
A
3
[ bA
3
,
A
2
→ bA
3
A
2
B
3
A
1
[ bA
3
A
2
A
1
[ aB
3
A
1
[ aA
1
[ b,
A
3
→ bA
3
A
2
B
3
[ bA
3
A
2
[ aB
3
[ a,
B
3
→ A
1
A
3
A
2
[ A
1
A
3
A
2
B
3
.
Finalmente, as produ¸ c˜oes B
3
→ A
1
A
3
A
2
e B
3
→ A
1
A
3
A
2
B
3
s˜ ao substitu´ıdas pelas produ¸ c˜oes
B
3
→ bA
3
A
2
B
3
A
1
A
3
A
3
A
2
,
B
3
→ aB
3
A
1
A
3
A
3
A
2
,
B
3
→ bA
3
A
2
A
1
A
3
A
3
A
2
,
B
3
→ aA
1
A
3
A
3
A
2
,
B
3
→ bA
3
A
3
A
2
,
B
3
→ bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
,
B
3
→ aB
3
A
1
A
3
A
3
A
2
B
3
,
B
3
→ bA
3
A
2
A
1
A
3
A
3
A
2
B
3
,
B
3
→ aA
1
A
3
A
3
A
2
B
3
,
B
3
→ bA
3
A
3
A
2
B
3
.
Agora, o lado direito de qualquer produ¸ c˜ao come¸ca com um terminal. O conjunto final de
produ¸ c˜oes ´e:
A
1
→ bA
3
A
2
B
3
A
1
A
3
[ aB
3
A
1
A
3
[ bA
3
A
2
A
1
A
3
[ aA
1
A
3
[ bA
3
,
A
2
→ bA
3
A
2
B
3
A
1
[ bA
3
A
2
A
1
[ aB
3
A
1
[ aA
1
[ b,
A
3
→ bA
3
A
2
B
3
[ bA
3
A
2
[ aB
3
[ a,
B
3
→ bA
3
A
2
B
3
A
1
A
3
A
3
A
2
[ aB
3
A
1
A
3
A
3
A
2
[ bA
3
A
2
A
1
A
3
A
3
A
2
[ aA
1
A
3
A
3
A
2
[ bA
3
A
3
A
2
[ bA
3
A
2
B
3
A
1
A
3
A
3
A
2
B
3
[ aB
3
A
1
A
3
A
3
A
2
B
3
[ bA
3
A
2
A
1
A
3
A
3
A
2
B
3
[ aA
1
A
3
A
3
A
2
B
3
[ bA
3
A
3
A
2
B
3
.
154
24.3 Exerc´ıcios
1. Seja G = (¦S
1
, S
2
¦, ¦a, b, c, d, e¦, P, S
1
) uma gram´atica livre de contexto tal que P consiste
das produ¸ c˜oes S
1
→ S
2
S
1
e, S
1
→ S
2
b, S
2
→ S
1
S
2
e S
2
→ c. Ent˜ao, forne¸ ca uma gram´atica
livre de contexto G
′′
na FNG tal que L(G
′′
) = L(G).
2. Seja G uma gram´atica livre de contexto na FNG. Ent˜ao, mostre que qualquer palavra
w ∈ L(G) ´e derivada a partir do s´ımbolo inicial de G com exatamente [w[ −1 passos de
deriva¸ c˜ao.
155
Cap´ıtulo 25
O Lema do Bombeamento para Linguagens
Livres de Contexto
25.1 O Lema do Bombeamento
H´a um lema do bombeamento para linguagens livres de contexto que se assemelha aquele para
linguagens regulares, pois seu contrapositivo pode ser usado da mesma forma para mostrar que
certas linguagens n˜ao s˜ao livres de contexto:
Teorema 25.1 (Lema do Bombeamento para LLC’s). Seja L qualquer linguagem livre de
contexto. Ent˜ao, existe um inteiro k, com k > 0, tal que qualquer palavra z ∈ L, com [z[ ≥ k,
pode ser escrita como z = uvwxy, onde vx ,= ǫ e [vwx[ ≤ k, e para todo inteiro i, com i ≥ 0,
uv
i
wx
i
y ∈ L.
Informalmente, para qualquer linguagem livre de contexto L, toda palavra de L que seja sufici-
entemente longa pode ser dividida em cinco partes tais que as trˆes partes do meio n˜ao s˜ao muito
longas, a segunda e a quarta partes n˜ao podem ser ambas nulas, e n˜ ao importa quantas c´opias
da segunda e da quarta partes forem “enchidas” simultaneamente, que a palavra resultante
ainda estar´a em L.
Note que a principal diferen¸ ca entre o Lema do Bombeamento para linguagens regulares e
o Lema do Bombeamento para LLC’s ´e que, no primeiro, a cadeia ´e “enchida” em apenas
uma de suas subcadeias, enquanto no segundo a cadeia ´e “enchida” simultaneamente em duas
subcadeias, x e v, separadas pela subcadeia w.
A id´eia por tr´as do Teorema 25.1 ´e que toda linguagem livre de contexto pode ser gerada por
uma gram´atica na FNC (exceto possivelmente pela palavra vazia) e, para uma gram´atica na
FNC, qualquer ´arvore sint´atica para uma cadeia muito longa deve possuir um caminho muito
longo e qualquer caminho muito longo deve possuir pelo menos duas ocorrˆencias de algum
n˜ao-terminal da gram´atica.
156
Como vimos no Cap´ıtulo 17, uma ´arvore sint´atica ou ´arvore de deriva¸ c˜ao de uma cadeia z com
respeito `a gram´atica G ´e uma ´arvore representando as produ¸ c˜oes aplicadas em uma deriva¸ c˜ao
de z a partir do s´ımbolo inicial S de G, independente da ordem de aplica¸ c˜ao dessas produc˜oes.
Por exemplo, considere a gram´atica G = (¦S, A, B, C¦, ¦a, b¦, P, S) na FNC, onde P consiste
das regras
S → AC [ AB, A → a, B → b, C → SB
e L(G) = ¦a
n
b
n
[ n ≥ 1¦. A seguir, temos uma ´arvore sint´atica para a cadeia a
4
b
4
gerada por
G:
S
ւ ց
A C
ւ ւ ց
a S B
ւ ց ց
A C b
ւ ւ ց
a S B
ւ ց ց
A C b
ւ ւ ց
a S B
ւ ց ց
A B b
ւ ց
b b
´
Arvores sint´aticas para palavras longas geradas por uma gram´atica na FNC devem possuir
caminhos longos, pois a ´arvore ´e bin´aria (j´a que o lado direito de cada produ¸ c˜ao possui no
m´aximo dois n˜ao-terminais ou um ´ unico terminal), o que significa que o n´ umero de s´ımbolos
pode, no m´aximo, dobrar quando passamos de um n´ıvel da ´arvore para o n´ıvel imediatamente
abaixo.
Para melhor visualizar a cadeia cuja deriva¸ c˜ao ´e representada por uma ´arvore sint´atica, n´os
duplicamos os terminais gerados em cada n´ıvel da ´arvore em todos os n´ıveis inferiores. Por
exemplo:
157
S
ւ ց
A B
ւ ւ ց
a S B
ւ ւ ց ց
a A C b
ւ ւ ւ ց ց
a a S B b
ւ ւ ւ ց ց ց
a a A C b b
ւ ւ ւ ւ ց ց ց
a a a S B b b
ւ ւ ւ ւ ց ց ց ց
a a a A B b b b
ւ ւ ւ ւ ց ց ց ց
a a a a b b b b
O n´ umero de s´ımbolos em cada n´ıvel ´e, no m´aximo, duas vezes maior do que o n´ umero de
s´ımbolos do n´ıvel imediatamente superior. Logo, no m´aximo, h´a um s´ımbolo no n´ıvel 1, dois
no n´ıvel 2, quatro no n´ıvel 3 e, em geral, 2
i−1
s´ımbolos no n´ıvel i. Ent˜ao, podemos afirmar que
para termos pelo menos 2
n+1
s´ımbolos no n´ıvel mais profundo da ´arvore, a ´arvore deve possuir
pelo menos altura igual a n +2, ou equivalentemente, pelo menos n +2 n´ıveis. Agora, estamos
prontos para uma prova do Teorema 25.1.
Demonstra¸c˜ao. Seja G uma gram´atica para L −¦ǫ¦ na FNC. Ent˜ao, considere k = 2
n+1
, onde
n ´e o n´ umero de n˜ao-terminais de G. Suponha que z ∈ L e que [z[ ≥ k. Pelo que vimos antes,
qualquer ´arvore sint´atica em G para z deve possuir altura pelo menos igual a n +2. Considere
o caminho mais longo da ´arvore da raiz at´e uma folha. (No exemplo acima, um dos caminhos
mais longos ´e o que vai de S at´e o terminal b mais `a esquerda). Este caminho tem comprimento
pelo menos n + 2 e, portanto, deve conter pelo menos n + 1 n˜ao-terminais. Pelo Princ´ıpio
da Casa de Pombos, pelo menos um n˜ao-terminal ocorre mais do que uma vez ao longo do
caminho. Considere o primeiro par de ocorrˆencias do mesmo terminal ao longo do caminho,
considerando o caminho de “baixo para cima”. No exemplo acima, n´os escolher´ıamos as duas
ocorrˆencias de S marcadas em negrito a seguir:
158
S
ւ ց
A B
ւ ւ ց
a S B
ւ ւ ց ց
a A C b
ւ ւ ւ ց ց
a a S B b
ւ ւ ւ ց ց ց
a a A C b b
ւ ւ ւ ւ ց ց ց
a a a S B b b
ւ ւ ւ ւ ց ց ց ց
a a a A B b b b
ւ ւ ւ ւ ց ց ց ց
a a a a b b b b
Denote por X o n˜ao-terminal com duas ocorrˆencias. Escreva z como uvwxy tal que w ´e a cadeia
de terminais gerada pela ocorrˆencia mais baixa de X e vwx ´e a cadeia gerada pela ocorrˆencia
de X imediatamente superior. Em nosso exemplo, X = S, w = ab ´e a cadeia gerada pela
ocorrˆencia mais baixa de S e vwx = aabb ´e a cadeia gerada pela ocorrˆencia de S imediatamente
superior:
S
ւ ց
A B
ւ ւ ց
a S B
ւ ւ ց ց
a A C b
ւ ւ ւ ց ց
a a S B b
ւ ւ ւ ց ց ց
a a A C b b
ւ ւ ւ ւ ց ց ց
a a a S B b b
ւ ւ ւ ւ ց ց ց ց
a a a A B b b b
ւ ւ ւ ւ ց ց ց ց
a a a a b b b b
. ¸¸ .
u
.¸¸.
v
. ¸¸ .
w
.¸¸.
x
. ¸¸ .
y
Logo, no nosso exemplo, n´os temos u = aa, v = a, w = ab, x = b e y = bb. Seja T
1
a
159
sub´arvore enraizada na ocorrˆencia de X imediatamente acima da ocorrˆencia mais baixa e seja
T
2
a sub´arvore enraizada na ocorrˆencia mais baixa de X. No nosso exemplo, as sub´arvores T
1
e T
2
s˜ao as seguintes:
S
ւ ց
A C
ւ ւ ց
T
1
a S B
ւ ւ ց ց
a A B b
ւ ւ ց ց
a a b b
.¸¸.
v
. ¸¸ .
w
.¸¸.
x
T
2
S
ւ ց
A B
ւ ց
a b
. ¸¸ .
w
Note que se removermos T
2
da ´arvore original e pusermos uma c´opia de T
1
em seu lugar,
obteremos uma ´arvore sint´atica v´alida para uv
2
wx
2
y. Da mesma forma, se removermos T
1
da ´arvore original e pusermos T
2
em seu lugar, obteremos uma ´arvore sint´ativa v´alida para
uv
0
wx
0
y = uwy:
S
ւ ց
A B
ւ ւ ց
a S B
ւ ւ ց ց
a A C b
ւ ւ ւ ց ց
a a S B b
ւ ւ ւ ց ց ց
a a A C b b
ւ ւ ւ ւ ց ց ց
a a a S B b b
ւ ւ ւ ւ ց ց ց ց
a a a A C b b b
ւ ւ ւ ւ ւ ց ց ց ց
a a a a S B b b b
. ¸¸ .
u
.¸¸.
v
ւ ւ ց ց
.¸¸.
x
. ¸¸ .
y
a A B b
ւ ւ ց ց
a a b b
.¸¸.
v
. ¸¸ .
w
.¸¸.
x
160
S
ւ ց
A B
ւ ւ ց
a S B
ւ ւ ց ց
a A C b
ւ ւ ւ ց ց
a a S B b
ւ ւ ւ ց ց ց
a a A B b b
ւ ւ ւ ց ց ց
a a a b b b
ւ ւ
. ¸¸ .
w
ց ց
a a b b
ւ ւ ց ց
a a b b
. ¸¸ .
u
. ¸¸ .
y
Note que vx ,= ǫ, pois v e x s˜ao geradas pelos dois n˜ao-terminais do lado direito da produ¸ c˜ao
que substitui a ocorrˆencia de X imediatamente superior `a ocorrˆencia mais baixa de X na ´arvore
sint´atica. Apenas um dos dois n˜ao-terminais do lado direito de tal produ¸ c˜ao (ou nenhum deles)
pode ser a raiz de T
2
, o que implica que certamente pelo menos uma das cadeias v e x deve ser
n˜ao vazia.
Note tamb´em que [vwx[ ≤ k, pois n´os escolhemos a primeira repeti¸ c˜ao de um n˜ao-terminal lendo
o caminho mais longo da ´arvore de baixo para cima. Isto implica que certamente encontraremos
uma repeti¸ c˜ao at´e atingirmos a (n + 2)-´esimo s´ımbolo do caminho, em um percurso de baixo
para cima. Logo, tal repeti¸ c˜ao ´e a raiz de uma sub´arvore (a ´arvore T
1
) com altura, no m´aximo,
n + 2, o que implica que ela pode ter, no m´aximo, 2
n+1
terminais. Como k = 2
n+1
, n´os temos
que [vwx[ ≤ k.
25.2 Aplicando o Lema do Bombeamento
O Lema do Bombeamento para linguagens livres de contexto ´e mais frequentemente aplicado
para mostrar que certas linguagens n˜ao s˜ao livres de contexto. Mas, para tal, n´os usamos a
forma contrapositiva do Teorema 25.1:
Teorema 25.2 (Lema do Bombeamento para LLC’s, Contrapositivo). Seja L qualquer lingua-
gem sobre um dado alfabeto Σ. Se L ´e tal que, para todo inteiro k > 0, h´a um inteiro n˜ ao-
negativo i e uma palavra z ∈ L, com [z[ ≥ k, tal que para todas as subcadeias u, v, w, x, y ∈ Σ

,
161
com uvwxy = z e vx ,= ǫ, n´ os temos que uv
i
wx
i
y ,∈ L, ent˜ ao L n˜ ao ´e uma linguagem livre de
contexto.
Exemplo 25.1. Vamos usar o Teorema 25.2 para mostrar que a linguagem
L
1
= ¦a
n
b
n
a
n
[ n ∈ Z, n ≥ 0¦
n˜ ao ´e livre de contexto. N´os podemos aplicar o Teorema 25.2 como se estiv´essemos jogando
contra um advers´ ario que aposta que a linguagem L
1
´e livre de contexto. O advers´ ario escolhe
o inteiro positivo k do teorema. N´os escolhemos a palavra z tal que z ∈ L
1
e [z[ ≥ k. N´os
escolhemos a palavra z = a
k
b
k
a
k
que pertence a L
1
e possui comprimento 3k, que ´e maior do
que k. O advers´ ario escolhe as cadeias u, v, w, x, y ∈ ¦a, b¦

tais que uvwxy = z, vx ,= ǫ e
[vwx[ ≤ k. Agora, n´ os precisamos escolher um inteiro n˜ ao-negativo i tal que uv
i
wx
i
y ,∈ L
1
para qualquer que sejam as escolhas de u, v, w, x, y do advers´ ario. N´os escolhemos i = 2, pois
uv
2
wx
2
y ,∈ L
1
. Para provar nossa afirma¸c˜ao, n´ os levamos em conta que vx ,= ǫ e consideramos
os seguintes casos:
1. Uma das cadeias v e x possui pelo menos um a e pelo menos um b, o que implica que
uv
2
wx
2
y n˜ ao pode ser da forma a

b

a

e, portanto, uv
2
wx
2
y ,∈ L
1
neste caso.
2. Ambas as cadeias v e x s˜ ao constitu´ıdas de letras a apenas, o que implica que o n´ umero
de a’s em uv
2
wx
2
y ´e maior do que o dobro do n´ umero de b’s e, portanto, uv
2
wx
2
y ,∈ L
1
neste caso.
3. Ambas as cadeias v e x s˜ ao constitu´ıdas de letras b apenas, o que implica que o n´ umero
de b’s em uv
2
wx
2
y ´e maior do que a metade do n´ umero de a’s e, portanto, uv
2
wx
2
y ,∈ L
1
neste caso.
4. A cadeia v ´e constitu´ıda de letras a apenas e a cadeia x ´e constitu´ıda de letras b apenas,
ou vice-versa, o que implica que uv
2
wx
2
y ´e da forma a
l
b
m
a
n
ou a
n
b
l
a
m
, onde l ,= n e
m ,= l ou m ,= n, e portanto uv
2
wx
2
y ,∈ L
1
neste caso.
Como todos as possibilidades para v e x, com vx ,= ǫ, foram consideradas acima, temos que
uv
2
wx
2
y ,∈ L
1
.
Exemplo 25.2. Vamos usar o Teorema 25.2 para mostrar que a linguagem
L
2
= ¦a
n
[ n ´e primo¦
n˜ ao ´e livre de contexto. Seja k o inteiro positivo escolhido pelo advers´ ario. Seja p o menor
primo maior do que k+1 e considere a palavra z = a
p
. Note que z ∈ L
2
e [z[ = p > (k+1) > k.
O advers´ ario escolhe subcadeias u, v, w, x, y ∈ ¦a¦

tais que uvwxy = z, vx ,= ǫ e [vwx[ ≤ k.
Note que, para qualquer escolha do advers´ ario, temos que vx = a
q
, uwy = a
r
, onde q e r s˜ ao
inteiros tais que 0 < q ≤ [vwx[ ≤ k, 1 < r e q + r = p. O fato r > 1 ´e uma conseq¨ uˆencia de
q ≤ k, (k + 1) < p e r = p −q. Tudo que precisamos ´e encontrar um inteiro n˜ ao-negativo i tal
que uv
i
wx
i
y ,∈ L
2
, ou seja, q i + r n˜ ao seja primo. Como r > 1, se escolhermos i = r, temos
q i + r = (q + 1) r, que ´e um n´ umero composto, pois tanto (q + 1) quanto r > 1 s˜ ao maiores
do que 1.
162
25.3 Exerc´ıcios
1. Seja
L
5
= ¦x ∈ ¦0, 1, 2¦

[ ∃w ∈ ¦0, 1¦

tal que x = w2w¦.
Mostre que L
5
n˜ao ´e livre de contexto.
2. Seja
L
6
= ¦x ∈ ¦0, 1¦

[ ∃w ∈ ¦0, 1¦

tal que x = ww¦.
Mostre que L
6
n˜ao ´e livre de contexto.
3. Seja
L
7
= ¦x ∈ ¦a¦

[ ∃n ∈ Z tal que [x[ = 2
n
¦.
Mostre que L
7
n˜ao ´e livre de contexto.
4. Seja
L
8
= ¦x ∈ ¦a¦

[ ∃n ∈ Z tal que [x[ = n
2
¦.
Mostre que L
8
n˜ao ´e livre de contexto.
5. H´a certas linguagens que n˜ao s˜ao livres de contexto para as quais o Lema do Bombeamento
n˜ao pode ser usado para mostrar que a linguagem n˜ao ´e livre de contexto. Neste caso, o
que precisamos ´e uma vers˜ao mais poderosa do Lema do Bombeamento, conhecido como
Lema de Ogden:
Seja L uma linguagem livre de contexto. Ent˜ao, h´a um inteiro positivo k tal que se z ´e
uma palavra de L, com [z[ ≥ k, e n´os marcarmos quaisquer k letras de z, ent˜ao existem
palavras u, v, w, x, y tais que z = uvwxy, vx possui pelo menos uma letra marcada, vwx
possui, no m´aximo, k posi¸ c˜oes marcadas e, para todo inteiro n˜ao-negativo i, a palavra
uv
i
wx
i
y ∈ L.
Agora, resolva os seguintes problemas:
(a) Mostre que o Lema do Bombeamento n˜ao pode ser utilizado para mostrar que a
linguagem
L
9
= ¦a
i
b
j
c
m
d
n
[ i, j, m, n ∈ Z, i, j, m, n ≥ 0, ou i = 0 ou j = m = n¦
n˜ao ´e regular. Dica: Note que z ´e da forma b
j
c
m
d
n
ou da forma aa

b
j
c
j
d
j
. Em cada
caso, escolha o inteiro positivo k e as subcadeias u, v, w, x e y, tais que vx ,= ǫ e
[vwx[ ≤ k, e mostre que, para qualquer inteiro n˜ao-negativo i, a palavra uv
i
wx
i
y
pertence a L
9
. Finalmente, explique o porquˆe disto implicar no fato do contrapositivo
do Lema do Bombeamento n˜ao poder ser usado para mostrar que L
9
n˜ao ´e livre de
contexto.
(b) Escreva a forma contrapositiva do Lema de Ogden.
(c) Use o contrapositivo do Lema de Ogden para mostrar que L
9
n˜ao ´e livre de contexto.
163
6. Mostre que a linguagem
L
10
= ¦a
l
b
m
c
n
[ l, m, n ∈ Z, l, m, n ≥ 0, (l ,= m) e (m ,= n)¦
n˜ao ´e livre de contexto.
7. Considere a linguagem
L = ¦a, b¦

−¦x ∈ ¦a, b¦

[ ∃w ∈ ¦a, b¦

tal que x = ww¦.
Forne¸ ca uma gram´atica livre de contexto para L.
8. Mostre que as linguagens livres de contexto n˜ao s˜ao fechadas em rela¸ c˜ao `a opera¸ c˜ao de
interser¸ c˜ao; isto ´e, se L
1
e L
2
s˜ao quaisquer duas linguagens livres de contexto, ent˜ao
L
1
∩ L
2
n˜ao ´e necessariamente livre de contexto.
9. Mostre que as linguagens livres de contexto n˜ao s˜ao fechadas em rela¸ c˜ao `a opera¸ c˜ao de
complemento; isto ´e, se L ´e uma linguagem livre de contexto qualquer, ent˜ao L n˜ao ´e
necessariamente livre de contexto.
164
Cap´ıtulo 26
Algoritmos de Decis˜ao para Linguagens Livres
de Contexto
Neste cap´ıtulo, n´os estudaremos algoritmos para trˆes problemas de decis˜ao sobre linguagens
livres de contexto, a saber: (1) dadas uma GLC G e uma palavra x ∈ Σ

, decida se x ∈ L(G);
(2) dada uma GLC G, decida se L(G) ´e a linguagem vazia; e (3) dada uma GLC G, decida se
L(G) ´e uma linguagem (in)finita.
26.1 O algoritmo CKY
O algoritmo descrito aqui para resolver o problem (1) ´e conhecido como o algoritmo CKY
1
. Este
algoritmo utiliza uma t´ecnica de desenvolvimento de algoritmos conhecida como programa¸c˜ao
dinˆamica e sua complexidade (de tempo) ´e da ordem de pn
3
, onde p ´e o n´ umero de produ¸ c˜oes
de G e n ´e o comprimento de x.
N´os ilustramos a descri¸ c˜ao do algoritmo CKY atrav´es de um exemplo. Considere a GLC G na
FNC,
G = (¦S, A, B, C, D¦, ¦a, b¦, P, S),
onde P consiste das regras S → AB [ BA [ SS [ AC [ BD, A → a, B → b, C → SB e
D → SA.
N´os executaremos o algoritmo com a palavra de entrada x = aabbab. Seja n o comprimento da
palavra (aqui, n = 6). Desenhe n + 1 linhas verticais separando as letras de x e as numere de
0 a n:
[ a [ a [ b [ b [ a [ b [
0 1 2 3 4 5 6
1
Abrevia¸ c˜ao para Cocke, Kasami e Younger, os trˆes inventores do algoritmo, que trabalharam de forma
independente e chegaram ao mesmo algoritmo!
165
Para 0 ≤ i < j ≤ n, denote por x
ij
a subcadeia de x entre as linhas verticais i e j. No nosso
exemplo, x
1,4
= abb e x
2,6
= bbab. A palavra inteira x pode ser escrita como x
0,n
. Construa
uma tabela T com
_
n+1
2
_
entradas, uma para cada par i, j tal que 0 ≤ i < j ≤ n. No nosso
exemplo, temos
0
− 1
− − 2
− − − 3
− − − − 4
− − − − − 5
− − − − − − 6
A entrada (i, j) da tabela T, denotada por T
i,j
, refere-se `a subcadeia x
i,j
. N´os preencheremos
cada entrada T
i,j
com o conjunto de n˜ao-terminais de G que gera a subcadeia x
i,j
de x. Esta
informa¸ c˜ao ser´a produzida, de forma indutiva, das subcadeias mais curtas para as subcadeias
mais longas.
N´os come¸ camos com as subcadeias de comprimento 1. Estas s˜ao as subcadeias de x da forma
x
i,i+1
para 0 ≤ i < n e correspondem as entradas da diagonal da tabela. Para cada subcadeia
x
i,i+1
= c, se existir uma produ¸ c˜ao (X → c) ∈ P, n´os inclu´ımos o n˜ao-terminal X na entrada
T
i,i+1
. No nosso exemplo, temos:
0
A 1
− A 2
− − B 3
− − − B 4
− − − − A 5
− − − − − B 6
Note que B ´e inclu´ıdo em T
3,4
porque x
3,4
= b e (B → b) ´e uma produ¸ c˜ao em P. Em geral,
T
i,i+1
pode possuir v´arios n˜ao-terminais, pois pode haver muitas produ¸ c˜oes em P com c = x
i,i+1
do lado direito. Se este for o caso, n´os temos de incluir todos os n˜ao-terminais correspondentes
em T
i,i+1
.
Em seguida, n´os consideramos todas as subcadeias de x com comprimento 2; isto ´e, cada x
i,i+2
,
para 0 ≤ i < (n − 1). N´os dividimos cada x
i,i+2
em duas subcadeias, x
i,i+1
e x
i+1,i+2
, de
comprimento 1 e examinamos as entradas T
i,i+1
e T
i+1,i+2
correspondentes a estas subcadeias.
Estas entradas ocorrem exatamente acima e `a direita da entrada T
i,i+2
correspondente a x
i,i+2
.
Em seguida, selecionamos um n˜ao-terminal de cada entrada, digamos X de T
i,i+1
e Y de T
i+1,i+2
,
e procuramos em P uma produ¸ c˜ao da forma Z → XY . Da´ı, para cada produ¸ c˜ao da forma
Z → XY em P, se alguma, n´os inclu´ımos Z em T
i,i+2
. N´os repetimos este procedimento para
cada X ∈ T
i,i+1
e Y ∈ T
i+1,i+2
.
166
No nosso exemplo, para x
0,2
= aa, n´os temos apenas A ∈ T
0,1
e A ∈ T
1,2
. Ent˜ao, procuramos
por uma produ¸ c˜ao em P com AA como lado direito. N˜ao existe nenhuma produ¸ c˜ao em P
com AA do lado direito. Logo, T
0,2
´e vazia e escrevemos ∅ na entrada de T correspondente a
T
0,2
para indicar este fato. Por outro lado, para x
1,3
, n´os encontramos A e B em T
1,2
e T
2,3
,
respectivamente. H´a uma ´ unica produ¸ c˜ao em P com AB do lado direito, S → AB. Ent˜ao,
inclu´ımos S em T
1,3
. Repetimos os passos acima para as subcadeias x
2,4
, x
3,5
e x
4,6
para obter
a tabela
0
A 1
∅ A 2
− S B 3
− − ∅ B 4
− − − S A 5
− − − − S B 6
Agora, consideramos as subcadeias de comprimento 3. Para cada uma dessas cadeias, h´a duas
maneiras de particion´a-las em uma subcadeia de comprimento 2 e outra de comprimento 1. Por
exemplo, x
0,3
= x
0,1
x
1,3
= x
0,2
x
2,3
. N´os consideramos as duas possibilidades. Para a primeira,
temos que A ∈ T
0,1
e S ∈ T
1,3
e, portanto, procuramos por uma produ¸ c˜ao em P cujo lado direito
´e AS. N˜ao h´a nenhuma produ¸ c˜ao em P com lado direito AS. Em seguida, consideramos T
0,2
e T
2,3
. Como T
0,2
= ∅, n´os n˜ao encontramos nenhum n˜ao-terminal que gere x
0,3
. Logo, n´os
podemos atribuir ∅ a T
0,3
.
Para x
1,4
= x
1,2
x
2,4
= x
1,3
x
3,4
, temos que A ∈ T
1,2
e T
2,4
= ∅. Logo, n˜ao h´a nada para
verificarmos aqui. Em seguida, consideramos T
1,3
e T
3,4
. Temos que S ∈ T
1,3
e B ∈ T
3,4
. Ent˜ao,
procuramos por uma produ¸ c˜ao em P cujo lado direito ´e SB e encontramos apenas C → SB.
Como resultado, inclu´ımos C em T
1,4
. N´os executamos os mesmos passos para preencher T
2,5
e
T
3,6
, e obtemos a seguinte tabela:
0
A 1
∅ A 2
∅ S B 3
− C ∅ B 4
− − ∅ S A 5
− − − C S B 6
Em seguida, consideramos as subcadeias de comprimento 4, x
0,4
, x
1,5
e x
2,6
, e preenchemos as
entradas T
0,4
, T
1,5
e T
2,6
. Depois, consideramos as subcadeias de comprimento 5, x
0,5
e x
1,6
,
e preenchemos as entradas T
0,5
e T
1,6
. Finalmente, consideramos x = x
0,6
e preenchemos a
entrada T
0,6
. A tabela constru´ıda pelo algoritmo CKY para o nosso exemplo ´e mostrada a
seguir:
167
0
A 1
∅ A 2
∅ S B 3
S C ∅ B 4
D S ∅ S A 5
S C ∅ C S B 6
O problema de decidir se x ∈ L(G) pode ser resolvido atrav´es da inspe¸ c˜ao da entrada T
0,n
da
tabela constru´ıda pelo algoritmo CKY. N´os podemos provar que
S

−→
G
x ⇐⇒ S ∈ T
0,n
.
Ent˜ao, a cadeia x = aabbab pertence a L(G), onde G ´e a gram´atica que usamos para ilustrar o
algoritmo, pois S ∈ T
0,6
.
Uma descri¸ c˜ao formal do algoritmo ´e dada a seguir:
para i ← 0 at´e n −1 fa¸ ca
T
i,i+1
← ∅
para cada (A → a) ∈ P fa¸ ca
se a = x
i,i+1
ent˜ao
T
i,i+1
← T
i,i+1
∪ ¦A¦
fimse
fimpara
fimpara
para m ← 2 at´e n fa¸ ca
para i ← 0 at´e n −m fa¸ ca
T
i,i+m
← ∅
para j ← i + 1 at´e i + m−1 fa¸ ca
para cada (A ← BC) ∈ P fa¸ ca
se B ∈ T
i,j
e C ∈ T
j,i+m
ent˜ao
T
i,i+m
← T
i,i+m
∪ ¦A¦
fimse
fimpara
fimpara
fimpara
fimpara
´
E f´acil verificar, a partir do pseudoc´odigo acima, que a complexidade do algoritmo CKY ´e
O(pn
3
), onde p ´e o n´ umero de produ¸ c˜oes em P e n ´e o comprimento da palavra x fornecida
como entrada.
H´a duas observa¸ c˜oes interessantes relacionadas ao problema de decis˜ao resolvido pelo algoritmo
CKY:
168
• N´os podemos decidir se x ∈ L(G) enumerando e testando todas as poss´ıveis deriva¸ c˜oes
de G de comprimento 2 [x[ − 1, j´a que G est´a na FNC. Entretanto, tal procedimento
pode gerar um n´ umero de deriva¸ c˜oes que seja exponencial em [x[, o que o torna invi´avel
na pr´atica.
• O problema de decidir se x ∈ L(G) ´e o mesmo problema resolvido por um compilador
(na verdade, um compilador faz mais do que resolver o problema de decis˜ao) quando x ´e
um programa e L(G) ´e a linguagem de todos os programas que podem ser gerados pela
gram´atica G. Entretanto, na pr´atica, as linguagens de programa¸ c˜ao s˜ ao linguagens livres
de contexto determin´ısticas, o que implica que elas s˜ao bem mais simples do que as demais
linguagens livres de contexto.
Se L(G) for uma linguagem livre de contexto determin´ıstica, ent˜ao o problema de decidir
se x ∈ L(G) pode ser resolvido por um algoritmo mais eficiente do que o CKY, como vocˆe
ver´a na disciplina de Compiladores. Infelizmente, esses algoritmos mais eficientes do que
o algoritmo CKY n˜ao podem ser usados se L(G) n˜ao for determin´ıstica, o que explica a
importˆancia do CKY.
26.2 A linguagem ´e vazia?
Seja G = (N, Σ, P, S) uma GLC qualquer. N´os queremos resolver o problema de decis˜ao abaixo:
L(G) = ∅?
Desta vez, n˜ao precisamos aprender nada de novo para resolver este problema, pois j´a sabemos
de tudo que precisamos. De fato, para decidir se L(G) ´e vazia, basta utilizar a primeira parte do
algoritmo do Cap´ıtulo 22; isto ´e, precisamos apenas encontrar o conjunto Φ dos n˜ao-terminais
“geradores” de G. Se S ∈ Φ ent˜ao temos que L(G) ,= ∅. Por outro lado, se S ,∈ Φ ent˜ao temos
que L(G) = ∅.
26.3 A linguagem ´e finita?
Seja G = (N, Σ, P, S) uma GLC qualquer. N´os queremos decidir se L(G) ´e finita. Aqui,
descreveremos um algoritmo para este problema e provaremos que o alggoritmo descrito est´a
correto.
Vamos assumir que G n˜ao possui s´ımbolos e produ¸ c˜oes in´ uteis, assim como produ¸ c˜oes nulas e
unit´arias. Caso contr´ario, sabemos que podemos gerar uma gram´atica G

, equivalente a G (a
menos da palavra vazia), que satisfaz nossa hip´otese. Em todo caso, note que L(G) ´e finita se, e
somente se, L(G

) ´e finita. Logo, nossa hip´otese ´e geral e, portanto, sem perda de generalidade,
assumimos que G a satisfaz.
169
Suponha que G possua um n˜ao-terminal, A, que aparece em uma deriva¸ c˜ao a partir de A; isto
´e, suponha que
A

−→
G
xAy
para algum A ∈ N e x, y ∈ Σ

, com xy ,= ǫ, pois G n˜ao possui produ¸ c˜oes unit´arias nem
nulas, por hip´otese. Como todos os n˜ao-terminais de G s˜ao geradores e G n˜ao possui produ¸ c˜oes
in´ uteis, sabemos que
S

−→
G
uAv

−→
G
w
e
A

−→
G
z ,
onde u, v e z est˜ao em Σ

. Ent˜ao,
S

−→
G
uAv

−→
G
ux
n
Ay
n
v

−→
G
ux
n
zy
n
v
´e uma deriva¸ c˜ao poss´ıvel para todo inteiro n˜ao-negativo n, o que implica que L(G) ´e infinita.
Agora, suponha que G n˜ao possua nenhum n˜ao-terminal , A, que aparece em uma deriva¸ c˜ao a
partir de A. Mas, se este for mesmo o caso, nenhum n˜ao-terminal pode aparecer mais de uma
vez em qualquer deriva¸ c˜ao a partir de qualquer n˜ao-terminal de G. Logo, qualquer deriva¸ c˜ao
de G possui, no m´aximo, um n´ umero de passos igual a 2 ([N[ −1). Por sua vez, isto implica
que G s´o pode gerar um n´ umero finito de cadeias e, conseq¨ uentemente, L(G) dever ser uma
linguagem finita.
Os fatos que inferimos acima sugerem que podemos decidir se L(G) ´e finita se pudermos decidir
se G possui um n˜ao-terminal, A, que aparece em uma deriva¸ c˜ao a partir de A. Felizmente, o
segundo problema de decis˜ao pode ser resolvido de forma bastante simples usando um digrafo de
dependˆencia para n˜ao-terminais. Isto ´e, definimos um digrafo em que N ´e o conjunto de v´ertices
e o conjunto de arestas ´e tal que (A, B) ´e uma aresta do digrafo, com A, B ∈ N, se, e somente
se, existir uma produ¸ c˜ao A → xBy em P, com x, y ∈ (N ∪ Σ)

. Em seguida, procuramos por
um “ciclo” no digrafo. Se tal ciclo existir ent˜ao G possui um n˜ao-terminal, A, que aparece
em uma deriva¸ c˜ao a partir de A. Caso contr´ario, G n˜ao possui nenhum n˜ao-terminal, A, que
aparece em uma deriva¸ c˜ao a partir de A.
26.4 Outros problemas de decis˜ao
Existem alguns problemas de decis˜ao acerca de linguagens livres de contexto que n˜ao parecem
ser muito mais dif´ıceis do que os trˆes problemas que estudamos antes, mas que de fato n˜ao
podem ser resolvidos por um “algoritmo”. Um exemplo cl´assico ´e o problema de decidir se
duas gram´aticas dadas s˜ao equivalentes. Mais tarde, neste curso, n´os formalizaremos a no¸ c˜ao
intuitiva que temos de algoritmo e o que queremos dizer por “um problema n˜ao poder ser
resolvido por um algoritmo”.
170
26.5 Exerc´ıcios
1. Seja G = (¦S, A, B¦, ¦a, b¦, P, S) uma gram´atica livre de contexto tal que P = ¦S →
AB, A → a, B → AB [ b¦. Execute o algoritmo CKY para a entrada aab e mostre o
preechimento da tabela usada pelo algoritmo.
2. Dados uma GLC G = (N, Σ, P, S) e um AFD M = (Q, Σ, δ, s, F), descreva um algoritmo
para decidir se L(G) ⊆ L(M).
171
Cap´ıtulo 27
Propriedades de Fechamento das Linguagens
Livres de Contexto
27.1 Considera¸c˜oes iniciais
No Cap´ıtulo 6, vimos que a classe das linguagens regulares definidas sobre qualquer alfabeto Σ ´e
fechada em rela¸ c˜ao a v´arias opera¸ c˜oes, tais como uni˜ao, interse¸ c˜ao, complemento, concatena¸ c˜ao
e

. Aqui, estamos interessados em verificar sobre quais dessas opera¸ c˜oes a classe das linguagens
livres de contexto definidas sobre qualquer alfabeto Σ s˜ao fechadas. Como veremos mais adiante,
as LLCs n˜ao fechadas em rela¸ c˜ao `as mesmas opera¸ c˜oes sobre as quais as linguagens regulares
s˜ao e nem sempre essa verifica¸ c˜ao ser´a t˜ao f´acil como ela foi no caso da classe das linguagens
regulares.
27.2 Fechamento sob uni˜ao
Teorema 27.1. Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer sobre o alfabeto
Σ. Ent˜ao, L
1
∪ L
2
´e livre de contexto.
Demonstra¸c˜ao. Suponha que L
1
= L(G
1
) e L
2
= L(G
2
), onde G
1
= (N
1
, Σ, P
1
, S
1
) e G
2
=
(N
2
, Σ, P
2
, S
2
) s˜ao duas gram´aticas livres de contexto. Sem perda de generalidade, assuma que
os conjuntos N
1
e N
2
s˜ao disjuntos. Ent˜ao, considere a linguagem L(G
3
) gerada pela gram´atica
G
3
= (N
1
∪ N
2
∪ ¦S
3
¦, Σ, P
3
, S
3
) ,
onde
P
3
= ¦S
3
→ S
1
[S
2
¦ ∪ P
1
∪ P
2
e
S
3
,∈ (N
1
∪ N
2
) .
172
Obviamente, G
3
´e uma gram´atica livre de contexto. Logo, L(G
3
) ´e uma linguagem livre de
contexto.
Agora, vamos mostrar que L(G
3
) = L(G
1
) ∪ L(G
2
).
Suponha que w ∈ L(G
3
). Ent˜ao, pela defini¸ c˜ao de G
3
, temos que
S
3
1
−→
G
3
S
1
ou S
3
1
−→
G
3
S
2
deve ser o primeiro passo de deriva¸ c˜ao. Como as formas sentenciais derivadas a partir de S
1
possuem n˜ao-terminais em N
1
apenas e (N
1
∩ N
2
) = ∅, se
S
3
1
−→
G
3
S
1

−→
G
3
w
ent˜ao
S
1

−→
G
3
w
s´o pode envolver produ¸ c˜oes que est˜ao em P
1
. Portanto, S
1

−→
G
1
w, o que implica que w ∈ L(G
1
).
Usando o mesmo argumento, se
S
3
1
−→
G
3
S
2

−→
G
3
w
ent˜ao
S
2

−→
G
2
w
e, conseq¨ uentemente, w ∈ L(G
2
). Logo, podemos concluir que L(G
3
) ⊆ (L(G
1
) ∪ L(G
2
)).
Agora, suponha que w ∈ (L(G
1
) ∪ L(G
2
)). Ent˜ao, w ∈ L(G
1
) ou w ∈ L(G
2
). Mas, se
w ∈ L(G
1
) ent˜ao S
1

−→
G
1
w. Como P
1
⊆ P
3
, podemos concluir que S
1

−→
G
3
w, o que implica que
S
3
1
−→
G
3
S
1

−→
G
3
w e, portanto, w ∈ L(G
3
). Usando um argumento similar, podemos concluir
que se w ∈ L(G
2
) ent˜ao w ∈ L(G
3
). Logo, (L(G
1
) ∪ L(G
2
)) ⊆ L(G
3
), e nossa afirma¸ c˜ao segue
imediatamente.
27.3 Fechamento sob concatena¸c˜ao
Teorema 27.2. Sejam L
1
e L
2
duas linguagens livres de contexto quaisquer sobre o alfabeto
Σ. Ent˜ao, L
1
L
2
´e livre de contexto.
Demonstra¸c˜ao. Suponha que L
1
= L(G
1
) e L
2
= L(G
2
), onde G
1
= (N
1
, Σ, P
1
, S
1
) e G
2
=
(N
2
, Σ, P
2
, S
2
) s˜ao duas gram´aticas livres de contexto. Sem perda de generalidade, assuma que
os conjuntos N
1
e N
2
s˜ao disjuntos. Ent˜ao, considere a linguagem L(G
4
) gerada pela gram´atica
G
4
= (N
1
∪ N
2
∪ ¦S
4
¦, Σ, P
4
, S
4
) ,
173
onde
P
4
= ¦S
4
→ S
1
S
2
¦ ∪ P
1
∪ P
2
e
S
4
,∈ (N
1
∪ N
2
) .
Obviamente, G
4
´e uma gram´atica livre de contexto. Logo, L(G
4
) ´e uma linguagem livre de
contexto.
Agora, vamos mostrar que L(G
4
) = L(G
1
)L(G
2
).
Suponha que w ∈ L(G
4
). Ent˜ao,
S
4

−→
G
4
w
e, pela defini¸ c˜ao de G
4
,
S
4
1
−→
G
4
S
1
S
2
deve ser o primeiro passo de deriva¸ c˜ao. Logo, podemos escrever w = xy, onde
S
1

−→
G
4
x e S
2

−→
G
4
y .
Mas, como as formas sentenciais derivadas a partir de S
1
(resp. S
2
) possuem n˜ao-terminais em
N
1
(resp. N
2
) apenas e (N
1
∩ N
2
) = ∅, podemos concluir que
S
1

−→
G
1
x e S
2

−→
G
2
y .
Logo, x ∈ L(G
1
) e y ∈ L(G
2
), o que implica que w = xy ∈ L(G
1
)L(G
2
) e, portanto, temos que
L(G
4
) ⊆ L(G
1
)L(G
2
).
Agora, suponha que w ∈ L(G
1
)L(G
2
). Ent˜ao, podemos escrever w = xy, onde
S
1

−→
G
1
x e S
2

−→
G
2
y .
Como P
1
⊆ P
4
e P
2
⊆ P
4
, temos que
S
1

−→
G
4
x e S
2

−→
G
4
y ,
o que implica que
S
4
1
−→
G
4
S
1
S
2

−→
G
4
xy = w.
Logo, w ∈ L(G
4
) e, portanto, L(G
1
)L(G
2
) ⊆ L(G
4
) e nossa afirma¸ c˜ao segue imediatamente.
27.4 Fechamento sob

Teorema 27.3. Seja L uma linguagem livre de contexto qualquer sobre o alfabeto Σ. Ent˜ao,
L

´e livre de contexto.
174
Demonstra¸c˜ao. Suponha que L = L(G), onde G = (N, Σ, P, S) ´e uma gram´atica livre de
contexto. Ent˜ao, considere a linguagem L(G
5
) gerada pela gram´atica
G
5
= (N ∪ ¦S
5
¦, Σ, P
5
, S
5
) ,
onde
P
5
= ¦S
5
→ SS
5
[ǫ¦ ∪ P
e
S
5
,∈ N .
Obviamente, G
5
´e uma gram´atica livre de contexto. Logo, L(G
5
) ´e uma linguagem livre de
contexto.
Agora, vamos mostrar que L(G
5
) = L(G)

.
Suponha que w ∈ L(G
5
). Se w = ǫ ent˜ao w ∈ L(G)

, pela defini¸ c˜ao de

. Logo, vamos assumir
que w ,= ǫ. Ent˜ao, S
5

−→
G
5
w. Considere uma deriva¸ c˜ao mais `a direita de w: S
5

−→
G
5
,d
w. Como
S
5
→ SS
5
[ ǫ s˜ao as ´ unicas regras envolvendo o n˜ao-terminal S
5
, o primeiro passo de qualquer
deriva¸ c˜ao (mais `a direita ou n˜ao) de uma cadeia w ,= ǫ a partir de S
5
deve, necessariamente,
ser
S
5
1
−→
G
5
,d
SS
5
,
Al´em disso, antes de qualquer s´ımbolo de w ser gerado, toda forma sentencial gerada a partir
de S
5
por uma deriva¸ c˜ao mais `a direita deve ser da forma
αS
n
S
5
ou S
n
,
para algum inteiro positivo n. Ent˜ao, se S
5

−→
G
5
,d
w, temos que
S
5
1
−→
G
5
,d
SS
5
n−1
−→
G
5
,d
S
n
S
5
1
−→
G
5
,d
S
n

−→
G
5
,d
w,
para algum inteiro positivo n. Logo, w ∈ L(G)
n
e, como L(G)
n
⊆ L(G)

, temos que w ∈ L(G)

e, portanto, L(G
5
) ⊆ L(G)

.
Suponha agora que w ∈ L(G)

. Se w = ǫ ent˜ao w ∈ L(G
5
), pois S
5
→ ǫ ´e uma produ¸ c˜ao de G
5
.
Logo, considere o caso w ,= ǫ. Pela defini¸ c˜ao de

, existe um inteiro positivo n tal que w ∈ L(G)
n
.
Ent˜ao, podemos escrever w = w
1
w
2
w
n
, com w
i
∈ L(G), para todo i ∈ ¦1, . . . , n¦. Mas, se
w
i
∈ L(G) ent˜ao
S

−→
G
w
i
.
Como P ⊆ P
5
, temos que
S

−→
G
5
w
i
.
Logo,
S
5
n−1
−→
G
5
S
n
S
5

−→
G
5
w
1
w
2
w
n
S
5
1
−→
G
5
w
1
w
2
w
n
= w,
o que implica que w ∈ L(G
5
). Ent˜ao, L(G)

⊆ L(G
5
) e nossa afirma¸ c˜ao segue imediatamente.
175
27.5 Interse¸ c˜ao e complemento
A classe das linguagens livres de contexto sobre um alfabeto qualquer Σ n˜ao ´e necessariamente
fechada em rela¸ c˜ao `a opera¸ c˜ao de interse¸ c˜ao. Uma prova deste fato pode ser facilmente obtida
com o seguinte contra-exemplo:
Sejam L
1
e L
2
as linguagens livres de contexto
L
1
= ¦a
n
b
n
c
m
[ n, m ∈ Z, n ≥ 0, m ≥ 0¦ e L
2
= ¦a
n
b
m
c
m
[ n, m ∈ Z, n ≥ 0, m ≥ 0¦ .
N´os podemos mostrar que ambas as linguagens s˜ao geradas pelas gram´aticas
G
1
(¦S, S
1
, S
2
¦, ¦a, b, c¦, ¦S → S
1
S
2
, S
1
→ aS
1
b [ ǫ, S
2
→ cS
2
[ ǫ¦, S)
e
G
2
(¦S, S
1
, S
2
¦, ¦a, b, c¦, ¦S → S
1
S
2
, S
1
→ aS
1
[ ǫ, S
2
→ bS
2
c [ ǫ¦, S) ,
respectivamente. Basta notar que tanto L
1
quanto L
2
s˜ao concatena¸ c˜oes de duas linguagens
livres de contexto mais simples:
L
1
= ¦a
n
b
n
[ n ∈ Z, n ≥ 0¦ ¦c
m
[ m ∈ Z, m ≥ 0¦
e
L
2
= ¦a
m
[ m ∈ Z, m ≥ 0¦ ¦b
m
c
m
[ m ∈ Z, m ≥ 0¦ .
Logo, se provarmos que as linguagens mais simples s˜ao livres de contexto, o Teorema 27.2 pode
ser aplicado para obter o resultado que desejamos. No entanto, a interse¸ c˜ao, L
1
∩ L
2
, de L
1
e
L
2
,
L
1
∩ L
2
= ¦a
n
b
n
c
n
[ n ∈ Z, n ≥ 0¦ ,
n˜ao ´e livre de contexto. Isto pode ser facilmente verificado pelo Lema do Bombeamento. Logo, a
interse¸ c˜ao de duas linguagens livres de contexto n˜ao necessariamente resulta em uma linguagem
livre de contexto.
O que dizer sobre o complemento de uma linguagem livre de contexto? Suponha que a classe de
linguagens livres de contexto sobre um alfabeto qualquer Σ seja fechada em rela¸ c˜ao `a opera¸ c˜ao
de complemento. Ent˜ao, considere duas linguagens livres de contexto, L
1
e L
2
, sobre Σ. Como
L
1
∩ L
2
= L
1
∪ L
2
e como as linguagens livres de contexto s˜ao fechadas em rela¸ c˜ao `a uni˜ao, a linguagem
L
1
∪ L
2
deve ser livre de contexto tamb´em (j´a que assumimos que L
1
e L
2
s˜ao). Logo, como assumimos
que as linguagens livres de contexto s˜ao fechadas em rela¸ c˜ ao `a opera¸ c˜ao de complemento, a
linguagem
L
1
∪ L
2
176
tamb´em ´e livre de contexto. Mas, isto implica que a linguagem interse¸ c˜ao, L
1
∩ L
2
, tem de ser
livre de contexto. Como esta conclus˜ao tem de ser verdade para quaisquer linguagens livres de
contexto, L
1
e L
2
, definidas sobre qualquer alfabeto Σ, as linguagens livres de contexto devem
tamb´em ser fechadas em rela¸ c˜ao `a opera¸ c˜ao de interse¸ c˜ ao, o que acabamos de mostrar que n˜ao
´e o caso. Logo, atingimos uma contradi¸ c˜ao e, portanto, as linguagens livres de contexto sobre
um alfabeto qualquer Σ n˜ao podem ser fechadas em rela¸ c˜ao `a opera¸ c˜ao de complemento de
linguagens.
27.6 Exerc´ıcios
1. Sejam L uma linguagem livre de contexto e R uma linguagem regular. Ent˜ao, mostre que
L ∩ R ´e livre de contexto.
Dica: Assuma que L(G) = L−¦ǫ¦ para uma gram´atica livre de contexto G = (N, Σ, P, S)
na FNC e R = L(M) para um AFD M = (Q, Σ, δ, s, F). Construa uma gram´atica G
1
cujo
conjunto de n˜ao-terminais ´e (QN Q) ∪ ¦S
0
¦, onde S
0
,∈ (N ∪ Q), e cujas produ¸ c˜oes
s˜ao da forma
S
0
→ (q
0
, S, f),
para todo f ∈ F,
(p, A, δ(p, a)) → a ⇐⇒ (A → a) ∈ P,
para todo a ∈ Σ, todo A ∈ N e todo p ∈ Q,
(p, A, s) → (p, B, q)(q, C, s) ⇐⇒ (A → BC) ∈ P,
para todo p, q, s ∈ Q e todo A, B, C ∈ N,
S
0
→ ǫ ⇐⇒ ǫ ∈ L e s ∈ F.
Em seguida, mostre que, para todo p, q ∈ Q, todo A ∈ N, toda w ∈ Σ
+
, e todo inteiro
positivo n,
(p, A, q)
n
−→
G
1
,e
w ⇐⇒ A
n
−→
G,e
w e
ˆ
δ(p, w) = q.
Conclua que L(G
1
) = (L ∩ R).
2.
3. Seja Σ = ¦0, 1¦. Denote por x o complemento Booleano de x ∈ Σ

; isto ´e, x ´e a cadeia
obtida a partir de x atrav´es da troca de todos os 0’s de x por 1’s e todos os 1’s e x por
0’s. Denote por x
r
o reverso de x; isto ´e, a palavra x escrita da direita para a esquerda.
Agora, considere a linguagem
L = ¦x ∈ Σ

[ x
r
= x¦.
A linguagem L ´e livre de contexto? Se vocˆe achar que sim, forne¸ ca uma gram´atica livre
de contexto G tal que L(G) = L. Caso contr´ario, mostre que a linguagem L n˜ao ´e livre
de contexto.
177
4. Considere a seguinte proposi¸ c˜ao: para qualquer linguagem L sobre um alfabeto Σ, se L ´e
livre de contexto ent˜ ao a linguagem ¦xx ∈ Σ

[ x ∈ L¦ tamb´em ´e. Esta proposi¸ c˜ao ´e falsa
ou verdadeira? Se vocˆe acha que ela ´e falsa, forne¸ ca um contra-exemplo. Caso contr´ario,
prove-a.
5. Considere a seguinte proposi¸ c˜ao: para qualquer linguagem L sobre um alfabeto Σ, se L ´e
livre de contexto ent˜ ao a linguagem ¦x ∈ Σ

[ xx ∈ L¦ tamb´em ´e. Esta proposi¸ c˜ao ´e falsa
ou verdadeira? Se vocˆe acha que ela ´e falsa, forne¸ ca um contra-exemplo. Caso contr´ario,
prove-a.
6. Sejam Σ e Γ dois alfabetos. Dado qualquer homomorfismo de linguagem h : Σ

→ Γ

,
mostre que h
−1
(L) ´e uma linguagem livre de contexto, para qualquer linguagem livre de
contexto L ⊆ Γ

.
178
Cap´ıtulo 28
Autˆomatos de Pilha Determin´ısticos
28.1 Considera¸c˜oes iniciais
Gram´aticas livres de contexto s˜ao largamente utilizadas na modelagem da sintaxe de liguagens
de programa¸ c˜ao. Um compilador para uma liguagem de programa¸ c˜ao deve possuir um anali-
sador sint´atico (parser) que nada mais ´e do que um algoritmo para decidir se uma dada cadeia
pode ser gerada por uma dada gram´atica livre de contexto e, se puder, gerar a ´arvore sint´atica
para uma deriva¸ c˜ao desta cadeia.
Como vimos no Cap´ıtulo 26, o algoritmo CKY resolve o problema de decis˜ao do analisador
sint´atico. No entanto, embora o CKY seja polinomial no comprimento da cadeia x, ele ainda ´e
muito “lento” para ser utilizado, na pr´atica, para analisar a sintaxe de programas com dezenas
de milhares de instru¸ c˜oes.
Muitas abordagens eficientes para o problema de an´alise sint´ atica de programas de computador
tˆem sido desenvolvidas nas ´ ultimas d´ecadas. O mais interessante ´e que a abordagem de maior
sucesso tem sua origem na id´eia de um autˆomato de pilha. Afinal de contas, seria de se esperar
que a equivalˆencia entre APNDs e GLCs fosse ser utilizada para algum prop´osito pr´atico em
algum momento. No entanto, um APND n˜ao ´e de uso pr´atico imediato em an´alise sint´atica,
pois ele ´e um dispositivo n˜ ao-determin´ıstico. Uma pergunta natural ´e: podemos fazer com que
um APND opere de forma determin´ıstica?
A resposta ´e sim, mas ao contr´ario do que ocorre com os autˆomatos finitos, os autˆomatos de
pilha determin´ısticos n˜ao possuem o mesmo poder de representa¸ c˜ao dos autˆomatos de pilha
n˜ao-determin´ısticos.
Mais expecificamente, temos que
1. Toda linguagem regular ´e aceita por um autˆomato de pilha determin´ıstico.
2. H´a linguagens livres de contexto aceitas por autˆomatos de pilha determin´ısticos que n˜ao
179
s˜ao regulares. Logo, a classe de linguagens aceitas por um autˆomato de pilha deter-
min´ıstico inclui, propriamente, as linguagens regulares.
3. Toda linguagem reconhecida por um autˆomato de pilha determin´ıstico admite uma gra-
m´atica livre de contexto n˜ao-amb´ıgua. Logo, nem toda linguagem livre de contexto pode
ser reconhecida por um autˆomato de pilha, pois existem linguagens livres de contexto que
s˜ao inerentemente amb´ıguas.
4. Nem toda linguagem livre de contexto que n˜ao ´e inerentemente amb´ıgua pode ser aceita
por um autˆomato de pilha determin´ıstico. Logo, a classe de linguagens livres de con-
texto sobre um alfabeto Σ qualquer e aceitas por um autˆomato de pilha determin´ıstico ´e
um subconjunto pr´ oprio da classe de linguagens livres de contexto sobre Σ que n˜ao s˜ao
inerentemente amb´ıguas, e este subconjunto cont´em propriamente a classe de todas as
linguagens regulares sobre Σ.
Nesta aula, estudaremos em detalhes todos os fatos acima. Mas antes, ´e importante ressal-
tar que o fato 3 ilustra a importˆancia pr´atica dos autˆomatos determin´ısticos no contexto da
constru¸ c˜ao de compiladores, pois as linguagens de programa¸ c˜ao s˜ao, em geral, linguagens livres
de contexto aceitas por autˆomatos de pilha determin´ısticos. Logo, elas admitir˜ao gram´aticas
n˜ao-amb´ıguas.
Mas, isso n˜ao ´e tudo. Como pode ser visto na disciplina de Compiladores, as linguagens livres de
contexto aceitas por autˆomatos de pilha determin´ısticos podem ser analisadas, sintaticamente,
de forma bastante eficiente, pois a an´alise pode ser feita de forma “quase” linear no comprimento
da senten¸ ca (o programa). Em outras palavras, os compiladores para este tipo de linguagem
de programa¸ c˜ao utilizam algoritmos de an´alise sint´atica (parsing) bem mais eficientes do que o
algoritmo CKY.
28.2 AP determin´ısticos
Defini¸ c˜ao 28.1. Formalmente, dizemos que um autˆomato de pilha,
P = (Q, Σ, Γ, δ, ⊥, s, F)
´e determin´ıstico se
1) para cada q ∈ Q e A ∈ Γ, se δ(q, ǫ, A) ´e n˜ ao vazio ent˜ ao δ(q, a, A) ´e vazio para todo
a ∈ Σ;
2) para todo q ∈ Q, A ∈ Γ e a ∈ Σ ∪ ¦ǫ¦, δ(q, a, A) cont´em, no m´aximo, um elemento.
O autˆomato de pilha do Exemplo 19.1 ´e um AP determin´ıstico.
A condi¸ c˜ao 1) da Defini¸ c˜ao 28.1 descarta a possibilidade de uma escolha entre um movimento
independente da entrada (uma transi¸ c˜ao vazia) e um movimento que consome um s´ımbolo
180
de entrada. A condi¸ c˜ao 2) da Defini¸ c˜ao 28.1 descarta uma escolha de um movimento para
qualquer (q, a, A) e (q, ǫ, A). Ao contr´ario dos autˆomatos finitos, um AP ´e considerado n˜ao-
determin´ıstico a menos que o contr´ario seja estabelecido explicitamente. Al´em disso, no caso
dos AFs, os modelos determin´ısticos e n˜ao-determin´ısticos s˜ ao equivalentes, mas isto n˜ao ´e
verdade em se tratando de APs.
Defini¸ c˜ao 28.2. Uma linguagem L sobre um alfabeto Σ qualquer ´e dita ser uma linguagem livre
de contexto determin´ıstica (LLCD) se, e somente se, L = L(P) para algum APD P (lembre-se
de que L(P) ´e a linguagem aceita por P por estado final).
28.3 Linguagens regulares e LLCDs
A classe de todas as liguagens regulares sobre um alfabeto Σ qualquer ´e um subconjunto da
classe de todas as linguagens livres de contexto determin´ısticas sobre Σ. Este fato ´e uma
conseq¨ uˆencia imediata do seguinte teorema:
Teorema 28.1. Se L ´e uma liguagem regular sobre um alfabeto Σ qualquer, ent˜ ao L = L(P)
para algum APD P.
Demonstra¸c˜ao. J´a que L ´e regular, sabemos que L = L(M) para algum AFD
M = (Q, Σ, δ
M
, s, F) .
Ent˜ao, vamos definir um APD P,
P = (Q, Σ, ¦Z¦, δ
P
, s, Z, F)
onde Z ,∈ Q, Z ,∈ Σ e
δ
P
(q, a, Z) = ¦(p, Z)¦
para todos os estados p e q em Q tais que
δ
M
(q, a) = p .
Intuitivamente, definimos o APD P de tal forma que P simula a execu¸ c˜ao do AFD M, pois
todas as transi¸ c˜oes de P s˜ao idˆenticas `as transi¸ c˜oes de M no que diz respeito ao s´ımbolo de
entrada consumido e aos estados inicial e final. Al´em disso, P n˜ao possui transi¸ c˜oes vazias
e o s´ımbolo da pilha ´e ´ unico e n˜ao ´e nunca retirado da pilha de forma permanente. Logo, o
processamento ocorre como se a pilha n˜ao existisse.
O APD P ´e claramente determin´ıstico, pois n˜ao transi¸ c˜oes vazias e [δ
P
(q, a, Z)[ = 1, para todo
p ∈ Q e a ∈ Σ. Agora, precisamos mostrar que L(P) = L(M). Para tal, afirmamos que, para
toda palavra w ∈ Σ

e todo estado p ∈ Q,
ˆ
δ
M
(p, w) = q se, e somente se (p, w, Z)

−→
P
(q, ǫ, Z) .
181
A afirma¸ c˜ao acima pode ser provada com duas indu¸ c˜oes (uma indu¸ c˜ao para cada implica¸ c˜ao)
e ser´a deixada como exerc´ıcio para o aluno. Obviamente, uma conseq¨ uˆencia imediata da
afirma¸ c˜ao acima ´e que
ˆ
δ
M
(s, w) = q se, e somente se (s, w, Z)

−→
P
(q, ǫ, Z) .
Logo, w ∈ L(M) se, e somente se, q ∈ F, mas q ∈ F se, e somente se, w ∈ L(P). Logo
w ∈ L(M) se, e somente se, w ∈ L(P), o que implica que L(M) = L(P). Logo, a linguagem
regular L = L(M) ´e uma LLCD.
Note que h´a LLCDs que n˜ao s˜ao regulares. Por exemplo, a linguagem
L = ¦a
n
b
n
[ n ∈ Z, n ≥ 0¦
do Exemplo 19.1 ´e aceita por um APD, mas n˜ao pode ser aceita por nenhum AF. O primeiro
fato exige uma prova de que o APD do Exemplo 19.1 aceita L, enquanto o segundo fato pode
ser provado pelo Lema do Bombeamento para linguagens regulares (o segundo fato foi provado
no Cap´ıtulo 7).
28.4 Estado final versus pilha vazia
Um fato interessante sobre APDs ´e que aceita¸ c˜ao por pilha vazia e aceita¸ c˜ao por estado final
n˜ao s˜ao equivalentes! Se quisermos que um APD aceite por pilha vazia, descobriremos que sua
capacidade de aceita¸ c˜ao ´e bastante limitada. Na verdade, um APD aceita uma LLCD por pilha
vazia se, e somente se, ela possuir uma propriedade chamada propriedade de prefixo. Dizemos
que uma linguagem L possui a propriedade de prefixo se n˜ao existirem duas cadeias distintas,
x, y ∈ L, tais que x ´e um prefixo de y.
Por exemplo, a linguagem
L = ¦wcw
r
[ w ∈ ¦a, b¦

¦
´e uma LLCD (verifique este fato) que possui a propriedade de prefixo. Pois, se L n˜ao possu´ısse
esta propriedade, ent˜ao poder´ıamos encontrar duas cadeias distintas de L, digamos x e y,
tais que x ´e um prefixo de L. Como x, y ∈ L, temos que x = w
1
cw
r
1
e y = w
2
cw
r
2
, com
w
1
, w
2
∈ ¦a, b¦

. Como x ´e prefixo de y e x ,= y, temos que [x[ < [y[ e, portanto, [w
1
[ < [w
2
[.
Mas, isso implica que w
1
c ´e um prefixo de w
2
, o que ´e imposs´ıvel, pois w
2
∈ ¦a, b¦

. Ent˜ao, a
LLCD L deve satisfazer a propriedade de prefixo e, conseq¨ uentemente, podemos construir um
APD que aceita L por pilha vazia.
Por outro lado, existem linguagens bastante simples que n˜ao possuem a propriedade de prefixo.
Um exemplo ´e a linguagem regular ¦0¦

. Logo, n˜ao podemos sequer construir um APD que
aceita por pilha vazia uma dada linguagem regular qualquer. Isto mostra a limita¸ c˜ao desta
forma de aceita¸ c˜ao.
O seguinte teorema resume os fatos descritos acima:
182
Teorema 28.2. , Uma linguagem livre de contexto determin´ıstica, L, ´e tal que L = N(P)
para algum APD P se, e somente se, a liguagem L possui a propriedade de prefixo.
Demonstra¸c˜ao. Suponha que L = N(P) para algum APD
P = (Q, Σ, Γ, δ, s, ⊥, F) .
N´os queremos provar que L possui a propriedade de prefixo. Usaremos prova por contradi¸ c˜ao.
Ent˜ao, assuma que existem duas palavras, x e y, tais que em x, y ∈ L, x ,= y e x ´e um prefixo
de y (isto ´e, assuma que L n˜ao possui a propriedade de prefixo).
Como x ,= y e x ´e um prefixo de y, podemos escrever y = xz, onde z ,= ǫ. Como L = N(P),
temos que
(s, x, ⊥)

−→
P
(q, ǫ, ǫ) e (s, xz, ⊥)

−→
P
(q, ǫ, ǫ) ,
para algum q ∈ Q. Mas, o fato que P ´e determin´ıstico implica que h´a uma ´ unica seq¨ uˆencia de
transi¸ c˜oes no processamento de x e xy. Logo,
(s, x, ⊥)

−→
P
(q, ǫ, ǫ)
implica que
(s, xz, ⊥)

−→
P
(s, z, ǫ)

−→
P
(q, ǫ, ǫ)
No entanto, o processamento
(s, z, ǫ)

−→
P
(q, ǫ, ǫ)
s´o pode ser poss´ıvel se z = ǫ, pois um AP n˜ao pode mais executar transi¸ c˜oes ap´os sua pilha
ser esvaziada. Mas, por hip´otese, z ,= ǫ e chegamos a uma contradi¸ c˜ao. Logo, L deve possuir a
propriedade de prefixo.
Agora, assuma que L tem a propriedade de prefixo e que L = L(P) para algum APD
P = (Q, Σ, Γ, δ, Z, s, F) .
Ent˜ao, defina um APD
P

= (Q∪ ¦q
i
, q
f
¦, Σ, Γ ∪ ¦Z
0
¦, δ

, Z
0
, q
i
, ∅)
tal que Z
0
,∈ Γ, q
i
, q
f
,∈ Q e
δ

(q
i
, ǫ, Z
0
) = ¦(s, ZZ
0
)¦ ,
δ

(q
f
, ǫ, X) = ¦(q
f
, ǫ)¦ ,
para todo p ∈ Q, c ∈ (Σ ∪ ¦ǫ¦) e X ∈ (Γ ∪ ¦Z
0
¦),
δ

(p, c, X) =
_
(q, β) se δ(p, c, X) = ¦(q, β)¦ e q ,∈ F
(q
f
, β) se δ(p, c, X) = ¦(q, β)¦ e q ∈ F
onde β ∈ Γ.
183
Agora, suponha que w ∈ L(P). Ent˜ao,
(s, w, Z)

−→
P
(f, ǫ, β)
onde f ∈ F e β ∈ Γ

. Como L(P) possui a propriedade de prefixo, qualquer configura¸ c˜ao
intermedi´aria do processamento acima n˜ao pode conter um estado final de P. Do contr´ario,
haveria uma cadeia x ∈ L(P) tal que w = xy, com y ,= ǫ. Ent˜ao, n´os podemos concluir que
(q
i
, w, Z
0
)
1
−→
P

(s, w, ZZ
0
)

−→
P

(q
f
, ǫ, βZ
0
)

−→
P

(q
f
, ǫ, ǫ) ,
o que implica que w ∈ N(P

). Por outro lado, se w ∈ N(P

), ent˜ao sabemos que
(q
i
, w, Z
0
)
1
−→
P

(q
f
, ǫ, ǫ) ,
pois as ´ unicas transi¸ c˜oes que retiram o s´ımbolo inicial da pilha, Z
0
, s˜ao as transi¸ c˜oes envolvendo
q
f
. Mas, se q
f
´e atingindo em uma computa¸ c˜ao, ent˜ao
(q
i
, w, Z
0
)

−→
P

(q, c, βZ
0
)
1
−→
P

(q
f
, ǫ, γZ
0
)
1
−→
P

(q
f
, ǫ, ǫ) ,
onde
((q, c, β), (f, γ)) ∈ δ
para algum q ∈ Q, c ∈ (Σ∪¦ǫ¦), β ∈ Γ

, f ∈ F e γ ∈ Γ

. Como a ´ unica transi¸ c˜ao de q
i
´e para
s, temos que
(q
i
, w, Z
0
)
1
−→
P

(s, w, ZZ
0
)

−→
P

(q, c, βZ
0
)
1
−→
P

(q
f
, ǫ, γZ
0
)
1
−→
P

(q
f
, ǫ, ǫ) .
Como n˜ao h´a transi¸ c˜oes de q
f
para nenhum outro estado de P

a n˜ao ser o pr´oprio q
f
, a
computa¸ c˜ao
(s, w, ZZ
0
)

−→
P

(q, c, βZ
0
)
envolve apenas estados de Q e todas as transi¸ c˜oes desta computa¸ c˜ao est˜ao em δ. Logo, podemos
concluir que
(s, w, Z)

−→
P
(q, c, β)
1
−→
P
(f, ǫ, γ)
e, portanto, w ∈ L(P).
28.5 APDs e gram´aticas n˜ao-amb´ıguas
Um outro fato interessante ´e que toda LLCD pode ser gerada por uma gram´atica livre de
contexto n˜ao-amb´ıgua. A veracidade desta afirma¸ c˜ao ´e uma conseq¨ uˆencia imediata dos dois
seguintes teoremas:
Teorema 28.3. Se uma LLCD L ´e tal que L = N(P) para algum APD P, ent˜ ao existe uma
GLC G n˜ ao amb´ıgua tal que L = L(G).
184
Demonstra¸c˜ao. Seja E um APD tal que N(E) = L. Como vimos no Cap´ıtulo 21, podemos
construir um AP F, a partir de E, que possui um ´ unico estado, aceita apenas por pilha vazia
e tal que N(F) = N(E). N´os podemos mostrar que a constru¸ c˜ao do Cap´ıtulo 21 gerar´a um
AP F determin´ıstico se E for determin´ıstico. Ent˜ao, podemos assumir que L ´e gerada por um
APD
F = (¦q¦, Σ, Γ, δ, s, ⊥, ∅)
com um ´ unico estado e que aceita apenas por pilha vazia. A partir de F, definimos uma GLC
G = (Γ, Σ, P, ⊥)
onde P cont´em uma produ¸ c˜ao
A → cB
1
B
2
B
k
se, e somente se,
((q, c, A), (q, B
1
B
2
B
k
)) ∈ δ ,
com c ∈ (Σ ∪ ¦ǫ¦) e B
i
∈ Γ, para todo i = 1, . . . , k.
Agora, suponha que w ∈ L(G), para alguma w ∈ Σ

. Ent˜ao, sabemos que


−→
G,e
w e ⊥

−→
G,d
w.
A fim de obter uma contradi¸ c˜ao, vamos assumir que h´a mais de uma deriva¸ c˜ao mais `a esquerda
de w. Se isto ´e verdade, considere quaisquer duas delas. Se elas n˜ao s˜ao iguais, ent˜ao considere
o primeiro passo de deriva¸ c˜ao no qual essas deriva¸ c˜oes diferem. Neste passo, um mesmo n˜ao-
terminal, A, foi substitu´ıdo por duas cadeias distintas de terminais e n˜ao-terminais, digamos
cB
1
B
k
e dC
1
C
h
, onde c, d ∈ (Σ ∪ ¦ǫ¦) e B
i
, C
j
∈ Γ, para todo i ∈ ¦1, . . . , k¦ e j ∈
¦1, . . . , h¦, tal que c ,= d ou k ,= h ou, se nenhuma das anteriores, ent˜ao B
l
,= C
l
para algum
l ∈ ¦1, . . . , k¦. Mas, como F ´e determin´ıstico, existe um ´ unico par, (A, c), com A ∈ Γ e
c ∈ (Σ ∪ ¦ǫ¦) tal que
A → cB
1
B
2
B
k
∈ P .
Logo, c = d, k = h e B
1
B
k
= C
1
C
h
, o que mostra que as deriva¸ c˜oes n˜ao podem ser
distintas. O mesmo argumento pode ser usado para mostrar a unicidade das deriva¸ c˜oes mais
`a direita. Ent˜ao, podemos concluir que a GLC G ´e n˜ao-amb´ıgua, pois para toda palavra em
L(G), existem apenas uma deriva¸ c˜ao mais `a esquerda e uma deriva¸ c˜ao mais `a direita na GLC
G.
Teorema 28.4. Se uma LLCD L ´e tal que L = L(P) para algum APD P, ent˜ ao existe uma
GLC G n˜ ao amb´ıgua tal que L = L(G).
Demonstra¸c˜ao. Suponha que $ seja um s´ımbolo que n˜ao perten¸ ca ao alfabeto sobre o qual a
linguagem L est´a definida. Ent˜ao, vamos definir a linguagem L

como sendo igual a L ¦$¦.
´
E f´acil verificar que L

possui a propriedade de prefixo (fa¸ ca esta verifica¸ c˜ao). Ent˜ ao, pelo
Teorema 28.2, existe um APD D tal que L

= N(D). Pelo Teorema 28.3, existe uma GLC G,
n˜ao-amb´ıgua, tal que L(G) = N(D). Vamos definir uma outra GLC, G

, a partir de G, tal que
se
G = (N, Σ ∪ ¦$¦, P, S)
185
ent˜ao
G

= (N ∪ ¦A
$
¦, Σ, P

, S) ,
onde
P

= ¦A → αA
$
[ A → α$ ∈ P, α ∈ (N ∪ Σ)

¦ ∪ ¦A
$
→ ǫ¦ .
Pela constru¸ c˜ao acima, podemos mostrar por indu¸ c˜ao no comprimento da deriva¸ c˜ao que (escreva
esta indu¸ c˜ao)
S

−→
G
w$
se, e somente se,
S

−→
G

wA
$
.
Logo,
S

−→
G
w$
se, e somente se,
S

−→
G

w.
O teorema acima implica que nem toda linguagem livre de contexto pode ser reconhecida por
um APD, pois existem linguagens livres de contexto que s˜ao inerentemente amb´ıguas. Portanto,
a classe de linguagens que pode ser aceita por APDs ´e um conjunto que cont´em propriamente as
linguagens regulares, mas ´e contido propriamente no conjunto das linguagens livres de contexto.
Infelizmente, nem toda linguagem livre de contexto que admite uma gram´atica n˜ao-amb´ıgua
(isto ´e, n˜ao ´e inerentemente amb´ıgua) ´e uma LLCD. Considere, por exemplo, a linguagem livre
de contexto
L = L
1
∪ L
2
onde
L
1
= ¦a
n
b
n
[ n ∈ Z, n ≥ 1¦
e
L
2
= ¦a
n
b
2n
[ n ∈ Z, n ≥ 1¦ .
A GLC
G = (¦S, S
1
, S
2
¦, ¦a, b¦, P, S)
onde
P = ¦S → S
1
[ S
2
, S
1
→ aS
1
b [ ab, S
2
→ aS
2
bb [ abb¦ .
´e n˜ao-amb´ıgua e L(G) = L
1
∪ L
2
.
No entanto, a linguagem L n˜ao pode ser reconhecida por nenhum APD. Uma prova deste fato
n˜ao ´e muito simples e ´e deixada como exerc´ıcio com sugest˜oes para a solu¸ c˜ao (veja a lista de
exerc´ıcios no final do cap´ıtulo).
186
28.6 Exerc´ıcios
1. Complete a prova do Teorema 28.1 (isto ´e, escreva a indu¸ c˜ao).
2. Complete a prova do Teorema 28.4 (isto ´e, escreva a indu¸ c˜ao).
3. Mostre que a linguagem livre de contexto
L = L
1
∪ L
2
,
onde
L
1
= ¦a
n
b
n
[ n ∈ Z, n ≥ 1¦
e
L
2
= ¦a
n
b
2n
[ n ∈ Z, n ≥ 1¦
n˜ao pode ser aceita por um APD. Para tal, defina a linguagem
L

= L ∪ ¦a
n
b
n
c
n
[ n Z, n ≥ 0¦
e, em seguida, mostre que se L for uma LLCD ent˜ao L

´e uma LLC. Vocˆe pode fazer isso
atrav´es da defini¸ c˜ao de um APND P que aceita L

e ´e dado em termos de um APD D
que aceita L. Em particular, se
D = (Q, Σ, Γ, δ, Z, s, F) ,
com
Q = (q
0
, q
1
, . . . , q
n
) ,
ent˜ao
P = (Q

, Σ, Γ, δ

, Z, s, F

) ,
onde
Q

= Q∪ ¦q

0
, q

1
, . . . , q

n
) ,
F

= F ∪ ¦q

i
[ q
i
∈ F, ∀i ∈ ¦0, 1, . . . , n¦¦ ,
e δ

cont´em todas as transi¸ c˜oes em δ e tamb´em
δ

(q, ǫ, X) = ¦(q

, X)¦ ,
para todo q

∈ F e X ∈ Γ, e
δ

(q

i
, c, X) = ¦(q

j
, β)¦ ,
para todo
δ(q
i
, b, X) = ¦(q
j
, β)¦ ,
com q
i
, q
j
∈ Q, X ∈ Γ, β ∈ Γ

. Finalmente, mostre que
(a) O APND P aceita ¦a
n
b
n
c
n
[ n ∈ Z, n ≥ 0¦.
(b) O APND P n˜ao aceita nenhuma cadeia em ¦a
n
b
n
c
k
[ n, k ∈ Z, n, k ≥ 0, k ,= n¦.
(c) O APND P n˜ao aceita nenhuma cadeia que n˜ao esteja em L(a

b

c

).
187
(d) O APND P n˜ao aceita nenhuma cadeia em ¦a
n
b
2n
c
k
[ n, k ∈ Z, n ≥ 0, k > 0¦.
(e) O APND P n˜ao aceita nenhuma cadeia da forma a
n
b
m
c
k
, a menos que m = n ou
m = 2n.
Conclua que L

n˜ao ´e uma LLC.
4. Mostre que se L
1
´e uma LLCD e L
2
´e uma linguagem regular, ent˜ao a linguagem L
1
∪L
2
´e uma LLCD.
5. Mostre que se L
1
´e uma LLCD e L
2
´e uma linguagem regular, ent˜ao a linguagem L
1
∩L
2
´e uma LLCD.
6. Forne¸ ca um exemplo de uma LLCD cuja a linguagem reversa n˜ao ´e uma LLCD.
188