Sei sulla pagina 1di 247

Introdu

~ao a Teoria da Computa ~ao:


Linguagens Formais e Computabilidade

Benedito Melo A i
oly

Departamento de Ci^en ias Exatas - DCE


Universidade Estadual do Sudoeste da Bahia - UESB

bmauesb.br

Benjam
n Ren
e Callejas Bedregal

Laborat
orio de Logi a e Intelig^en ia Computa ional - LabLIC
Departamento de Inform
ati a e Matemati a Apli ada - DIMAp
Universidade Federal do Rio Grande do Norte - UFRN

bedregaldimap.ufrn.br

Junho, 2000

Conte
udo
1 Introdu ~ao
1.1

1.2

Con eitos Matem


ati os B
asi os

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1

Conjuntos

1.1.2

Fun
~
oes e Rela
~
oes

1.1.3


Grafos e Arvores

. . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

No
~
oes de Linguagens, Gram
ati as e Aut^
omatos . . . . . . . . . . . . . . .

1.2.1

Linguagens Formais . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.2

Gram
ati as

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

1.2.3

Aut^
omatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2 Aut^
omatos Finitos

19

2.1

Aut^
omatos Finitos Determin
sti os

. . . . . . . . . . . . . . . . . . . . . .

19

2.2

Linguagens e afd's

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.3

Linguagens Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.4

Aut^
omatos Finitos N~
ao Determin
sti os . . . . . . . . . . . . . . . . . . . .

27

2.5

Equival^
en ia entre afd's e afn's

. . . . . . . . . . . . . . . . . . . . . . . .

32

2.6

Exer 
 ios

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

3 Express~oes e Gramati as Regulares

45

3.1

Express~
oes Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

3.2

Conex~
ao entre Express~
oes Regulares e Linguagens Regulares

. . . . . . . .

49

. . . . . . . . . .

52

Gram
ati as Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

3.3.1

Gram
ati as Lineares 
a Direita geram Linguages Regulares

. . . . .

59

3.3.2

Linguagens Regulares para Gram


ati as Lineares 
a Direita . . . . . .

61

3.2.1
3.3

Linguagens Regulares para Express~


oes Regulares


CONTEUDO
3.3.3

Equival^en ia entre Linguagens Regulares e Gramati as Regulares . 62

3.4 Propriedades das Linguagens Regulares . . . . . . . . . . . . . . . . . . . . 64


3.4.1

Quest~oes Elementares s^obre Linguagens Regulares . . . . . . . . . . 68

3.4.2

Identi ando Linguagens n~ao regulares . . . . . . . . . . . . . . . . 70

3.5 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4 Linguagens Livres de Contexto


4.1 Gramati as Livres de Contexto . . . . . . . . . . . . . . . . .
4.1.1 Deriva ~oes mais a esquerda e mais a direita . . . . . .

4.1.2 Arvores
de deriva ~ao . . . . . . . . . . . . . . . . . . .
4.1.3 Rela ~ao entre formas senten iais e arvores de deriva ~ao
4.2 Analise e Ambiguidade . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Analise e pertin^en ia . . . . . . . . . . . . . . . . . . .
4.3 Gramati as Livres de Contexto e Linguagens de Programa ~ao
4.4 Ambiguidades em gramati as e linguagens . . . . . . . . . . .
4.5 Simpli a ~oes de Gramati as Livres de Contexto . . . . . . . .
4.5.1 Regra Geral de Substitui ~ao . . . . . . . . . . . . . . .
4.5.2 Remo ~ao de Produ ~oes Esquerda-Re ursivas . . . . . .
4.5.3 Remo ~ao de Produ ~oes Inuteis . . . . . . . . . . . . . .
4.5.4 Remo ~ao de -produ ~oes . . . . . . . . . . . . . . . . .
4.5.5 Remo ~ao de produ ~oes unitarias . . . . . . . . . . . . .
4.6 Formas Normais . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Forma Normal de Chomsky . . . . . . . . . . . . . . .
4.6.2 Forma Normal de Greiba h . . . . . . . . . . . . . . .
4.7 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Aut^
omatos a Pilha
5.1 Aut^omato a Pilha N~ao-Determinsti o (apn) . . . . . . . . . .
5.1.1 A Linguagem A eita por um Aut^omato a Pilha . . . .
5.2 Aut^omatos a Pilha e Linguagens Livre de Contexto . . . . . .
5.2.1 Linguagens Livre de Contexto para Aut^omatos a Pilha
5.3 Aut^omatos a Pilha para Gramati as Livre de Contexto . . . .
5.4 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ii

. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .

. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

79
79
81
82
84
85
85
90
91
94
95
97
98
102
104
106
106
108
111

115
. 115
. 119
. 122
. 122
. 126
. 130

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade


CONTEUDO
6 Propriedades das Linguagens Livres de Contexto

133

6.1 Lemas da Bomba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133


6.1.1 O Lema da Bomba para Linguagens Livres de Contexto . . . . . . . 133
6.2 Propriedades de Fe ho e Algoritmos de De is~ao para Linguagens Livres de
Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.2.1 Fe ho de Linguagens Livres de Contexto . . . . . . . . . . . . . . . 136
6.2.2 Algumas Propriedades De idveis de Linguagens Livre de Contexto 136
6.3 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
7 Maquinas de Turing

139

7.1 A Maquina de Turing Padr~ao . . . . . . . . . . . . . . . . . . . . . . . . . 140


7.1.1 De ni ~ao de Maquina de Turing . . . . . . . . . . . . . . . . . . . . 140
7.1.2 Maquinas de Turing omo Re onhe edoras de Linguagens . . . . . . 146
7.1.3 Maquinas de Turing omo Tradutores (Computadores) . . . . . . . 149
7.2 Combina ~ao de Maquinas de Turing para Realizar Tarefas Compli adas . . 153
7.2.1 Diagramas de Blo os . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.2.2 Ma roinstru ~ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.2.3 Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.3 Tese de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.4 Ligeiras Varia ~oes da Maquina de Turing Padr~ao . . . . . . . . . . . . . . . 161
7.4.1 Maquinas de Turing om uma Op ~ao de Perman^en ia . . . . . . . . 162
7.4.2 Maquinas de Turing om uma Fita Semi-in nita . . . . . . . . . . . 162
7.4.3 Maquinas de Turing O -line . . . . . . . . . . . . . . . . . . . . . . 163
7.4.4 Maquinas de Turing om Multiplas Fitas . . . . . . . . . . . . . . . 163
7.4.5 Maquinas de Turing Multidimensional . . . . . . . . . . . . . . . . 164
7.4.6 Maquinas de Turing N~ao determinsti as . . . . . . . . . . . . . . . 165
7.5 Maquina de Turing Universal . . . . . . . . . . . . . . . . . . . . . . . . . 166
7.6 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

iii


CONTEUDO
8

Hierarquia das Linguagens Formais

175

8.1 Linguagens re ursivas e re ursivamente enumeraveis . . . . . . . . . . . . . 176


8.2 Linguagens que N~ao s~ao Re ursivamente Enumeraveis . . . . . . . . . . . . 178
8.3 Gramati as Irrestritas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
8.4 Linguagens Sensveis ao Contexto . . . . . . . . . . . . . . . . . . . . . . . 186
8.4.1

Gramati as Sensveis ao Contexto . . . . . . . . . . . . . . . . . . . 186

8.4.2

Aut^omatos Limitados Linearmente . . . . . . . . . . . . . . . . . . 190

8.4.3

Rela ~ao entre linguagens re ursivas e linguagens sensveis ao ontexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

8.4.4

Equival^en ia entre ALL's e gramati as sensveis ao ontexto . . . . 195

8.4.5

Propriedades de fe ho das linguagens sensveis ao ontexto . . . . . 196

8.5 A Hierarquia de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . 197


8.6 Complexidade Computa ional . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.6.1

Medida e Complexidade . . . . . . . . . . . . . . . . . . . . . . . . 200

8.6.2

Famlias e Classes de Complexidade . . . . . . . . . . . . . . . . . . 202

8.6.3

Classi a ~ao da Complexidade e a Hierarquia de Chomsky . . . . . 205

8.6.4

A Classe de Complexidade P e NP . . . . . . . . . . . . . . . . . . 206

8.7 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209


9

Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

211

9.1 Alguns Problemas que N~ao Podem Ser Resolvidos por Maquinas de Turing 211
9.2 O Problema da Parada para Maquinas de Turing . . . . . . . . . . . . . . 213
9.3 Redu ~ao de um Problema Inde idvel ao Problema da Parada . . . . . . . 217
9.4 Problemas Inde idveis para Linguagens Re ursivamente Enumeraveis . . . 220
9.5 O Problema da Correspond^en ia de Post . . . . . . . . . . . . . . . . . . . 222
9.6 Problemas Inde idveis para Linguagens Livres de Contexto . . . . . . . . 228
9.7 Exer  ios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

iv

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Lista de Figuras
1.1 O diagrama de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2 Exemplo de arvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3 Representa ~ao esquemati a de um aut^omato.

. . . . . . . . . . . . . . . . 17

2.1 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3 representa ~ao por tabela da afd do exemplo.

. . . . . . . . . . . . . . . . 23

2.4 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.5 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.6 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.7 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.8 Exemplo de afd.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.9 Exemplo de afn.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.10 Exemplo de afn.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.11 Exemplo de um afn om -transi ~oes.

. . . . . . . . . . . . . . . . . . . . 29

2.12 Exemplo de um afn om -transi ~oes.

. . . . . . . . . . . . . . . . . . . . 30

2.13 afd equivalente ao afn do exemplo 2.4.4.


2.14 afd equivalente a afn da gura 2.10
2.15 Exemplo de afn.

. . . . . . . . . . . . . . . . . . . . 35

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.18 afd equivalente ao afn da gura 2.17.


2.19 Exemplo de afn.

. . . . . . . . . . . . . . . . . . . . . 33

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.16 afd equivalente ao afn da gura 2.15.


2.17 Exemplo de afn.

. . . . . . . . . . . . . . . . . . 32

. . . . . . . . . . . . . . . . . . . . 38

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.20 afd equivalente ao afn da gura 2.19.

. . . . . . . . . . . . . . . . . . . . 40

3.1 afn's que a eitam as linguagens regulares ;, fg e fag, respe tivamente. . . 50
v

LISTA DE FIGURAS
3.2 Representa ~ao esquemati a de um afn que re onhe e L(r). . . . . . . . . . 51
3.3 Aut^omato para L(r1 + r2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4 Aut^omato para L(r1 r2 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Aut^omato para L(r1 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.6

M1

re onhe e L(aa) e M2 re onhe e L(bb). . . . . . . . . . . . . . . . . . . 53

3.7

M3

re onhe e L(aa + bb). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.8

M4

re onhe e L((aa + bb) ). . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.9

M5

re onhe e L(ba). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.10

M6

re onhe e L((aa + bb) ba). . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.11 afd para o exemplo 3.2.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . 55


3.12 Representam

Vi

a1 a2 : : : am Vj

Vi

a1 a2 : : : am

, respe tivamente.

. 60

3.13 afn resultante de uma gramati a linear a direita. . . . . . . . . . . . . . . . 61


3.14 afd M2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.15 afd M2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1 Parte da arvore de deriva ~ao para a produ ~ao A

. . . . . . . . . 83

abAB

4.2 Uma arvore de deriva ~ao par ial. . . . . . . . . . . . . . . . . . . . . . . . 84


4.3 Uma arvore de deriva ~ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.4 Exemplo de arvores de deriva ~ao diferentes para uma mesma adeia.

. . . 92

4.5 Exemplo de arvores de deriva ~ao diferentes para uma mesma adeia.

. . . 92

4.6 Exemplo de arvore de deriva ~ao numa gramati a, n~ao ambigua, equivalente
a gramati a ambigua do exemplo anterior. . . . . . . . . . . . . . . . . . . 93
4.7 Exemplo de grafo de depend^en ia . . . . . . . . . . . . . . . . . . . . . . . 100

4.8 Arvore
de deriva ~ao par ial . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.9 Exemplo de grafo de depend^en ia para remo ~ao de produ ~oes unitarias. . . 105
5.1 Representa ~ao esquemati a de um aut^omato a pilha. . . . . . . . . . . . . 116
7.1 Representa ~ao esquemati a de uma maquina de Turing . . . . . . . . . . . 140
7.2 A situa ~ao (a) antes do movimento e (b) apos.

. . . . . . . . . . . . . . . 141

7.3 Parte da exe u ~ao de uma maquina de Turing.

. . . . . . . . . . . . . . . 142

7.4 Con gura ~ao arbitraria de uma maquina de Turing . . . . . . . . . . . . . 144


7.5 Exemplo de ombina ~ao de maquinas de Turing . . . . . . . . . . . . . . . 154

vi

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

LISTA DE FIGURAS
7.6
7.7
7.8
7.9
7.10
7.11
7.12

Divis~ao da ta para simula ~ao de subprogramas em maquinas de Turing.


Conteudo da ta para a multipli a ~ao usando a ideia de subprograma. .
Fita ilimitada somente a direita. . . . . . . . . . . . . . . . . . . . . . .
Representa ~ao esquemati a de uma maquina de Turing o -line. . . . . .
Representa ~ao esquemati a de uma maquina de Turing om duas tas. .
Esquema de endere o bidimensional. . . . . . . . . . . . . . . . . . . . .
Representa ~ao esquemati a de uma maquina de Turing universal. . . . .

.
.
.
.
.
.
.

8.1 pro edimento de enumera ~ao das omputa ~oes de uma maquina de Turing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Hierarquia de Chomsky original. . . . . . . . . . . . . . . . . . . . . . . .
8.3 Hierarquia de Chomsky. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4 Con gura ~ao de uma Maquina de Turing de duas tas que re onhe e a
linguagem n n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ab

9.1 Diagrama de blo os para uma suposta maquina de Turing que resolve o
problema da parada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2 Diagrama de blo os para uma variante da suposta maquina de Turing que
resolve o problema da parada . . . . . . . . . . . . . . . . . . . . . . . . .
9.3 Algoritmo para o problema da parada usando um algoritmo de parada para
a ta em bran o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4 Algoritmo para o problema da parada om a ta em bran o baseado num
algoritmo para omputar ( ). . . . . . . . . . . . . . . . . . . . . . . . . .
9.5 Algoritmo de pertin^en ia para linguagens re ursivamente enumeraveis. . . .
9.6 Uma solu ~ao para o problema da parada baseada num algoritmo que diz
se uma linguagem e nita ou n~ao. . . . . . . . . . . . . . . . . . . . . . .
9.7 Exemplo de solu ~ao-CP . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.8 Exemplo de solu ~ao-CPM (par ial) . . . . . . . . . . . . . . . . . . . . . .
9.9 Exemplo de solu ~ao-CPM ( ontinua ~ao) . . . . . . . . . . . . . . . . . . .
9.10 Algoritmo de pertin^en ia para uma gramati a irrestrita. . . . . . . . . . .
9.11 Algoritmo CPM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.12 Algoritmo CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

fn

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

157
157
162
163
164
164
167
177
198
199
202
214
215
218
219
221
221
223
225
226
226
228
230

vii

Dedi atoria do segundo autor

Com tudo meu amor, admira ~ao


e arinho a minha m~ae,
que om sua for a e fe,
nos legou um exemplo de vida.

Agrade imentos
Durante varios anos, os autores (e alguns olegas) usaram vers~oes previas deste texto
omo livro base para le ionar as dis iplinas de \Teoria da Computa ao" e \Linguagens
Formais", nas universidades: Universidade Federal de Pernambu o, Universidade Federal
do Rio Grande do Norte e Universidade Estadual do Sudoeste da Bahia. Agrade emos sin eramente aos alunos dessas turmas, pois om suas duvidas e questionamentos ajudaram
a re nar este texto ate hegar a atual vers~ao.
Nossos agrade imentos ao orpo do ente do DIMAp-UFRN e da DCE-UESB pelo seu
onstante in entivo para publi ar esta obra.
Finalmente, agrade emos parti ularmente aos nossos olegas Regivan Hugo Nunes
Santiago, Wilson Rosa de Oliveira e Aar~ao Lyra pelo seus omentarios e orre ~oes do
texto.

ix

Cap
tulo 1
Introdu
~
ao

A import^an ia da teoria para a prati a, em qualquer i^en ia, seja fa tual ou exata, e
imensa. Para elu idar a orrela ~ao entre ambos aspe tos de uma i^en ia foram formuladas algumas frases onsagradas tais omo: \A teoria e a luz da prati a" e \A prati a
sem a teoria e ega, mas a teoria sem a prati a e esteril". Como e de supor, a i^en ia
da omputa ~ao, n~ao poderia ar alheia a esta intera ~ao e, portanto, uma teoria para
esta i^en ia se faz ne essario para \iluminar o aminho" dos ientistas da omputa ~ao
(prati os), dos engenheiros em omputa ~ao, dos analistas de sistemas, em m de todos os
professionais que usem a omputa ~ao omo objeto de estudo ou de trabalho. Assim, antes
de des rever o que seria uma teoria para a i^en ia da omputa ~ao, devemos ex lare er
que entendemos por i^en ia da omputa ~ao ou, simplesmente, por omputa ~ao.
Entendendo por omputa ~ao tudo o que um omputador pode realizar, devemos primeiro entender o que um omputador e, uja resposta poderia ser dada em termos de
hardware e te nologia. Mas, temos de ter uidado, para n~ao nos limitarnos a te nologia
do momento, pois nessa de ni ~ao de omputador devem oexistir os primeiros omputadores, al uladoras, super omputadores e futuros omputadores. Ou seja, seria ne essario
uni ar ara tersti as essen iais e omuns a todos os omputadores, de tal modo a distinguir um omputador de outros tipos de hardware, tais omo elevadores, to a CD, et .
Isto nos levara, irremediavelmente, a de nir uma no ~ao abstrata de omputador, onde ele
possa ser melhor des rito em termos do que ele faz.
A teoria nos forne e on eitos e prin pios para nos ajudar entender a natureza geral
da i^en ia do omputador. O ampo dessa dis iplina in lui um vasto leque de topi os espe iais, desde projetos de maquinas ate programa ~ao. O uso dos omputadores no mundo
real envolve uma riqueza de detalhes espe  os que devem ser aprendidos para uma apli a ~ao om su esso. Isto faz om que a i^en ia da omputa ~ao seja diversi ada e ampla.
Apesar dessa diversidade, existem alguns prin pios basi os omuns. Para estudar esses
prin pios basi os, onstruiremos modelos abstratos de omputadores e omputa ~ao. Esses
modelos ontem as ara tersti as importantes que s~ao omuns tanto ao hardware quanto
ao software, essen iais a muitos onstrutos espe iais e omplexos en ontrados quando se
trabalha om omputadores. Mesmo que esses modelos sejam muito simples para serem
1

Cap
tulo 1. Introdu
~
ao

apli ados imediatamente nas situa ~oes do mundo real, o entendimento que ganhamos em
estuda-los nos forne e fundamentos sobre os quais o desenvolvimento espe  o e baseado.
Esta abordagem n~ao e ex lusividade da i^en ia da omputa ~ao. A onstru ~ao de modelos e essen ial em qualquer dis iplina ient a, e a utilidade de uma dis iplina depende
frequentemente da teoria e de leis simples, ainda que poderosas. Alem do mais, as ideias
que dis utiremos t^em algumas apli a ~oes imediatas e importantes. Os ampos de projetos
digitais, linguagens de programa
~
ao e ompiladores s~
ao os exemplos mais obvios, existem
porem muitos outros (Proto olos de omuni a ~ao, projetos de hardwares digitais, et .).
Este texto e o resultado de diversos ursos ministrados pelos autores para a dis iplina de \teoria da omputa ~ao" dos ursos de gradua ~ao em Ba harelado em Ci^en ia da
Computa a
~o da Universidade Federal do Rio Grande do Norte - UFRN, da Universidade Federal de Pernambu o - UFPE e da Universidade Estadual do Sudoeste da Bahia UESB e no urso de Engenharia da Computa ~ao da UFRN. Como esta dis iplina e prerequisito da dis iplina \ ompiladores", enfatizamos os on eitos de linguagens formais,
om suas abordagens atraves de aut^omatos e de gramati as. Mas, omo prin ipalmente
e um urso de \teoria da omputa ~ao ", tambem estudamos a no ~ao de omputabilidade
e onsideramos uma breve dis us~ao de omplexidade omputa ional.
Os topi os apresentados neste texto s~ao importantes para os estudantes de informati a,
seja de i^en ias ou de engenharia, pois os olo am diante de quest~oes profundas de natureza omputa ional e de onhe imentos que n~ao ser~ao rapidamente absoletados, pois
n~ao dependem da te nologia. Assim, este texto nos permite vislumbrar o poder das ferramentas matemati as e dos metodos formais para modelar fen^omenos da omputa ~ao.
No entanto, e obvio que este texto n~ao e exaustivo no que tange a teoria da omputa ~ao,
pois so se dire iona a modelar linguagens formais e omputabilidade lassi a, deixando de
lado ertos aspe tos espe  os, omo por exemplo omputa ~ao on orrente e distribda,
 este estudo
espe i a ~ao formal, omputa ~oes numeri as envolvendo numeros reais, et . E
dos fen^omenos da omputa ~ao atraves de modelos matemati os ou formais e que ergue a
omputa ~ao ao patamar de uma i^en ia em lugar de uma mera te nologia.
Neste texto, estudaremos diversas lasses de linguagens (formais), mas daremos ^enfase
espe ialmente a quatro delas:
1. Linguagens regulares,
2. Linguagens livres de ontexto,
3. Linguagens sensveis ao ontexto e
4. Linguagens re ursivamente enumeraveis.
Cada uma dessas lasses de linguagens sera abordada atraves de aut^omatos, que s~ao
modelos matemati os de lasses de omputadores digitais, e atraves de gramati as, que
s~ao, basi amente, um onjunto de regras que dizem omo onstruir palavras validas da
linguagem.

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

Exploramos o mais omplexo destes aut^omatos, e observamos que ele n~ao so tem
apa idade para re onhe er linguagens formais, mas tambem pode transformar entradas
em sadas, ou seja realizar omputa ~oes omo qualquer omputador real faz. Este e o
ponto de partida para se introduzir a no ~ao de omputabilidade e estabele er os limites
do mundo da omputa ~ao.
Finalmente, om um onhe imento do que e e o que n~ao e omputavel, podemos nos
preo upar om analizar a qualidade das solu ~oes, isto e, n~ao so e importante saber se
um determinado problema admite uma solu ~ao implementavel num omputador, mas se
essa solu ~ao vai nos ser util (se vai ser realizada em um tempo razoavel, ou ainda se ela
o upa espa o de memoria que dispomos). Ou seja, agora podemos nos preo upar om a
omplexidade omputa ional das solu ~oes. Para isso, introduzimos algumas medidas de
omplexidade baseadas no tempo de exe u ~ao de um algoritmo e do espa o usado por ele.
Neste aptulo, veremos alguns on eitos matemati os basi o, fundamentais para o
entendimento do texto. Alem do mais, veremos de modo geral e super ial as tr^es vis~oes
(linguagem, aut^omato e gramati a) que adotaremos neste texto, para estudar o poder
omputa ional dos nossos modelos.

1.1 Con eitos Matemati os Basi os


1.1.1

Conjuntos

Um onjunto e uma ole ~ao de objetos (seus elementos) distintos. Des revemos um onjunto enumerando um a um seus elementos em alguma ordem adequada ou des revendo
uma propriedade que so os elementos do onjunto possuem ou satisfazem. Em geral, denotamos onjuntos por letras maius ulas om ou sem ndi es, por exemplo A; B; C; A1 ; Bk ;
et . Se a e um elemento de um onjunto A, dizemos que a perten e a A, denotado por
a 2 A. Se v
arios elementos, digamos a; b e perten em ao onjunto A denotamo-lo por
a; b; 2 A.
O onjunto que n~ao tem elementos e denominado onjunto vazio, denotado por
;. O onjunto vazio pode ser espe i ado por uma propriedade que nenhum elemento
satisfaz. Por exemplo, ; = fx=x 6= xg. O onjunto ujos elementos s~ao todos objetos
fsi os ou mentais que existem, existiram ou existir~ao no universo e denominado onjunto
universo e o denotamos por U.
Um onjunto A e um sub onjunto de um onjunto B ou A esta ontido ou e igual a
B , denotado por X  B , se todos os elementos de A s~
ao elementos de B , isto e, se para
todo x, se x 2 A ent~ao x 2 B . Os onjuntos A e B s~ao iguais, denotado por A = B ,
se A  B e B  A. Dizemos que um onjunto A e um sub onjunto pr
oprio de B ,
denotado por A  B , se A  B e A n~ao e igual a B , ou seja se A  B e existe um
elemento de B que n~ao esta em A.
Proposi
~
ao 1.1.1 Sejam A; B e C onjuntos qualquer. Ent~
ao

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

1.1. Con eitos Matemati os Basi os


1.

;

A.

2. Se A
3. Se A
4. Se A
5. Se A






B ent~
ao A





B e B

B e B

B e B

B.

C ent~
ao A

C ent~
ao A

C ent~
ao A





C.

C.

C.

A seguir de niremos algumas opera ~oes basi as s^obre onjuntos. Sejam A;


onjuntos quaisquer.






Uni~ao:

Interse  ~ao:
Diferen a:

e C tr^es

= fx = x 2 A ou x 2 B g,

Complementa ~ao:

= fx = x 2 A e

= fx = x 2 A e
A

2 g,
26 g,

= fx = x 62 Ag.

Propriedades:












4

[ = [ ,
\ = \ ,
[( \ )=( \
\( [ )=( [
[;= ;= ,
\ ; = ;,
B

) [ (A \ C ),
) \ (A [ C ),

; = U,
= A,

[
\

Se

= A \ B,
= A [ B,

ent~ao A [ B = B , A \ B = A e

.
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Captulo 1. Introdu ~ao


A

Se A e B s~ao onjuntos sem nenhum elemento em omum, isto e, se A \ B = ;, ent~ao


e B s~ao denominados onjuntos disjuntos.

Um onjunto diz-se nito se ontem um numero nito de elementos. Caso ontrario,


^ele se diz in nito. O tamanho ou ardinalidade de um onjunto nito e o numero de
elementos que ^ele ontem , denotado por j A j.
Seja

f igi2I uma famlia de onjuntos indexada por


A

. Ent~ao

1. a uni~ao da famlia e de nida por

i2I

i = fx = existe

tal que

2 ig
A

2. a interse ~ao da famlia e de nida por

i2I

3. se

i = fx = para todo

tal que

2 ig
A

= f1; 2;    ; ng ent~ao denotamos a uni~ao e interse ~ao da famlia fAi gi2I por

[n
i=1

\n
i=1

Um dado onjunto pode ter muitos sub onjuntos. O onjunto de todos os sub onjuntos
de um onjunto A e hamado o onjunto pot^
en ia ou onjunto das partes de A,
A
}
denotado por 2 ou (A).

Exemplo 1.1.2 Se A e o onjunto fa; b; g, ent~ao seu onjunto pot^en ia e


2A = f;; fag; fbg; f g; fa; bg; fa; g; fb; g; fa; b; gg

Observe que neste aso j A j= 3 e j 2A j= 2jAj = 23 = 8. Generalizando, se A e


um onjunto nito ent~ao j 2A j= 2jAj . Esta propriedade deu origem ao nome de onjunto
pot^en ia.

1.1.2

Fun ~
oes e Rela
~
oes

Uma fun ~
ao e uma regra que asso ia a ertos elementos de um onjunto um uni o elemento de outro onjunto. Se f denota uma fun ~ao, ent~ao o primeiro onjunto e hamado
onjunto de partida e o segundo onjunto e hamado onjunto de hegada. Es reveremos f : A ! B , para indi ar que f e uma fun ~ao ujo onjunto de partida e A e
ujo onjunto de hegada e B . Eventualmente, teremos asos em que alguns elementos
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

1.1. Con eitos Matem


ati os B
asi os

do onjunto de partida n~ao tenham asso iado nenhum elemento do onjunto de hegada
atraves da fun ~ao f . O sub onjunto de A ujos elementos s~ao asso iados a elementos de B
e hamado domnio de f , denotado por dom(f ). Analogamente, o sub onjunto de B , aos
quais aqueles elementos de A foram asso iados, e hamado imagem ou ontradomnio
de f e o denotamos por img (f ). Se o domnio de f e todo A, f diz-se uma fun ~
ao total
sobre A, aso ontrario f diz-se uma fun ~
ao par ial.
No otidiano sempre estamos rela ionando objetos de um mesmo tipo ou de diferentes
tipos. Por exemplo, a rela ~ao \perte er a mesma familia", rela iona pessoas que s~ao de
uma mesma familia e a rela ~ao \ser dono" rela iona pessoas om objetos. Assim, uma
rela ~ao exige que exista uma onex~ao entre as oisas que se rela ionam. Esta no ~ao de
onex~ao de um objeto a om um objeto b, pode ser formalmente olo ado introduzindo
a no ~ao de par ordenado, (a; b). A no ~ao de par ordenado tem a seguinte propriedade
fundamental:
(x1 ; x2 ) = (y1 ; y2) se, e somente se,

x1

= y1 e

x2

= y2

(1.1)

Ou seja nos pares ordenados a ordem em que s~ao dispostos os elementos e importante.
Colo ado dessa maneira, aparentemente, n~ao podemos pensar um par ordenado omo
um onjunto, mas poderamos en arar um par ordenado, (a; b), omo uma abrevia ~ao
do onjunto fa; fa; bgg. Esta vis~ao onjuntista de par ordenado satisfaz a propriedade
fundamental 1.1. O onjunto de todos os pares ordenados possveis de ser onstrudos
entre um onjunto A e um Conjunto B , e denominado produto artesiano de A om
B , uja denota
~ao e A  B . Assim,
A

= f(a; b) = a 2 A e

2 g
B

A no ~ao de par ordenado pode ser estendida a no ~ao de n-tuplas ordenadas, isto e,
em vez de onsiderar elementos de dois onjuntos, onsiderar elementos de n onjuntos.
Denotaremos uma n-tupla por (a1 ;    ; an ). Analogamente, podemos onsiderar o produto
artesiano dos onjuntos A1 ;    ; An , denotado por A1      An , por
A1

A2



An

= f(x1 ; x2 ;    ; xn ) = xi

Ai ;

para ada 1  i  ng

Assim, uma rela ~ao r entre os elementos de um onjunto A om os elementos de um


onjunto B e, em suma, um sub onjunto do produto artesiano de A om B , ou seja,
r  A  B . Analogamente, uma fun
~ao f : A ! B pode ser vista omo um sub onjunto
do produto artesiano de A om B , isto e, f  A  B , onde ada xi pode o orrer no
maximo uma vez omo o primeiro elemento de um par ordenado em f . Esta maneira de
en arar fun ~oes e hamada gra o da fun ~ao f . Claramente, as rela ~oes s~ao mais gerais
que as fun ~oes: numa fun ~ao ada elemento do domnio tem asso iado a ele exatamente
um elemento no ontradomnio; numa rela ~ao podem existir varios de tais elementos no
ontradomnio.

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

Uma rela ~ao espe ialmente importante e uma rela ~


ao de equival^
en ia, que 
e uma
generaliza ~ao do on eito de igualdade (identidade). Para indi ar que um par (x; y ) e
equivalente, es revemos
x  y

Uma rela ~ao, denotada por


regras:


Re exividade:

Simetria: se

Transitividade: se

Exemplo 1.1.3

x  x

x  y

, e onsiderada uma equival^en ia se ela satisfaz tr^es

para todo x,

, ent~ao
x  y

y  x

e y  z , ent~ao

x  z

Seja N = f0; 1; 2; : : :g o onjunto dos numeros naturais e de na


x  y

se e somente se

(mod 3) = y (mod 3)

Assim, 2  5, 6  9 e 10  16. Isso e laramente uma rela ~ao de equival^en ia.

1.1.3


Grafos e Arvores

Um grafo e um onstruto onstitudo de dois onjuntos nitos, o onjunto V = fv1 ; v2 ; : : : ; vn g


de v
erti es e o onjunto A = fa1 ; a2 ; : : : ; am g de arestas. Cada aresta 
e um par de
verti es de V , por exemplo, ei = (vj ; vk ).
Neste aso, dizemos que a aresta ei e uma aresta de sada para vj e de hegada
para vk . Tal onstruto e mais pre isamente um grafo dirigido, uma vez que asso iamos
uma dire ~ao (de vj a vk ) a ada aresta. Grafos podem ser rotulados, sendo o rotulo um
nome ou outra informa ~ao asso iada as omponentes do grafo. Tanto os verti es quanto
as arestas podem ser rotulados.
Uma maneira onveniente de se visualizar grafos e atraves de diagramas, nos quais
os verti es s~ao representados por r ulos e as arestas por linhas, om setas one tando
os verti es. O grafo om verti es fv1 ; v2 ; v3 g e arestas f(v1 ; v3 ); (v3 ; v1 ); (v3 ; v2 ); (v3 ; v3 )g e
desenhado na gura 1.1.
Uma sequ^en ia de arestas (vi ; vj ); (vj ; vk ); (vk ; vl );    ; (vm ; vn ) diz-se um aminho de
a vn . O omprimento de um aminho e o numero total de arestas que ele atravessa
indo do verti e ini ial ao verti e nal. Um aminho no qual nenhuma aresta e repetida
diz-se uma trilha. Uma trilha e simples se nenhum verti e e repetido, isto e, se n~ao
existem duas arestas distintas, (vi ; vj ) e (vk ; vl ), na trilha tal que vi = vk ou vj = vl . Uma
trilha de vi a ele proprio diz-se um i lo om base vi . Se nenhum verti e alem de vi , a
vi

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

1.2. No ~oes de Linguagens, Gramati as e Aut^omatos

v2

v3

Figura 1.1: O diagrama de um grafo


base, e repetido o i lo om base vi diz-se simples. No grafo da gura 1.1 (v1 ; v3 ); (v3 ; v2 )
e uma trilha simples de v1 a v2 . A sequ^en ia de arestas (v1 ; v3 ); (v3 ; v3 ); (v3 ; v1 ) e um i lo
om base v1 , mas n~ao simples, pois repete o verti e v3 , ja a sequ^en ia (v1 ; v3 ); (v3 ; v1 ) e
um i lo simples om base v1 . Se as arestas de um grafo s~ao rotuladas, podemos falar do
rotulo de um aminho. Este rotulo e a sequ^en ia de rotulos das arestas en ontradas
quando se per orre a trilha.
Em varias o asi~oes, nos referiremos a um algoritmo para a har todas as trilhas simples entre dois verti es (ou todos os i los simples baseados num verti e). Se n~ao nos
preo uparmos om e i^en ia podemos usar o seguinte metodo. Ini iar do verti e dado,
digamos vi , liste todas as arestas de sada de vi , (vi ; vk ); (vi ; vl ); : : :. Neste ponto temos
todas as trilhas de omprimento um, ome ando em vi . Para todos os verti es vk ; vl ; : : :
al an ados, liste todas as arestas de sada desde que elas n~ao levem a qualquer verti e ja
usado na trilha que estamos onstruindo. Apos isto, teremos todas as trilhas simples de
omprimento dois ini iando em vi e assim por diante. Como so existe um numero nito
de verti es, mais edo ou mais tarde teremos listado todas as trilhas simples, om in io
em vi . Desses es olheremos aqueles terminando no verti e desejado.
As 
arvores s~ao tipos parti ulares de grafos. Uma arvore e um grafo dirigido que n~ao
possui i los, tendo um verti e distinguido hamado raiz, tal que existe exatamente uma
trilha da raiz a qualquer outro verti e. Esta de ni ~ao impli a que n~ao existe aresta de
hegada na raiz e que existe verti es sem arestas de sada, hamados folhas da arvore.
Se existe uma aresta de vi para vj , vi e dita um pai de vj , e vj e dito um lho de vi .
O nvel asso iado a ada verti e e o numero de arestas na trilha da raiz ao verti e. A
altura de uma arvore e o numero mais alto do nvel de algum verti e.

1.2 No o~es de Linguagens, Gramati as e Aut^


omatos
Na primeira parte de nosso urso abordaremos tr^es ideias fundamentais: linguagem,
gram^ati a e aut^omato. Estaremos parti ularmente interessados nas suas rela ~oes.

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

Raiz
Nivel 0

Folha

Altura=3

Nivel 3

Figura 1.2: Exemplo de arvore


1.2.1

Linguagens Formais

Em Portugu^es, existem tr^es tipos de entidades diferentes: letras, palavras e senten as.
Existe um erto paralelismo entre elas, no sentido de que grupos de letras onstituem
uma palavra, e grupos de palavras uma senten a. Mas, nem toda on atena ~ao de letras
forma uma palavra, nem toda sequ^en ia de palavras uma senten a. A analogia pode ser
estendida a paragrafos, historias, e assim por diante. A situa ~ao, se da, tambem, para
as linguagens de programa ~ao, na qual ertos agrupamentos de palavras haves s~ao um
omando e algumas sequ^en ias de omandos s~ao programas.
Para onstruir uma teoria geral que uni que todos estes asos, sera ne essario adotar
uma de ni ~ao para a estrutura de linguagens mais universal, isto e, uma estrutura na
qual a de is~ao de quando uma adeia de unidades onstitui uma unidade maior valida,
seja baseada na apli a ~ao de regras expli itamente de nidas.
Em linguagens tipo Portugu^es, Ingl^es e em alguns dialetos tipo Guarany, Aymara,
et . n~ao podemos dar regras que nos permitam des rever todas as frases oerentes da
linguagem. Isto porque elas s~ao linguagens ditas naturais , na qual depende de nossa
habilidade para interpretar metaforas poeti as de senten as mal es ritas. Isto ja n~ao
a onte e om linguagens de programa ~ao, pois elas s~ao \formais", e o ompilador de uma
linguagem de programa ~ao e um pro edimento que analiza a orretude de uma sequ^en ia
de smbolos e determina se ela onstitui um programa valido ou n~ao. Assim, o ompilador
n~ao pro ura saber o que o programa faz, mas se ele esta orretamente es rito.
Neste texto, estudaremos alguns aspe tos basi os do que se onhe e omo \teoria de
linguagens formais". A palavra \formal" nos diz que todas as regras para a linguagem
s~ao expli itamente de laradas em termos das adeias de smbolos que podem o orrer nela.
Nenhuma liberdade e tolerada e nenhum \entendimento profundo" e pre iso. Senten as
ser~ao onsideradas omo meros smbolos e n~ao omo express~oes de ideias na mente humana. Neste modelo basi o, as linguagens (formais) n~ao servem para a omuni a ~ao entre
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

1.2. No ~oes de Linguagens, Gramati as e Aut^omatos

intele tos, mas omo um jogo de smbolos, om regras formais. O termo \formal", aqui
usado, enfatiza que e a forma da adeia de smbolos que nos interessa e n~ao seu signi ado.
Seja  um onjunto nito n~ao vazio de smbolos, hamado alfabeto. Dos smbolos
individuais onstruiremos adeias (strings) que s~ao sequ^en ias nitas de smbolos do
alfabeto.
Exemplo 1.2.1

Se o alfabeto f^
or

 = a; b
f

g, ent~
ao

abab

aaabba

s~
ao adeiais sobre

.

Com raras ex e ~oes, usaremos as letras minus ulas ini iais do alfabeto portugu^es,
omo a; b; ; d e e para representar elementos de um alfabeto  e letras minus ulas do
nal do alfabeto protugu^es, omo u; v; w; x; y e z, para indi ar nomes de adeias.
Por exemplo, es reveremos w = abaaa para indi ar que a adeia de nome w tem o valor
espe  o abaaa.
A on atena ~ao de duas adeias w e v, denotado por wv, e a adeia obtida juntandose os smbolos de v a direita de w, isto e, se w = a1 : : : an e v = b1 : : : bn , ent~ao wv =
a1 : : : an b1 : : : bm .
A reversa de uma adeia e obtida es revendo-se os smbolos em ordem reversa. Se w
e a adeia a ima, ent~ao a reversa de w, denotado por wR, e an a1.
Se w = vu, ent~ao v diz-se um pre xo e u um su xo de w.
O omprimento de uma adeia w, denotado por w , e o numero de smbolos que
guram na adeia. A adeia vazia, e aquela sem nenhum smbolo, que sera denotado
por . Por exemplo,  = 0, w = w = w, para todo w.
Se u e v s~ao adeias, ent~ao


uv j=j u j + j v j :

(1.2)

De fato, para mostrar esta igualdade pre isamos de uma de ni ~ao mais pre isa de
omprimento de adeia. Daremos a seguinte de ni ~ao re ursiva.
 j

 j= 0

 j

a j= 1

 j

wa j=j w j +1

para todo a  e qualquer adeia w. Usaremos a indu ~ao no omprimento da adeia


para mostrar a equa ~ao 1.2.
Se v = 0, ent~ao v = . Logo, por de ni ~ao,
2

10

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

j uv j =j u j
=j u j +0
=j u j + j v j
Suponha que j uv j=j u j + j v j e al ulemos j uva j:

j uva j =j uv j +1
=j u j + j v j +1
=j u j + j va j
Logo, por indu ~ao, a igualdade e valida para todo v.
Se w e uma adeia, ent~ao wn e a adeia obtida on atenando w om ela proprio n
vezes. Portanto, wn+1 = wwn. No aso espe ial de n = 0, w0 = .
Seja  e um alfabeto. O fe ho estrela de , denotado por  , e o onjunto de todas
as adeias ( nitas) obtidas on atenando zero ou mais smbolos de . Por exemplo, se
 = fag, ent~ao
 = f; a; aa; aaa; aaaa; : : :g:
Formalmente, podemor de nir o fe ho estrela de um alfabeto , indutivamente, por
1.  2 
2. Se w 2  e a 2 , ent~ao wa 2 
3. os uni os elementos de  s~ao aqueles que podem ser obtidos apli ando uma quantidade nita de vezes as regras 1) e 2), a ima.
O onjunto  sempre ontem . Para ex luir a adeia vazia, de nimos o fe ho soma
de uma alfabeto , por + =  fg.
Enquanto um alfabeto  e um onjunto nito,  e + s~ao sempre in nitos, pois  e
n~ao vazio e n~ao existe limite no omprimento das adeias nesses dois onjuntos.
Uma linguagem e de nida em sentido amplo omo um sub onjunto de  . Qualquer
adeia w, numa linguagem L, sera hamada palavra ou senten a de L. Na teoria
das linguagens formais n~ao distinguiremos palavras de senten as. Para forne er mais
estrutura a essa de ni ~ao, bastante ampla, de linguagem, estudaremos metodos pelos
quais poderemos de nir linguagens parti ulares.
Seja  = fa; bg. Ent~
ao  =
onjunto fa; aa; aabg e uma linguagem sobre .
Exemplo 1.2.2

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

f; a; b; aa; ab; ba; bb; aaa; aab; : : :g.

11

1.2. No ~oes de Linguagens, Gramati as e Aut^


omatos

A linguagem do exemplo anterior tem uma quantidade nita de palavras, por isso ela
e hamada linguagem nita. O onjunto L = fa b =n  0g e tambem uma linguagem
sobre . As adeias aabb e aaaabbbb s~ao palavras de L, mas a adeia abb n~ao esta em L.
Esta linguagem e in nita.
Como as linguagens s~ao onjuntos, a uni~ao, a interse ~ao e a diferen a de duas linguagens s~ao imediatamente de nidas. O omplemento de uma linguagem L, sobre o
alfabeto , e de nida om respeito a  , isto e, o omplemento de L e a liguagem, sobre
, de nida por
n n

L = 

L:

A on atena ~ao de duas linguagens L1 e L2, sobre os alfabetos 1 e 2, respe tivamente, e a linguagem, sobre o alfabeto 1 [ 2 , denotada por L1L2 , onsistindo do
onjunto de todas as adeias obtidas on atenando-se qualquer elemento de L1 om qualquer elemento de L2 , isto e
L1 L2 = fxy=x 2 L1 e y 2 L2 g

De nimos L omo L on atenado n vezes om ele proprio. No aso espe ial de n = 0,


0
L = fg.
n

Exemplo 1.2.3 Se L = fan bn =n  0g, ent~ao L2 = fam bm an bn =m  0 e n  0g. Observe


que m e n n~ao est~
ao rela ionados. A adeia aabbaaabbb est
a em L2 .

O fe ho estrela de uma linguagem L, sobre um alfabeto , e a linguagem L , sobre


o proprio , de nida por
L =

[L
1

i=0

= L0 [ L1 [ L2 [ L3 [   

e o fe ho positivo da linguagem L, denotado por L+ , e de nido por


+

[
= L
1

i=1

= L1 [ L2 [ L3 [   

Observe que L+ = L L0 = L fg n~ao e ne essariamente verdade, pois se  2 L


ent~ao, L+ = L.
12

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 1. Introdu ~ao

1.2.2

Gramati as

Para estudar linguagens, matemati amente, pre isamos de um me anismo para des rev^elas. A linguagem do dia a dia e impre isa e ambgua, portanto, a des ri ~ao em portugu^es,
em geral, e inadequada. A nota ~ao de onjuntos e mais adequada, porem limitada. Aqui,
introduziremos a no ~ao de gramati a, uma ferramenta omum e poderosa para de nir
linguagens.
Uma gramati a para a lngua portugu^esa nos diz se uma senten a, em parti ular, e
bem formada ou n~ao. Uma regra tpi a da gramati a portugu^esa e \uma senten a pode
onsistir de um substantivo, seguido por um predi ado". Mais pre isamente, podemos
es rever isso omo

i !h

senten a

f rase

ih

substantivo

predi ado

om a interpreta ~ao obvia. Isto e bastante para se lidar om senten as. Devemos tambem
forne er de ni ~oes dos onstrutos introduzidos na de ni ~ao de senten a
hf rase substantivoi e hpredi adoi. Portanto,

h
h

f rase

i !h
i

substantivo

i !h

predi ado

artigo

ih

substantivo

verbo

Se asso iarmos a ada senten a \um" ou \uma" omo hartigoi, \ ~ao" e \menina"
omo hsubstantivoi e \ orre" e \ aminha" omo hverboi, ent~ao a gramati a nos diz que
as senten as \um ~ao orre" e \uma menina aminha" s~ao senten as bem-formadas.

De ni ~ao 1.2.4 Uma gramati a, G, e de nida omo uma quadrupla G = hV; T ; S; P i,
onde

 e um onjunto nito de objetos, hamados variaveis.


 e um onjunto nito de objetos, disjunto de , hamados smbolos terminais.
 2 e um smbolo espe ial, hamado variavel de in io.
 e um onjunto nito de produ ~oes.
V

O prin ipal na gramati a s~ao as regras de produ ~ao. Elas espe i am omo a gramati a
transforma uma adeia em outra, e atraves disso elas de nem uma linguagem asso iada
a gramati a. Assumiremos que todas as produ ~oes s~ao da forma
x

y;

onde x e um elemento de (V [ T )+ e y esta em (V


omo segue: dado uma adeia da forma
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

) . As produ ~oes s~ao apli adas

13

1.2. No ~oes de Linguagens, Gramati as e Aut^omatos


w

= uxv;

dizemos que a produ ~ao e apli avel a esta adeia, e podemos usa-la para tro ar
obtendo, assim, a nova adeia
z

por y ,

= uyv:

Neste aso, dizemos que w deriva z ou z e derivada de w, denotado por w =) z .


Cadeias su essivas s~ao derivadas apli ando regras de produ ~ao da gramati a, numa ordem
arbitraria. Uma produ ~ao pode ser usada se ela e apli avel e pode ser apli ada quantas
vezes se quizer. Se w1 =) w2 =) : : : =) wn, dizemos que w1 deriva wn e es revemos
w1

=) wn:

A estrela  indi a que foi onsiderado um numero n~ao espe i ado de etapas (in luindo
zero) para derivar wn de w1 . Portanto, w =) w sempre se da. Para indi ar que, pelo
menos uma produ ~ao foi apli ado es reveremos
w

=+) v:

Apli ando as regras de produ ~ao em ordens diferentes, uma gramati a pode gerar
muitas adeias. O onjunto de todas adeias e a linguagem de nida ou gerada pela
gramati a.

De ni ~ao 1.2.5 Seja G = hV; T ; S; P i uma gramati a. O onjunto


(G) = fw 2 T  = S =) wg

e denominado linguagem gerada pela gramati a G. Os elementos de L(G) s~ao hamados


senten as ou palavras.

Se

2 L(G), ent~ao a sequ^en ia


S

=) w1 =) w2 =) : : : =) wn =) w

e uma deriva ~
ao da senten a w. As adeias S; w1 ; w2 ; : : : ; wn que ontem variaveis e
objetos terminais, s~ao hamados formas senten iais da deriva ~ao.

14

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

Exemplo 1.2.6 Considere a gram


ati a G

S
S

! aSb
! :

Ent~
ao,

S =) aSb =) aaSbb =) aabb.

A adeia

aabb

= hfS g; fa; bg; S; P i,

onde

Logo, podemos es rever


e dado por

S =) aabb.


e uma senten
a na linguagem gerada por G, enquanto

aaSbb


e uma

forma senten ial.

Uma gramati a G de ne ompletamente a linguagem L(G), porem pode n~ao ser fa il
obter uma des ri ~ao expl ita da linguagem a partir da gramati a. Nesse exemplo, no
entanto, n~ao e di il onje turar que

L(G) = fan bn = n  0g
e e fa il prova-la.
Se observarmos que a regra S

! aSb e re ursiva, teremos uma prova por indu ~ao.

Mostremos que todas as formas senten iais tem a forma wi = ai Sbi .


1. Se i = 0, w0 = S
2. Suponha que wi = ai Sbi . Mostremos que wi+1 = ai+1 Sbi+1 . Mas, de ai Sbi , apli ando
a regra S ! aSb, obtemos ai+1 Sbi+1 . Observe que se apli armos a produ ~ao
S ! , obteremos uma senten a e n~ao uma forma senten ial. Logo, toda forma
senten ial tem aquela forma.
Agora, apli ando a regra S
para n  0.

! , temos que todas as senten as tem a forma a

Exemplo 1.2.7 A har a gram


ati a que gera

b ,

n n

L = fan bn+1 =n  0g.

A ideia por tr


as do exemplo anterior pode ser estendido neste aso. Tudo que pre i-

b extra. Isto pode ser feito om a produ ~ao S ! Ab, om outras


produ
~
oes es olhidas tais que A possa derivar a linguagem do exemplo anterior. Com esse
ra io 
nio, obtemos a gram
ati a G = hfS; Ag; fa; bg; S; P i, om produ
~
oes P :
samos fazer 
e gerar um

S
A
A

! Ab
! aAb
!

Para se onven er que essa 


e a gram
ati a pedida derive algumas senten
as.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

15

1.2. No ~oes de Linguagens, Gramati as e Aut^


omatos
Os exemplos s~ao relativamente fa eis, de modo que os argumentos rigorosos podem
pare er super uos. Mas, em geral, n~ao e fa il a har a gramati a para uma linguagem
des rita informalmente ou dar uma ara teriza ~ao intuitiva da linguagem de nida pela
gramati a. Para mostrar que uma dada linguagem e, de fato, gerada por uma gramati a,
G, devemos mostrar:




Que todo w 2 L pode ser derivado de S , usando G.


Toda adeia derivada, usando G, esta em L.

Exemplo 1.2.8 Considere a gramati a G1 =


das produ ~oes:

S
A

hfA; S g; fa; bg; S; P1i, om P1 onsistindo

! aAb j 
! aAb j 

Introduzimos, aqui, uma abrevia ~ao no qual varias produ ~oes om o mesmo lado esquerdo s~ao es ritos numa uni a linha, om lado direito alternativo separado por \j". Nessa
nota a~o, S ! aAb j  substitui as duas produ ~oes, S ! aAb e S ! .
Essa gramati a e equivalente, no sentido que gera a mesma linguagem, a gramati a G
do exemplo 1.2.6. A equival^en ia e fa il de mostrar provando que L(G1 ) = fan bn = n  0g.
1.2.3

Aut^
omatos

Um aut^omato e um modelo abstrato de um omputador digital. Como tal, todo aut^omato


^ possui um me anismo para l^er entradas.
in lui algumas ara tersti as essen iais. Ele
Assumiremos que as entradas s~ao adeias s^obre um dado alfabeto, es ritos numa ta de
entrada, a qual o aut^omato pode l^er, mas n~ao alterar. A ta de entrada e dividida em
quadrados ou elulas, ada um dos quais pode onter um smbolo. O me anismo de
entrada pode l^er a ta de entrada da esquerda para a direita, um smbolo de ada vez. O
me anismo de entrada pode dete tar o m da adeia de entrada (per ebendo uma ondi ~ao
^ pode
de termino da adeia). O aut^omato pode produzir sadas, de alguma forma. Ele
ter um dispositivo temporario de armazenamento, onsistindo de um numero ilimitado de
elulas, ada uma apaz de manter um uni o smbolo do alfabeto (n~ao ne essariamente o
mesmo do alfabeto de entrada). O aut^omato pode l^er e alterar o onteudo das elulas de
armazenamento. Finalmente, o aut^omato possui uma unidade de ontrole, que pode estar
em qualquer um de um numero nito de estados internos, podendo tro ar os estados
de um modo bem de nido. A gura 1.3 mostra a representa ~ao esquemati a de um
aut^omato.
Assumimos que um aut^omato opera num tempo dis reto. Em qualquer tempo dado, a unidade de ontrole esta em algum estado interno e o me anismo de entrada esta
apontando para um smbolo parti ular na ta de entrada. O estado interno da unidade

16

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 1. Introdu
~
ao

Fita de Entrada

Controle

Estado
Interno

Area de Armazenamento

Unidade de

Saida

Figura 1.3: Representa ~ao esquemati a de um aut^omato.


de ontrole na proxima etapa de tempo e determinado pelo proximo-estado ou fun ~ao de
transi a~o. Esta fun ~ao de transi ~ao forne e o proximo estado, em fun ~ao do estado orrente, o smbolo de entrada orrente e a informa ~ao orrente na area de armazenamento
temporaria. Durante a transi ~ao de um intervalo de tempo ao proximo, a sada pode
ser produzida, ou tro ada informa ~ao na area de armazenamento temporario. O termo
on gura a~o sera usado para referir a um estado parti ular da unidade de ontrole, a ta
de entrada e o armazenamento temporario. A transi ~ao do aut^omato de uma on gura ~ao
para a proxima sera um movimento.
Esse modelo geral obre todos os aut^omatos que dis utiremos neste urso.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

17

1.2. No ~oes de Linguagens, Gramati as e Aut^


omatos

18

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2
Aut^
omatos Finitos

Neste aptulo, veremos a lasse mais simples de aut^omatos, denominados aut^omatos


nitos, os quais podem ser lassi ados em determinsti os e n~ao determinsti os.
2.1

Aut^
omatos Finitos Determin
sti os

Um aut^omato re onhe edor e aquele que para ada adeia na ta de entrada diz se ela e
a eita ou n~ao. Ou seja, diz se uma adeia de smbolos faz parte ou n~ao de uma linguagem.
Um re onhe edor nito e um aut^omato re onhe edor que n~ao usa area de armazenamento
e que sempre para (para isto, l^e uma elula uma uni a vez).
De ni ~ao 2.1.1 Um Aut^omato nito determinsti o (afd) e uma quntupla
M

= hQ; ; ; q0 ; F i, onde

 Q e um onjunto nito de estados internos,


  e um onjunto nito de smbolos, hamado alfabeto de entrada,
 : Q   ! Q e uma fun ~ao total, hamada fun ~ao de transi ~ao,
 q0 2 Q e o estado ini ial,
 F  Q e o onjunto de estados nais ou estados de a eita ~ao .
Um afd opera omo segue: No in io assumimos que ^ele esta no estado ini ial q0,
om seu me anismo de entrada apontando para o smbolo mais a esquerda da adeia de
entrada. Durante ada movimento do aut^omato, o me anismo de entrada avan a uma
posi ~ao para a direita, onsumindo um smbolo de entrada. Quando for atingido o m da
adeia, esta sera a eita se o aut^omato estiver num de seus estados nais. Caso ontrario,
a adeia e rejeitada. O me anismo de entrada pode se mover, somente, da esquerda para
19

2.1. Aut^
omatos Finitos Determin
sti os

a direita, lendo exatamente, um smbolo em ada etapa. Observe que quando a exe u ~ao
de um aut^omato atinge um estado nal, isso n~ao signi a que a exe u ~ao nalizou, pois
ela so termina quando o aut^omato l^e toda a entrada na ta.
Para visualizar e representar um aut^omato nito usamos grafos de transi ~ao, nos quais
os verti es representam os estados e as arestas representam as transi ~oes. Os rotulos
dos verti es s~ao os nomes dos estados, enquanto os rotulos das arestas s~ao os valores
orrentes dos smbolos de entrada. Por exemplo, se q0 e q1 s~ao estados de algum afd
M , o grafo asso iado a M ter
a um verti e rotulado om q0 e outro rotulado om q1.
Uma aresta (q0 ; q1), rotulada por a, representa a transi ~ao (q0 ; a) = q1 . O estado ini ial
sera identi ado por uma seta n~ao-rotulada hegando ao verti e. Os estados nais ser~ao
identi ados por um r ulo duplo.
Mais formalmente, se M = hQ; ; ; q0 ; F i e um afd, ent~ao a ^ele esta asso iado um
grafo de transi ~ao, GM , tendo exatamente j Q j verti es, ada um rotulado om um qi 2 Q
diferente. Para ada regra de transi ~ao (qi; a) = qj , o grafo tem uma aresta (qi; qj ),
rotulada a. O verti e asso iado a q0 e hamado verti e ini ial, enquanto que aqueles
rotulados a qf 2 F s~ao os verti es nais. E muito simples onverter a de ni ~ao de um
afd, M = hQ; ; ; q0 ; F i, no seu grafo de transi ~ao e vi e-versa.
O grafo da gura 2.1 representa o afd M
e dado por

Exemplo 2.1.2

onde

= hfq0 ; q1; q2g; f0; 1g; ; q0; fq1gi,

(q0 ; 0) = q0 ; (q0 ; 1) = q1
(q1 ; 0) = q0 ; (q1 ; 1) = q2
(q2 ; 0) = q2 ; (q2 ; 1) = q1 :

Este afd a eita a adeia 01. Ini ia no estado q0 e aponta para o smbolo 0. Este ultimo
fato e representado pela aresta do grafo rotulada om 0. Observamos que o aut^omato
permane e no estado q0 . Apos o smbolo 1 ter sido lido o aut^omato entra no estado q1 .
Estamos agora no m da adeia e, ao mesmo tempo, no estado nal q1 . Portanto, a
adeia 01 e a eita. O afd n~ao a eita a adeia 00, porque apos l^er dois 0's onse utivos
ele n~ao estara no estado q1 , mas em q0 . Ra io inando de modo analogo, vemos que o
aut^omato a eitara as adeias 101, 00111 e 11001, mas n~ao a eitara 100 nem 1100.

E onveniente introduzir a fun ~ao de transi ~ao estendida  : Q   ! Q.


O segundo argumento de  e uma adeia, em vez de um uni o smbolo, e seu valor e o
estado do aut^omato, apos l^e aquela adeia. Por exemplo, no aso do afd do exemplo 2.1.2,
 (q0 ; 001) = q1 e  (q1 ; 1110) = q2 . Formalmente, podemos de nir  , re ursivamente,
por
1. (q; ) = q
2. (q; wa) = ( (q; w); a)
20

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 2. Aut^omatos Finitos


0

0
1

0
q

q
1

0
1

Figura 2.1: Exemplo de afd.


Para todo q 2 Q, w 2  e a 2 . Para v^er omo essa nota ~ao e adequada, vamos
apli ar essas de ni ~oes ao exemplo anterior.
( 01) = ((q0 ; 0); 1)
= (((q0; ); 0); 1)
= ((q0; 0); 1)
= (q0; 1)
= q1

 q0 ;

2.2

apli ando 2)
apli ando 2) e 0 = 0
apli ando 1)
apli ando
apli ando

Linguagens e afd's

Tendo de nido pre isamente um afd podemos, agora, de nir formalmente o que entendemos por uma linguagem asso iada a um afd. A asso ia ~ao e obvia: a linguagem e o
onjunto de todas as adeias re onhe idas pelo aut^omato.
M = hQ; ; ; q0 ; F i, denotado por
( ), e o onjunto de todas as adeias, s^obre , a eitas por M . Formalmente,

De ni ~ao 2.2.1 A linguagem a eita por um afd,

L M

( ) = fw 2  =  (q0; w) 2 F g

L M

Observe a exig^en ia de que , e onsequentemente , seja uma fun ~ao total. Em ada
etapa, um movimento uni o e de nido, isto justi a o nome determinsti o, para esse
aut^omato.
Um afd pro essara toda adeia em  , a eitando-a ou n~ao. N~ao a eita ~ao signi a
que o afd para, num estado n~ao nal tal que
( ) = fw 2  = (q0; w) 62 F g:

L M

Exemplo 2.2.2 Considere o afd, na gura 2.2.


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

21

2.2. Linguagens e afd's

a,b

b
0

q
1

a,b

Figura 2.2: Exemplo de afd.


Ao desenhar a gura 2.2, permitimos o uso de dois rotulos numa mesma aresta.
Tal multipli idade de arestas e uma abrevia ~ao para duas ou mais transi ~oes distintas: a
transi ~ao e tomada se o smbolo de entrada ombina om qualquer dos rotulos da aresta.
O aut^omato da gura 2.2 permane e no seu estado ini ial, q0 , ate o primeiro b ser
lido. Se este e tambem o ultimo smbolo da entrada, ent~ao a adeia e a eita. Se n~ao, o afd
vai para o estado q2 , do qual nun a es apa. Tal estado e hamado um estado de morte.
Como podemos ver no grafo, o aut^omato a eita todas as adeias que tem exatamente um
b, lo alizado na posi ~ao mais a direita da adeia. Todas as outras adeias s~ao rejeitadas.
Em nota ~ao de onjunto, a linguagem a eita por este aut^omato e

L = fanb= n  0g
Seja M = hQ; ; ; q0 ; F i um afd, e seja GM seu grafo asso iado. Ent~ao
para todo qi ; qj 2 Q e w 2 + ,  (qi ; w) = qj se e somente se existe em GM um aminho
om rotulo w de qi a qj .

Teorema 2.2.3

~ o: Este fato e obvio, examinando os exemplos 2.1.2 e 2.2.2. Podemos


Demonstra
a
provar isso, rigorosamente, usando a indu ~ao no omprimento de w. Suponha que o
teorema e verdadeiro para todas as adeias v, om omprimento j v j n. Considere uma
adeia w de omprimento j w j= n +1 e es reva omo w = va, para algum a 2 . Suponha,
agora, que  (qi; v) = qk . Como j v j= n, deve existir um aminho em GM , rotulado por
v , de qi a qk . Mas se  (qi ; w ) = qj , ent~
ao M deve ter uma transi ~ao (qk ; a) = qj , tal que
por onstru ~ao GM tem uma aresta (qk ; qj ), om rotulo a. Portanto, existe um aminho
em GM , rotulado va = w, de qi a qj . Como o resultado e obviamente verdadeiro para
n = 1, podemos argumentar, por indu
~ao, que para todo w 2 + ,

( ) = qj
o que impli a que existe um aminho em GM de qi a qj , rotulado w. Um argumento
simples mostra que a exist^en ia de tal aminho impli a 2.2, ompletando a prova.
 qi ; w

Uma outra maneira de representar um aut^omato e atraves de uma matriz (tabela). A


tabela da gura 2.3 e equivalente a da gura 2.2. Aqui, os rotulos da linha representam
os estados orrentes e os das olunas representam o smbolo de entrada orrente.
22

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

q0

q0

q1

q1

q2

q2

q2

q2

q2

Figura 2.3: representa ~ao por tabela da afd do exemplo.


A har um afd que re onhe a todas as adeias, s^obre o alfabeto
ab.
A uni a exig^en ia, aqui, e que os dois primeiros smbolos na adeia sejam a e b,
respe tivamente. Apos eles terem sido lidos n~ao resta nenhuma de is~ao mais a ser tomada.
Podemos, portanto, resolver o problema om um aut^omato que tem quatro estados: um
estado ini ial, dois estados para re onhe er ab, um estado de morte nal e outro n~ao nal.
Se o primeiro smbolo e a e o segundo b, o aut^omato vai para o estado nal de morte, onde
ele ara, pois as entradas restantes n~ao traz problemas. Por outro lado, se o primeiro
smbolo n~ao e a ou o segundo n~ao e b, o aut^omato entra num estado n~ao nal de morte.
A solu a~o e mostrada na gura 2.4.
Exemplo 2.2.4

=f

g, om pre xo

a; b

a,b

a
0

b
1

a
b
q

a,b

Figura 2.4: Exemplo de afd.


A har um afd que a eita todas as adeias, s^obre f0; 1g, ex eto aquelas
ontendo a sub adeia 001.
Para de idir se a sub adeia 001 o orreu, pre isamos onhe er n~ao somente o smbolo de
entrada orrente, mas tambem relembrar se ele foi pre edido por dois 0's ou n~ao. Podemos
ontrolar isso olo ando o aut^omato num estado espe  o e rotulando-o adequadamente.
Assim, omo os nomes de variaveis em linguagens de programa ~ao s~ao mnem^oni os, isto
e, nomes que denotam o papel da variavel no programa, os nomes de estados s~ao arbitrarios e, portanto, tambem, podem ser es olhidos por raz~oes mnem^oni as. Por exemplo,
Exemplo 2.2.5

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

23

2.2. Linguagens e afd's

o estado no qual dois 0's imediatamente pre edem um smbolo pode ser rotulado, simplesmente, por 00.
Se a adeia ome a om 001, ent~ao ela e rejeitada. Isso impli a que deve existir um
aminho, rotulado 001, do estado ini ial ao estado n~ao nal. Por onveni^en ia, esse
estado n~ao nal e rotulado 001. Esse estado deve ser de morte, pois o smbolo que vem
apos n~ao traz problemas. Todos os outros estados s~ao estados nais ou a eitadores.
Isso nos da a estrutura basi a da solu ~ao, mas devemos, ainda, a res entar ondi ~oes
para o aso da sub adeia 001 o orrer no meio da adeia de entrada. Devemos de nir Q
e de tal modo que sempre que pre isarmos de uma de is~ao orreta ela seja relembrada
pelo aut^omato. Nesse aso, quando um smbolo for lido, pre isamos onhe er alguma
parte da adeia para a esquerda, por exemplo, se ou n~ao os dois smbolos anteriores foram
00. Se rotularmos os estados om smbolos relevantes, e fa il v^er quais transi ~oes devem
ser. Por exemplo, (00; 0) = 00, pois esta situa ~ao apare e somente se existem tr^es 0's
onse utivos. Estamos, somente, interessados nos dois ultimos, o que o deixa no mesmo
estado 00. A solu a~o ompleta e mostrada na gura 2.5, abaixo.
0

0,1

0
\

00

001

Figura 2.5: Exemplo de afd.


Desenhar um afd que re onhe a a linguagem, L, de todas as adeias,
sobre o alfabeto  = fa; bg, om uma quantidade par de a's e de b's. Isto e,

Exemplo 2.2.6

L = fw 2  j Na (w) e Nb (w) s~ao paresg;


onde,

Na (w) e uma fun ~ao que devolve o numero de smbolos, a's, que o orrem em w.

Um aut^omato que re onhe a esta linguagem deve permitir que em qualquer momento
da omputa ~ao possamos saber a quantidade de a's e de b's que foi lido. Mas, na verdade,
so e ne essario \memorizar" se ate esse momento a quantidade de a's e de b's, s~ao, ambos
pares, ambos mpares, os a's s~ao pares e os b's mpares ou se os a's s~ao mpares e os b's
pares. Se onsiderarmos 0 omo par, ent~ao quando ome a a omputa ~ao do aut^omato,
ele se en ontra no estado no qual ambos s~ao pares, se logo emseguida l^e um a, ent~ao altera
para o estado no qual a quantidade de a's s~ao mpares e as de b's pares, et . Assim, o
aut^omato deve onsiderar somente quatro estados, simbolizando ada uma dessas possveis
ombina ~oes. O estado par-par, e ambos, ini ial e nal. A gura 2.6 ilustra do grafo do
aut^omato des rito aqui.

24

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 2. Aut^omatos Finitos


b

PI

b
PP

b
a

IP

II

Figura 2.6: Exemplo de afd.

Neste aut^omato os nomes dos estados n~ao s~ao os tradi ionais qi , mas PP, PI, IP e
II. Estes nomes s~ao mais mnem^oni os, isto e, deixam em evid^en ia o estado da maquina
em termos da situa ~ao par ial da paridade de a's e de b's. Assim, o estado PP, simboliza
a situa ~ao de uma quantidade par de a's e de b's, o estado PI indi a uma quantidade par
de a's e mpar de b's, et .
2.3

Linguagens Regulares

De ni ~ao 2.3.1 Uma linguagem, L, diz-se regular se e somente se existe algum afd M

tal que

L = L(M ):
Exemplo 2.3.2 Mostre que a linguagem L = fawa = w 2 fa; bg g e regular.

Devemos a har uma afd que re onhe a a linguagem L. Assim, o afd deve he ar
se uma adeia, ome ando om a, tambem termina om a. O que esta no meio n~ao e
importante. A solu ~ao e ompli ada pelo fato de n~ao existir um modo expl ito de testar
o nal da adeia. Essa di uldade pode ser superada pondo o afd num estado nal se o
segundo a f^or en ontrado. Se este n~ao for o ultimo, e se depois dele vier um b ent~ao ^ele
tirara o aut^omato do estado nal. A pesquisa ontinuara dessa maneira, ada a fazendo,
o aut^omato ir (ou ontinuar, se f^or o aso) para o estado nal. A solu ~ao ompleta esta
mostrada na gura 2.7. Novamente, fa a alguns exemplos para testar seu resultado.

Exemplo 2.3.3 Seja L a linguagem do exemplo anterior. Mostrar que L2 e regular.


Novamente, mostraremos que a linguagem e regular onstruindo um afd para ela. Podemos es rever, expli itamente, uma express~ao para L2 , qual seja

L2 = faw1 aaw2 a = w1 ; w2 2 fa; bg g


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

25

2.3. Linguagens Regulares

b
b
a

2
a

a,b
Figura 2.7: Exemplo de afd.

Portanto, pre isamos de um afd para re onhe er duas adeias onse utivas de formas
essen ialmente iguais (mas n~ao ne essariamente id^enti as em valores). O diagrama na
gura 2.7 pode ser usado omo ponto de in io, mas o verti e q3 tem de ser modi ado.
Este estado n~ao pode mais ser nal pois, neste ponto, devemos ome ar a olhar para a
segunda sub adeia da forma awa. Para re onhe er a segunda sub adeia, tomamos uma
repli a dos estados na primeira parte ( om novos nomes), om q3 no in io da segunda
parte. Como a adeia ompleta pode ser quebrada em suas partes onstituintes se aa
o orrer, deixamos a o orr^en ia de aa disparar o aut^omato para a segunda parte. Podemos
obter isso fazendo (q3 ; a) = q4 . A solu ~ao ompleta esta na gura 2.8
a

b
a

a,b
Figura 2.8: Exemplo de afd.

26

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 2. Aut^omatos Finitos

Este exemplo sugere a onje tura de que se L e regular, ent~ao L2; L3; : : : tambem s~ao.
2.4

Aut^
omatos Finitos N~
ao Determin
sti os

N~ao determinismo signi a uma es olha de movimentos para um aut^omato. Em vez de


pres rever um uni o movimento em ada situa ~ao, permitimos um onjunto de movimentos possveis. Formalmente, onseguiremos isso de nindo a fun ~ao de transi ~ao tal que
sua imagem seja um onjunto de estados possveis.
De ni ~ao 2.4.1 Um aut^omato nito n~ao determinsti o (af n) e de nido omo a
quntupla

onde

Q;

; qo e F

= hQ; ; ; q0 ; F i

s~ao de nidos omo para afd, mas

: Q  ( [ fg) ! 2Q:

Observe que existem duas diferen as prin ipais entre essa de ni ~ao e a de afd. Num
aut^omato n~ao determinsti o, a imagem de e o onjunto das partes de Q, 2Q. Logo, seu
valor n~ao e um uni o elemento de Q, mas um sub onjunto dele. Este sub onjunto de ne
o onjunto de todos os estados possveis que podem ser al an ados pela transi ~ao. Se,
por exemplo, o estado orrente e q1 , esta sendo lido o smbolo a e
(

) = fq0; q2 g;

q1 ; a

ent~ao q0 ou q2 pode ser o proximo estado do afn. Permitimos, tambem,  ser o segundo argumento de . Isto signi a que o afn pode fazer uma transi ~ao sem onsumir um smbolo
de entrada. Este tipo de transi ~ao e hamada -transi ~ao . Assim, Embora assumimos que o me anismo de entrada pode somente se deslo ar da esquerda para a direita, e
possvel, apli ando -transi ~oes, que ele que esta ionado sobre alguns movimentos.
Analogamente aos afd's, os aut^omatos n~ao determinsti os podem ser representados
por grafos de transi ~ao.
Os verti es s~ao determinados por Q, enquanto uma aresta (qi; qj ), om rotulo a, esta
no grafo se, e somente se, qj 2 (qi; a). Observe que omo a pode ser uma adeia vazia,
pode existir alguma aresta om rotulo .
Uma adeia e a eita por um afn se existir uma possvel sequ^en ia de movimentos que
levara a maquina a um estado nal no m da adeia.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

27

2.4. Aut^
omatos Finitos N~
ao Determin
sti os

q2

a
q
0
a
a
q

Figura 2.9: Exemplo de afn.

Considere o grafo de transi ~ao na gura 2.9. Ele des reve um afn om
duas transi o~es rotuladas a saindo de q0 . Este afn re onhe e as adeias de tamanho par
de a's e a adeia aab.
Observe que para qualquer adeia ome ando om o smbolo b, o aut^omato n~ao o
re onhe eria, pois no estado ini ial q0 ele so admite transi ~oes rotuladas por a.
Exemplo 2.4.2

No afn da gura 2.10 algumas transi ~oes, tais omo (q1 ; 0), n~ao s~ao
espe i adas no grafo e podem ser interpretadas omo uma transi ~ao ao onjunto vazio,
isto e, (q1 ; 0) = ;. O aut^omato re onhe e as adeias 0001010 e 0101010, mas n~ao 110,
nem 010100. Observe que para 00 existem dois aminhos alternativos, um levando a qo , o
outro a q1 . Embora q0 n~ao seja um estado nal, a adeia e re onhe ida, porque e su iente
que um aminho leve a um estado nal.

Exemplo 2.4.3

0
0

q 0

q 1
1

q 2

Figura 2.10: Exemplo de afn.

A gura 2.11 representa um afn om -transi ~oes. Este afn re onhe e


n; m; p  0. Observe que ele a eita a adeia 11222, a qual
e equivalente a adeia 11222. Assim, antes de onsumir o primeiro 1, o aut^omato
faz uma -transi ~ao e \pula" para o estado q1 , nele onsome o primeiro e o segundo 1,
depois novamente realiza uma -transi ~ao indo, imediatamente, para o estado q2 no qual
onsome os tr^es 2 restantes. Como q2 e um estado nal ele a eita esta adeia.
Exemplo 2.4.4

adeias do tipo 0n 1m 2p om

Como ja tivemos oportunidade de observar para afd's, a fun ~ao de transi ~ao pode
ser estendida de modo que seu segundo argumento seja uma adeia. Porem, omo dado

28

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 2. Aut^omatos Finitos


0

q
1

Figura 2.11: Exemplo de um afn om -transi ~oes.


um estado e um smbolo ele pode ir a mais (ou nenhum) estados, (q; w) resultara no
onjunto de todos os estados possveis que o aut^omato n~ao determinsti o pode hegar,
tendo ini iado em qi e tendo lido w ompletamente, ou seja, sem interromper o aminho
no grafo por falta de de ni ~ao para um smbolo de entrada em w. Por exemplo, para o
afn da gura 2.9, (q0 ; aa) = fq2 ; q5g e  (q1; abb) = ;.
De ni ~ao 2.4.5 Seja M = hQ; ; ; q0 ; F i um afn. A fun ~ao de transi ~ao estendida

qj

: Q   ! 2Q e uma fun ~ao tal que para todo qi 2 Q e w 2  ,  (qi; w) ontem

2 Q se existe, no grafo de transi ~ao, um aminho de qi a qj rotulado por w.

A de ni ~ao re ursiva, neste aso, e bastante mais omplexa que quela des rita para
afd's. A primeira di uldade e om as -transi ~oes, pois se qj 2 (qi; w) e ha uma transi ~ao de qj a qk , ent~ao qk 2  (qi; w). A no ~ao de -fe ho de um estado q forne e
todos os estados no aut^omato, que podemos atingir a partir de q, sem onsumir nenhuma
entrada, ou seja, no maximo so usando -transi ~oes. Formalmente,
( ) = fqg

 f e ho0 q

( )=

 f e hoi+1 q

q 0 2 f e hoi (q )

q0;  :

Finalmente,
-

( ) = -f e hon(q);

 f e ho q

onde n =j Q j. Assim, agora, podemos de nir re ursivamente  : Q   ! 2Q omo,


(

) = -f e ho(q)

 q; 

)=

 q; wa

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

qi 2  (q;w ) qj 2 (qi ;a)

( )

 f e ho qj :

29

2.4. Aut^omatos Finitos N~ao Determinsti os

q
2

Figura 2.12: Exemplo de um afn om -transi ~oes.


Exemplo 2.4.6 Considere o grafo de transi ~ao na gura 2.12.

Suponha que queremos a har  (q0 ; aa) e  (q2 ; ). Assim, se sairmos de q0 onsumindo o primeiro \a" hegaremos a q1 , onsumindo o outro \a" hegaremos a q2 , mais omo
existe uma -transi a~o de q2 a q0 , tambem, podemos ir ao estado q0 , sem ne essidade de
onsumir nada. Portanto,

) = fq0 ; q2g:

 q0 ; aa

Como existe um -aresta entre q2 a q0 , temos imediatamente que  (q2 ; ) ontem q0 .


Alem disso, embora n~ao mostramos expli itamente, existe sempre uma -aresta representando o estado de nenhum movimento de q ao proprio q . Portanto,

) = fq0 ; q2g:

 q2 ; 

De ni ~ao 2.4.7 A linguagem, L, re onhe ida por um afn,


de nida omo o onjunto de todas as adeias re onhe idas por
riormente. Formalmente,

= hQ; ; ; q0 ; F i,

M
M , no

e
sentido dado ante-

( ) = fw 2 = (q0 ; w) \ F 6= ;g:

L M

Em palavras, a linguagem ontem todas as adeias, w, para as quais existe um aminho, rotulado w, do verti e ini ial do grafo de transi ~ao a algum verti e nal.
Exemplo 2.4.8 Qual e a linguagem re onhe ida pelo aut^omato na gura 2.10?

E fa il v^er que a uni a maneira para o afn parar no estado nal e quando a entrada e uma repeti ~ao de 0's ( om pelo menos um 0) seguido por su essivas repeti ~oes
(possivelmente nenhuma) da adeia 10. Assim, o aut^omato re onhe e a linguagem
L = f0m(10)n= m > 0 e n  0g.

O que a onte e quando a adeia w = 0100 e apresentada ao aut^omato? Apos l^e o


pre xo 010, o aut^omato se en ontra no estado q1 , om a transi ~ao (q1 ; 0) inde nida.
Chamamos tal situa a~o uma on gura ~
ao de morte, e podemos visualiza-la omo o
aut^omato, simplesmente, parando sem outra a ~ao. Mas, devemos ter em mente que tais

30

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

visualiza ~oes s~ao impre isas e pode levar a uma interpreta ~ao errada. O que queremos
dizer, pre isamente, e que
 (q0 ; 0100)

= ;:

Portanto, nenhum estado nal pode ser atingido em se pro essando


onsequentemente a adeia n~ao e re onhe ida.

= 0100, e

Por que n~
ao determinismo?

Quando ra io inamos sobre maquinas n~ao determinsti as devemos ter autela om o uso
de no ~oes intuitivas, pois a nossa intui ~ao pode nos enganar. Devemos ser apazes de
forne er argumentos pre isos para fundamentar as on lus~oes.
N~ao determinismo e um on eito dif il. Os omputadores digitais s~ao ompletamente
determinsti os, seu estado em qualquer tempo e previsto uni amente da entrada e do estado ini ial. Portanto, e natural se indagar porque estudamos maquinas n~ao determinsti as.
Estamos tentando modelar sistemas reais, porque, ent~ao, in luir tais ara tersti as, n~ao
me ^ani as? Poderemos responder essa quest~ao de varias maneiras.
Muitos algoritmos determinsti os requerem que se fa a uma es olha em algum estagio.
Um exemplo tpi o e um programa para \jogar". Em geral, o melhor movimento n~ao e
onhe ido, mas pode ser en ontrado usando-se uma pesquisa exaustiva om ba ktra king.
Segundo varias alternativas sejam possveis, es olhemos uma e seguimo-la ate se tornar
laro se ela e a melhor alternativa ou n~ao. Se n~ao voltaremos ao ponto da ultima de is~ao
e exploraremos as outras es olhas. Um algoritmo n~ao determinsti o que pode fazer a
melhor es olha seria apaz de resolver o problema sem ba ktraking, mas um determinsti o
pode simular n~ao determinismo om algum trabalho extra. Por essa raz~ao, maquinas n~ao
determinsti as podem servir omo modelos de algoritmos de pesquisa ba ktra king.
N~ao determinismo e, as vezes, util para se resolver fa ilmente um problema. Compare o exemplo 2.4.4 e a solu ~ao determinista \mais simples" para re onhe er a mesma
linguagem, isto e, as adeias da forma 0m 1n 2p, mostrada na gura 2.13.
 pre iso fazer um es olha no afn da gura 2.9. A primeira alternativa leva ao
E
re onhe imento da adeia aab, enquanto a segunda re onhe e todas as adeias, om um
numero par de a's. Assim, a linguagem re onhe ida por este afn e faabg [ fa2n = n  1g.
Enquanto seja possvel a har um afd que re onhe a essa linguagem, o n~ao determinismo
e bastante natural. A linguagem e a uni~ao de dois onjuntos, bastante diferentes, e o n~ao
determinismo nos permite de idir no onjunto de sada, que aso queremos. A solu ~ao
determinsti a n~ao esta t~ao obviamente rela ionada a de ni ~ao. Assim, n~ao determinismo
nos permitem solu ~oes naturais e \enxutas" para re onhe er ertas linguagens.
Tambem, o n~ao determinismo e um me anismo efetivo para des rever, on isamente,
algumas linguagens ompli adas. Note que a de ni ~ao de uma gramati a envolve um
elemento n~ao determinsti o. Por exemplo, nas produ ~oes
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

31

2.5. Equival^
en ia entre afd's e afn's

2
1

0,

0,1,2

Figura 2.13: afd equivalente ao afn do exemplo 2.4.4.

! aSb j

;

podemos em qualquer ponto es olher a primeira ou a segunda produ ~ao, o que nos permite
espe i ar muitas adeias diferentes usando somente duas regras.
Finalmente, existe uma raz~ao te ni a para introduzir n~ao determinismo. Como veremos adiante, ertos resultados s~ao mais fa ilmente estabele idos para afn's do que para
afd's. No que segue veremos que n~ao existe diferen a essen ial entre esses dois tipos de
aut^omatos (determinsti os e n~ao determinsti os). Consequentemente, permitindo n~ao
determinismo, muitas vezes, onseguimos simpli ar argumentos formais sem afetar a
generalidade da on lus~ao.

2.5

Equival^
en ia entre afd's e afn's

Voltemos, agora, a quest~ao fundamental. Em que sentido os afd's e os afn's s~ao diferen laro que existe uma diferen a em sua de ni ~ao, mas isso n~ao impli a que exista
tes? E
distin ~ao essen ial entres eles. Para explorar essa quest~ao, introduziremos a no ~ao de
equival^en ia entre dois aut^omatos. Dizemos que dois re onhe edores s~ao equivalentes se
eles re onhe em a mesma linguagem. Para uma dada linguagem podemos, usualmente,
a har um numero ilimitado de re onhe edores equivalentes, determinsti os ou n~ao.

O afd mostrado na gura 2.14 e equivalente ao afn da gura 2.10, pois


ambos a eitam a linguagem f0m (10)n= m  1 e n  0g.

Exemplo 2.5.1

32

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

0
0
0

1
1

1
1
1

0,1

Figura 2.14: afd equivalente a afn da gura 2.10


Quando omparamos diferentes lasses de aut^omatos, sempre nos olo amos a quest~ao
de se uma lasse e mais potente do que outra. Por mais potente queremos signi ar que
um aut^omato de uma espe ie pode realizar algo que n~ao pode ser feito por qualquer da
outra espe ie. Olhemos essa quest~ao para o aso de re onhe edores nitos. Um afd e,
essen ialmente um afn, pois basta de nir N (q; a) = fD (q; a)g e N (q; ) = ;, para todo
a 2  e q 2 Q, onde D e N s~
ao as fun ~oes de transi ~ao do afd e afn, respe tivamente,
permane endo o resto inalterado (de fato o diagrama de transi ~ao ontinua o mesmo). E
laro que qualquer linguagem a eita por um afd tambem e a eito por algum afn. Mas,
a re pro a n~ao e t~ao obvia. Adi ionamos n~ao determinismo, de modo que e on ebvel
que exista uma linguagem a eita por afn para a qual n~ao possamos a har um afd. Mas
a onte e que isso n~ao e o aso. A lasse dos afd's e afn's s~ao igualmente poderosas: Para
qualquer linguagem a eita por um afn existe um afd que a eita a mesma linguagem.
Esse resultado n~ao e obvio e, portanto, tem que ser demonstrado. O argumento sera
onstrutivo. Isso signi a que devemos dar uma maneira de onverter qualquer afn num
afd equivalente. O argumento e essen ialmente o seguinte: apos um afn ter lido uma adeia
w , podemos n~
ao saber exatamente em que estado ^ele entrara, porem podemos dizer que
^ele deve ser um dos estados possveis de um onjunto de estados, digamos X = fqi = i 2 I g
para algum I  f0; 1; : : : ; j Q jg. Um afd equivalente lendo a mesma adeia deve entrar
em algum estado bem de nido. O que podemos fazer para que essas duas situa ~oes se
orrespondam? A resposta e a seguinte: rotule os estados do afd om um onjunto de
estados de tal modo que, apos l^e w, o afd equivalente entrara num uni o estado rotulado
X . Como para um onjunto de j Q j estados existem exatamente 2 Q sub onjuntos, o afd
orrespondente tera no maximo 2 Q estados.
j j

j j

Converter o afn da gura 2.15 (o qual e equivalente ao afd da gura


2.10) num afd equivalente. Considere que a fun ~ao de transi ~ao do afn e N .

Exemplo 2.5.2

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

33

2.5. Equival^
en ia entre afd's e afn's

0
1

q 0

q
1

Figura 2.15: Exemplo de afn.

O afn ini ia no estado q0 , mas omo ele tem uma -transi ~ao de q0 a q1 , ele pode se
omportar omo se ini iasse no estado q1 . Assim, o estado ini ial do afd e fq0 ; q1 g. Se o
aut^omato l^e um 0, o afn pode permane er em q0 , se onsideramos que o estado orrente
e q0 , ou pode mudar para q2 , se onsiderarmos que o aut^omato estava em q1 . Portanto,
estando no estado fq0 ; q1 g o afd, apos l^er um 0, deve ir para o estado fq0 ; q2 g. Logo, o
afd deve ter um estado rotulado por fq0 ; q2 g e uma transi ~ao
(fq0 ; q1 g; 0) = fq0 ; q2 g:

Nem no estado
assim

q0

nem no

q1

o afn tem transi ~ao espe i ada quando a entrada e 1,

(fq0 ; q1 g; 1) = ;:

Um estado rotulado ; representa um movimento impossvel para o afn e, portanto


signi a n~ao re onhe imento da adeia. Consequentemente, este estado no afd deve ser
um estado n~ao- nal de morte.
Agora, devemos analizar o omportamento da afd para o novo estado fq0 ; q2 g. Assim,
pre isamos a har as transi ~oes saindo deste estado. Lembre que este estado do afd orresponde a dois estados no afn, portanto para determinar o omportamento do afd para
este estado devemos onsiderar o omportamento do afn para ada um desses estados (q0
e q2 ). Se o afn esta no estado q0 e l^e um 0, ^ele pode ar em q0 ou ir para o estado q2 .
Se o afn esta no estado q2 e l^e um 0, o afn n~ao faz nada. Portanto,
(fq0 ; q2 g; 0) = N (q0 ; 0) [ N (q2 ; 0)
= fq0 ; q2 g [ ;
= fq0 ; q2 g:

Analogamente,
(fq0 ; q2 g; 1) = N (q0 ; 1) [ N (q2 ; 1)
= ; [ fq1 g
= fq1 g:

34

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

De q1 se entra um 0 ele vai para q2 e se entra um 1 n~ao tem transi ~ao espe i ada,
pelo que ele vai para um estado de morte ;. Logo,
(fq1 g; 0)

= N (q1 ; 0) = fq2 g

(fq1 g; 1)

= N (q1 ; 0) = ;:

Analogamente, para o estado fq2 g temos as seguintes transi ~oes:


(fq2 g; 0)

(fq2 g; 1)

=;

= fq1 g:

Neste ponto, todo estado tem todas as transi ~oes de nidas. O resultado e mostrado
na gura 2.16, o qual e um afd equivalente ao afn, om o qual ini iamos. O afn da
gura 2.15 a eita (re onhe e) qualquer adeia w para o qual  (q0 ; w) ontem q2 . Para o
orrespondente afd re onhe er tais w, qualquer estado ujo rotulo in lui q2 deve se tornar
um estado nal.
0
0
0

{q0,q1,
q2}

{q0,q1}

{q1}

{q2}

0,1

Figura 2.16: afd equivalente ao afn da gura 2.15.

Observe, que o aut^omato da gura 2.16 e id^enti o, a menos dos rotulos dos estados,
ao afd da gura 2.14. Isto porque o afn do qual partimos ( gura 2.15) e equivalente ao
afn da gura 2.10 que, por sua vez, e equivalente ao afd da gura 2.14.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

35

2.5. Equival^
en ia entre afd's e afn's

Ent~
ao existe um afd

~ o:
Demonstra
a




=h

L MN a linguagem re onhe ida pela afn MN


QN ;
0
MD
QD ; ; D ; q0 ; FD tal que L MN
L MD .

Teorema 2.5.3 Seja

=h

)= (

; N ; q0 ; FN i.

De na MD = hQD ; ; D ; q0 ; FD i por
0

= fX j X  Qg
D : 2Q   ! 2Q 
e de nida por

QD

)=

D X; a

[ -f e ho(

q X

N (q; a));

onde, para qualquer Y  Q, -f e ho(Y ) = fq 2 Q j


q 2 Y g.
 q0 = -f e ho(q0 )
 FD = fX  Q j X \ FN 6= ;g
0

2 -f e ho(q ) para algum


0

Este MD e equivalente ao afn MN . No entanto, ele pode in luir estados que n~ao
podem ser atingidos a partir do estado -f e ho(q0 ). Para onsiderar somente os estados
relevantes ao afd equivalente, usaremos o pro edimento afn-para-afd, para onstruir o
grafo de transi ~ao GD , para MD . Para entender a onstru ~ao lembre que GD tem de ter
ertas propriedades. Todo verti e deve ter exatamente j  j arestas saindo dele, ada um
rotulado om um elemento diferente de . Durante a onstru ~ao, algumas das arestas
podem ser perdidas, mas o pro edimento ontinua ate todas elas serem en ontradas.
Pro edimento:

afn-para-afd.

1. Crie um grafo GD om verti e -f e ho(q0). Identi que ^este verti e omo o verti e
ini ial.
2. Repita as seguintes etapas ate n~ao faltar mais arestas.
(a) Tome qualquer verti e X , de GD , que n~ao tenha uma aresta om rotulo a
saindo dele, para algum a 2 .
(b) Compute N (q; a), para todo q 2 X , e gere seu -f e ho. Forme a uni~ao de
todos esses -f e hos, gerando o onjunto Y  QN , isto e,
Y

[ -f e ho(

q X

N (q; a)):

( ) Crie um verti e para GD , rotulado om Y se ^ele ja n~ao existir.


(d) Adi ione uma aresta de X para Y e rotule-a om a.
36

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

0
1

Figura 2.17: Exemplo de afn.


3. Todo estado de
verti e nal.

GD

ujo rotulo ontem qualquer

2 FN e identi ado omo um

Converter o afn na gura 2.17 num afd equivalente. Como n~ao temos
-transi
~oes, o -fe ho de q0 e fq0 g. Assim, introduziremos primeiro, o estado ini ial fq0 g
em GD . Como N (q0 ; 0) = fq0 ; q1 g, introduzimos o estado fq0 ; q1 g em GD e adi ionamos
uma aresta rotulada 0 entre fq0 g e fq0 ; q1 g, isto e, D (fq0 g; 0) = fq0 ; q1 g. Da mesma
maneira, omo N (q0 ; 1) = ;, in orporamos o novo estado de morte e uma aresta, rotulada
1, entre fq0 g e ele.

Exemplo 2.5.4

Existem, agora, algumas arestas faltando, portanto ontinuemos usando o algoritmo


do teorema 2.5.3. Assim, al ulamos
D (fq0 ; q1 g; 0)

= N (q0 ; 0) [ N (q1 ; 0)
= fq0 ; q1 g [ ;
= fq0 ; q1 g

D (fq0 ; q1 g; 1)

= N (q0 ; 1) [ N (q1 ; 1)
= ; [ fq2 g
= fq2 g

Isso nos da o novo estado fq2 g. Como o novo estado


dele, apli amos novamente o algoritmo.
D (fq2 g; 0)

= N (q2 ; 0) = fq1 g

D (fq2 g; 1)

= N (q2 ; 1) = fq2 g

fq2 g n~ao tem arestas saindo

Apli ando o algoritmo para o novo estado


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

fq1 g, temos que adi ionar as arestas

37

2.5. Equival^
en ia entre afd's e afn's

D (fq1 g; 0)

= N (fq1 ; 0) = ;

D (fq1 g; 1)

= N (q1 ; 1) = fq2 g:

1
0

{q0.q1}

{q0}

{q1}

{q2}

0,1

Figura 2.18: afd equivalente ao afn da gura 2.17.

Como todos os verti es em GD tem arestas saindo rotuladas por 0 e 1, paramos o


pro esso de gera ~ao de arestas e estados. O ultimo ponto e identi ar os estados nais.
Como o uni o estado nal em 2.17 e o estado q1 , em GD teremos omo estados nais os
estados fq1 g e fq0 ; q1 g. A gura 2.20 mostra a afd resultante da apli a ~ao do algoritmo
afn-para-afd.

Converter o afn da gura 2.19 num afd equivalente. Como temos uma
-transi
~ao de q0 a q1 e outra -transi ~ao de q1 a q2 , ent~ao nesse automato podemos
atingir q1 e q2 a partir de q0 sem onsumir nenhum smbolo. Assim, o -fe ho de q0 e
fq0 ; q1 ; q2 g e portanto introduziremos o estado ini ial fq0 ; q1 ; q2 g em GD . Agora iremos
ompletando o afd usando o algoritmo afn-para-afd.
Exemplo 2.5.5

38

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

Figura 2.19: Exemplo de afn.

D (fq0 ; q1 ; q2 g; 0) = -f e ho(N (q0 ; 0)) [ -f e ho(N (q1 ; 0)) [ -f e ho(N (q2 ; 0))
= -f e ho(fq0 g) [ -f e ho(;) [ -f e ho(fq2 g)
= fq0 ; q1 ; q2 g [ ; [ fq2 g
= fq0 ; q1 ; q2 g
D (fq0 ; q1 ; q2 g; 1) = -f e ho(N (q0 ; 1)) [ -f e ho(N (q1 ; 1)) [ -f e ho(q2 ; 1))
= -f e ho(;) [ -f e ho(fq1 g) [ -f e ho(;)
= ; [ fq1 ; q2 g [ ;
= fq1 ; q2 g
Este passo do algoritmo gerou o novo estado

fq1 ; q2 g.

Portanto, repetimos o passo 2

do algoritmo.

D (fq1 ; q2 g; 0) = -f e ho(N (q1 ; 0)) [ -f e ho(N (q2 ; 0))


= -f e ho(;) [ -f e ho(fq2 g)
= ; [ fq2 g
= fq2 g
D (fq1 ; q2 g; 1) = -f e ho(N (q1 ; 1)) [ -f e ho(q2 ; 1))
= -f e ho(fq1 g) [ -f e ho(;)
= fq1 ; q2 g [ ;
= fq1 ; q2 g
Este passo gerou outro estado novo:

fq2 g.

Portanto, devemos ontinuar apli ando o

passo 2 do algoritmo.

D (fq2 g; 0) = -f e ho(N (q2 ; 0))


= -f e ho(fq2 g)
= fq2 g
D (fq2 g; 1) = -f e ho(q2 ; 1))
= -f e ho(;)
=

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

39

2.5. Equival^
en ia entre afd's e afn's

Este passo gerou outro estado novo: ;. Portanto, devemos ontinuar apli ando o passo
2 do algoritmo.
D (;; 0)
D (;; 1)

=;
=;

Como n~ao foi gerado nenhum novo estado, ent~ao o passo 2 do algoritmo esta on luido.
No passo 3, so devemos identi ar os estados nais, isto e, todos aqueles estados que
ontem algum estado nal do aut^omato original, ou seja q2 . Portanto, os estados nais
do novo aut^omato ser~ao todos o estado a menos do estado ;. A gura 2.19 mostra o
aut^omato nito determinsti o resultante deste algoritmo.

{q0,q1,
q2}

{q1,q2}

0,1

1
{q2}

Figura 2.20: afd equivalente ao afn da gura 2.19.

40

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

2.6

Exer 
 ios

1. Construir um aut^
omato para re onhe er somente a sequ^
en ia 10110.

2. Quais das seguintes adeias 0001, 010011, 0000110 s~


ao re onhe idas pelo aut^
omato
abaixo.

0
1

q
0

3. Construir um aut^
omato que re onhe er
a qualquer adeia ontendo um n
umero qualquer de 
opias de 001, seguido por 1 e nenhuma outra adeia.
As adeias re onhe idas por este aut^
omato s~
ao do tipo: 0011, 0010011, 0010010011,
et .

4. Para ada um dos seguintes asos, onstruir um aut^


omato que om os s
mbolos de
entrada

a; b; ; d re onhe a a des ri ~ao das adeias dadas e n~ao outras.

(a) Qualquer adeia onsistindo somente de


(b) Qualquer adeia terminando om um

a's.

a.

( ) Qualquer adeia onsistindo de um n


umero positivo de 
opias de

ab.

(d) Qualquer adeia onsistindo de um n


umero inteiro n~
ao-negativo de sub adeias
obtidas de

a e b d, isto e, fa; b dg .

5. Dar afd's para os sub onjuntos de

Por exemplo,

, a, b d, ab d, b dab d, et .

fa; bg onsistindo de

a.
Todas as adeias om no m
nimo um a.
Todas as adeias om mais do que tr^
es a's.

(a) Todas as adeias om exatamente um


(b)
( )

6. Dar um afd para a linguagem

L = fab5 wb4 = w 2 fa; bg g


7. Dar uma afd que a eite os n
umeros, no sistema bin
ario, que s~
ao m
ultiplos de 4.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
41

2.6. Exer 
 ios

8. Construa um re onhe edor nito n~ao-determinsti o que a eite todos os numeros


binarios multiplos de dois e de tr^es. Isto e, deve re onhe er a linguagem

L = f0; 10; 11; 100; 110; 1000; 1001; 1010; 1100; : : :g;
9. Dar uma des ri ~ao em nota ~ao de onjunto da linguagem re onhe ida pelo aut^omato
no diagrama seguinte. E possvel forne er uma ara teriza ~ao verbal, simples, dessa
linguagem?
0

0
1

q
0

10. En ontre afd's para as linguagens seguintes s^obre  = fa; bg.


(a)
(b)
( )
(d)
(e)

L = fw 2  = j w j mod 3 = 0g,
L = fw 2  = j w j mod 5 6= 0g,
L = fw 2  = Na(w)mod 3 > 1g,
L = fw 2  j Na (w) = 2 e Nb(w) e par g;
L = fw 2  j 2  Na (w)  4g;

onde Na(w) e o numero de a's que guram em w e j w j e o tamanho da aeia w.


11. Considere o onjunto das adeias, s^obre f0; 1g, de nido pela ondi ~ao abaixo. Exiba
um afd para ada um desses onjunto.
(a) Todo 00 e seguido imediatamente por 1. Por exemplo, as adeias 101, 0010,
0010111001 est~ao na linguagem, mas 0001 e 00100, n~ao est~ao.
(b) O smbolo mais a esquerda difere do mais a direita.
( ) Toda sub adeia de quatro smbolos tem, quando muito, dois zeros. Por exemplo, 0011100, 001101 e 1010101 est~ao na linguagem, mas 10100110 n~ao esta,
pois uma de suas sub adeias de quatro smbolos, 0100, ontem tr^es zeros.
12. Mostre que a linguagem L = fvwv=v; w 2 fa; bg e j v j= 2g e regular.
13. Seja M = hQ; ; ; q0 ; F i um afd. Mostre que  (q; vw) = ((q; v); w) para todo
v; w 2  .
42

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 2. Aut^
omatos Finitos

14. Seja
L2 .

L a linguagem a eita pelo aut^omato da gura

15. Para o afn na gura 2.10, a he


16. Na gura 2.12, a he

 (q0 ; 00101)

2.2. A har um afd que a eite

 (q1 ; 100).

 (q0 ; aa).

17. Na gura 2.12, a he -f e ho(q1 ).


18. Projete um afn, om n~ao mais que in o estados, para o onjunto

fababn = n  0g [ faban= n  0g
19. Construa um afn om tr^es estados que a eite a linguagem fab; ab g .
20. Construa um afn que a eite a linguagem de todas as adeias sobre o alfabeto f0; 1g
om um numero par de 1's ou um numero mpar de 0's.
21. Quais das adeias 00, 0100010, 10010, 000, 0000 s~ao a eitas pelo seguinte aut^omato?
1
0,1

q
0

0,

22. De uma des ri ~ao \simples" da linguagem do exer  io anterior.


23. Use a onstru ~ao do teorema 2.5.3 para onverter o afn na gura 2.15 para um
 possvel resposta mais simples diretamente?
afd. E
24. Use o algoritmo afn-para-afd, mostrado no teorema 2.5.3, para onverter o automato
nito n~ao determinsti o do exer  io 20.
25. Converter, usando o algoritmo afn-para-afd, o seguinte afn para um afd equivalente.
1

0,1

q
0

0,

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

43

2.6. Exer 
 ios

1
b
a

26. Converter, usando o algoritmo afn-para-afd, o afn, da gura a ima, num afd equivalente.
27. E verdade que para qualquer afn M = Q; ; ; q0 ; F o omplemento de L(M ) e
igual ao onjunto w  = (q0; w) F = ? Prove sua resposta.
28. A har um afn, sem -transi ~oes, om um uni o estado nal que a eita o onjunto
a
bn =n
1.
29. Prove que toda linguagem nita e regular.
30. Mostre que se e regular, ent~ao R e s~ao regulares.
31. Mostre que se 1 e 2 s~ao linguagens regulares, ent~ao 1 2 e 1 2 s~ao regulares.
h

f g[f

;g

44

L [L

L L

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3
Express~
oes e Gram
ati as Regulares

Segundo nossa de ni ~ao, uma linguagem e regular se existe um re onhe edor nito para
ela. Assim, toda linguagem regular pode ser des rita por algum afd ou algum afn. Tal
des ri ~ao pode ser muito util, por exemplo, se quisermos mostrar a logi a por meio da
qual de idimos se uma dada adeia perten e a uma erta linguagem. Mas em muitos
exemplos, pre isamos de um modo mais simples de des rever linguagens regulares.
3.1

Express~
oes Regulares

Um modo de des rever linguagens regulares e atraves da nota ~ao de express~oes regulares. Essa nota ~ao envolve uma ombina ~ao de adeias de smbolos de algum alfabeto ,
par^enteses e os operadores +, e  . O aso mais simples e a linguagem a , que sera
denotado pela express~ao regular a.
Ligeiramente mais ompli ada e a linguagem a; b; , na qual usaremos \+" para denotar uni~ao, obtendo a + b + , pois a; b; = a b . Usaremos \ " para on aten ~ao
e \" para o fe ho-estrela. A express~ao (a+b ) representa ; a; b ; aa; ab ; b b ; aaa; : : : .
No que segue, daremos uma de ni ~ao re ursiva para express~ao regular.


f g

f g[f g[f g


De ni ~ao 3.1.1 Seja  um alfabeto. Ent~ao


1. ;,  e a, para todo a 2 , s~ao express~oes regulares. Elas s~ao hamadas express~
oes
regulares primitivas.
2. Se r1 e r2 s~ao express~oes regulares, ent~ao r1 + r2 , r1  r2 , r1 e (r1 ) s~ao express~oes
regulares.
3. Uma adeia e uma express~
ao regular se, e somente se, ela pode ser derivada de
express~oes regulares primitivas, apli ando a regra 2., um numero nito de vezes.

45

3.1. Express~oes Regulares


Exemplo 3.1.2 Para  = fa; b; g, a adeia (a + b  )  ( + ;) e uma express~ao regular,

pois ela e onstruda apli ando as regras a ima. Por exemplo, se r1 = e r2 = ;, a hamos
+ ;, que e uma express~ao regular. Usando esse argumento varias vezes mostraremos que
a express~ao toda e regular. Por outro lado, (a + b+) n~ao e uma express~ao regular.

Linguagens Asso iadas as Express~


oes Regulares

Express~oes regulares nos s~ao uteis para des revermos linguagens regulares. A onex~ao
entre express~oes regulares e linguagens e simples. Em geral, se r e uma express~ao regular,
L(r) representa a linguagem denotada por r.
De ni ~ao 3.1.3 A linguagem L(r), denotada por qualquer express~ao regular r, e de nida
pelas seguintes regras:
1. L(;) = ;,
2. L() = fg,
3. L(a) = fag, para todo a 2 ,
4. Se r1 e r2 s~ao express~oes regulares, ent~ao
(a) L(r1 + r2 ) = L(r1 ) [ L(r2 ),
(b) L(r1  r2 ) = L(r1 )L(r2 ),
( ) L((r1 )) = L(r1 ),

(d) L(r1 ) = (L(r1 )) ,

As quatro ultimas regras (4.(a) ate 4.(d)), dessa de ni ~ao, s~ao usadas para reduzir
re ursivamente, as omponentes mais simples. As tr^es primeiras s~ao as ondi ~oes
de termino para essa re urs~ao.

L(r),

Exemplo 3.1.4 Exibir a linguagem L(a  (a + b)), em nota ~ao de onjunto.


L(a  (a + b))

= L(a )L(a + b)
= (L(a)) (L(a) L(b))
= a ( a b )
= ; a; aa; aaa; : : : a; b
= a; b; aa; ab; aaa; aab; aaaa; aaab; : : :
[

f g
f

46

f g[f g

gf

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

Existe um problema om as regras de 4.(a) a 4.(d) na de ni ~ao 3.1.3. Elas de nem
uma linguagem se r1 e r2 s~ao dadas, mas pode existir uma ambiguidade em quebrar uma
express~ao ompli ada em partes. Considere, por exemplo, a express~ao regular a b + .
Podemos onsidera-la omo sendo r1 + r2 , para r1 = a b e r2 = . Nesse aso, a hamos
L(a b + ) = ab; . Mas n~ao ha nada na de ni ~ao para onsidera-la omo sendo r1 r2 ,
para r1 = a e r2 = b + . Agora, obtemos um resultado diferente, L(a b + ) = ab; a .
Para superar isso, poderamos exigir que todas as express~oes fossem ompletamente parentizadas, porem teramos omo resultado express~oes muito arregadas. Em vez disso,
usaremos uma onve ~ao familiar em matemati a e em linguagens de programa ~ao. Estabele eremos um onjunto de regras de pre ed^en ia para a avalia ~ao na qual o fe ho-estrela
pre ede a on atena ~ao e esta pre ede a uni~ao. Assim, no aso da express~ao regular a b +
a avalia ~ao orreta seria a primeira. Os par^enteses s~ao avaliados dos mais internos aos
mais externos. Alem disso, o smbolo para a on atena ~ao pode ser omitido e, portanto,
podemos es rever r1r2 , no lugar de r1 r2.


Exemplo 3.1.5

a linguagem

Para

 = a; b
f

, a express~ao r = (a + b) (a + bb) e regular. Ela denota

L(r) = fa; bb; aa; abb; ba; bbb; aaa; aabb; aba; abbb; bba; bbbb; : : : g
Podemos v^er isso onsiderando as varias partes de r. A primeira parte, (a + b) ,
representa qualquer adeia de a's e b's. A segunda parte, (a + bb), representa ou um a ou
duas opias de b. Consequentemente, L(r) e o onjunto de todas as adeias sobre fa; bg,
que terminam em a ou em bb. Podemos, tambem, obter este resultado usando as regras da
de ni a~o 3.1.3, junto om as regras de pre ed^en ia des ritas anteriormente, omo segue

L(r)

= L((a + b))L(a + bb)


= (L((a + b)))(L(a) L(bb)
= (L(a + b))( a (L(b)L(b))
= (L(a) L(b)) ( a ( b b )
= ( a b ) a; bb
= ; a; b; aa; ab; ba; bb; aaa; : : :
= a; b  a; bb
= a; bb; aa; abb; ba; bbb; aaa; aabb; aba; abbb; bba; bbbb; : : :
[

f g[

f g[f g

f g[

f gf g

g f

Exemplo 3.1.6

A express~ao

r = (aa) (bb) b
denota o onjunto de todas as adeias om um numero par de a's (0 e onsiderado par),
seguido por um numero mpar de b's, isto e,

L(r) = fa2n b2m+1 = n  0; m  0g


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

47

3.1. Express~
oes Regulares

Exemplo 3.1.7 Para

 = f0; 1g, es rever uma express~ao regular r tal que

L(r) = fw 2  = w

g:

tem pelo menos um par de zeros onse utivos

Usaremos o seguinte ra io 
nio: toda adeia em

L(r)

deve onter

00 em algum lugar,

mas o que vem antes e o que vem depois 


e ompletamente arbitr
ario. Uma adeia arbitr
aria, s^
obre

f0; 1g

pode ser denotada por

(0 + 1).

Colo ando juntas essas observa


~
oes,

hegamos 
a solu
~
ao

r = (0 + 1) 00(0 + 1) :


Exemplo 3.1.8 A har uma express~
ao regular para a linguagem

L = fw 2 f0; 1g= w

g:

n~
ao tem nenhum par de zeros onse utivos

Embora esse exemplo pare


a om o anterior ele 
e muito mais dif
 il de se onstruir.
Uma observa
~
ao u
til 
e que se um

0 o orre ele deve ser imediatamente seguido de um 1

(sen~ao deve ser o ultimo 0). Tal sub adeia pode ser seguida ou pre edida por um numero
1's. Isto sugere que a resposta envolve a repeti ~ao de adeias da forma 1n01m,

 
om n  0 e m  1, ou seja, a linguagem denotada pela express~
ao regular (1 011 ) . Entretanto, a resposta ainda est
a in ompleta, pois a adeia terminando em 0 ou onsistindo
de 1's somente n~
ao foram onsideradas. Ap
os levar em onta esses, e outros, asos espearbitr
ario de

iais, hegamos 
a seguinte resposta

r = (1 011 ) (0 + ) + 1 (0 + ):


Se ra io inarmos de modo ligeiramente diferente, podemos hegar a uma outra resposta. Se olharmos para

, omo a repeti
~
ao das adeias

1 e 01, a express~ao mais urta

r = (1 + 01) (0 + );

(1+ 01), garante que so obteremos adeias sem dois


0's onse utivos. A segunda parte, (0+ ), garante que estas adeias sem 0's onse utivos
podem ou n~
ao terminar em 0. Uma resposta an
aloga, usando um ra io 
nio inverso seria

poder
a ser obtida. A primeira parte,

r = (0 + )(1 + 10) :
Embora a primeira express~
ao regular pare
a diferente das duas u
ltimas, ambas as respostas est~
ao orretas, elas denotam a mesma linguagem.

Em geral, existe um n
umero

ilimitado de express~
oes regulares para uma dada linguagem.

48

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

O exemplo, a ima, introduz a no ~ao de equival^en ia de express~oes regulares. Dizemos


que duas express~oes regulares s~ao equivalentes se elas denotam a mesma linguagem,
isto e, as express~oes regulares r1 e r2 s~ao equivalentes a r2 , denotado por r1  r2 , se
L(r1 ) = L(r2 ).
Exemplo 3.1.9

Mostre que as express~oes regulares (a + b) e equivalente a (a b ) .

Para mostrar que (a + b)  (b + a) devemos mostrar que L((a + b)) = L((a b ) )

L((a + b) ) = L((a + b))


= (L(a) + L(b))
= (fag [ fbg)
= fa; bg
= f; a; b; aa; ab; ba; bb; aaa; : : :g
L((a b ) ) = L(a b )
= (L(a )L(b ))
= (L(a) L(b) )
= (fag fbg )
= (f; a; aa; aaa; : : :gf; b; bb; bbb; : : :g)
= f; b; a; bb; ab; aa; bbb; abb; aab; aaa : : :g
= f; a; b; aa; ab; ba; bb; aaa; : : :g
Logo, L((a + b) = L((a b ) ), e, portanto, (a + b)  (b + a) .
Exemplo 3.1.10

Sejam r1 , r2 e r3 tr^es express~oes regulares arbitrarias. Ent~ao

r1 (r2 + r3 )  r1 r2 + r1 r3 :
L(r1 (r2 + r3 )) = L(r1 )L(r2 + r3 )
= L(r1 )(L(r2 ) [ L(r3 ))
= L(r1 )L(r2 ) [ L(r1 )L(r3 )
= L(r1 r2 ) [ L(r1 r3 )
= L(r1 r2 + r1 r3 )
Logo, r1 (r2 + r3 )  r1 r2 + r1 r3 .
Podemos derivar varias regras para simpli ar express~oes regulares, porem n~ao o faremos aqui.
3.2

Conex~
ao entre Express~
oes Regulares e Linguagens Regulares

Os on eitos de express~ao regular e linguagem regular s~ao, essen ialmente, os mesmos.


Para toda linguagem regular existe uma express~ao regular que a denota e vi e-versa.
Mostraremos esse resultado em duas partes.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

49

3.2. Conex~
ao entre Express~
oes Regulares e Linguagens Regulares

As express~oes regulares denotam linguagens regulares


Mostremos, primeiro, que se r e uma express~ao regular, ent~ao L(r) e uma linguagem
regular. Nossa de ni ~ao diz que uma linguagem e regular se ela e re onhe ida por algum
afd. Como os afd's e os afn's s~ao equivalentes, uma linguagem tambem e regular se
e re onhe ida por algum afn. Mostraremos, agora, que se tivermos qualquer express~ao
regular r, podemos onstruir um afn que re onhe e L(r). A onstru ~ao desse afn se
baseia na de ni ~ao re ursiva de L(r). Antes onstruiremos aut^omatos simples para as
partes de 1. a 3. da de ni ~ao 3.1.3, e, ent~ao mostraremos omo eles s~ao ombinados para
implementar as partes mais ompli adas de 4.a. a 4.d.
Teorema 3.2.1 Seja r uma express~
ao regular. Ent~ao, existe algum afn que re onhe e
L(r). Consequentemente, L(r) e uma linguagem regular e portanto, r espe i a uma
linguagem regular.

Como a de ni ~ao de express~ao regular e indutiva, demonstraremos


este teorema por indu ~ao na omplexidade da express~ao regular r.

~ o:
Demonstra
a

Come aremos om aut^omatos que re onhe em as linguagens para as


express~oes regulares primitivas ;,  e a, para ada a 2 . Esses aut^omatos s~ao mostrados
nas guras 3.1 (a), (b) e ( ), respe tivamente.
Base da indu ~
ao :

(a)

(b)

(c)

Figura 3.1: afn's que a eitam as linguagens regulares ;, fg e fag, respe tivamente.
Suponhamos que existem aut^omatos M (r1 ) e M (r2 ) que re onhe em as linguagens denotadas pelas express~oes regulares r1 e r2, respe tivamente. N~ao
pre isamos onstruir esses aut^omatos expli itamente, mas podemos representa-los esquemati amente, omo na gura 3.2, isto e, omo uma aixa preta ontendo um estado
de in io e outro de sada. Observe que os aut^omatos das guras 3.1.a, 3.1.b e 3.1. ,
t^em estas ara tersti as (um uni o estado nal) e as onstru ~oes que realizaremos aqui
( guras 3.3, 3.4 e 3.5) preservam essas ara tersti as.
Nesse esquema, M (r) e uma aixa preta da qual so sabemos que re onhe e L(r), ujo
verti e a esquerda do grafo representa o estado ini ial e o verti e a direita o estado nal.
Com M (r1 ) e M (r2 ) representados dessa maneira, podemos onstruir aut^omatos para
as express~oes regulares r1 + r2 , r1r2 , r1 e (r1). As onstru ~oes para as tr^es primeiras
Etapa indutiva:

50

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

M(r)

Figura 3.2: Representa ~ao esquem


ati a de um afn que re onhe e

L(r).

M(r )
1

M(r )
2

Figura 3.3: Aut^omato para L(r1 + r2 ).


M(r )

M(r )

Figura 3.4: Aut^omato para L(r1 r2 ).

M(r )
1

Figura 3.5: Aut^omato para L(r1 ).

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

51

3.2. Conex~
ao entre Express~
oes Regulares e Linguagens Regulares

express~oes regulares s~ao mostradas nas guras 3.3 a 3.5, ja a quarta express~ao regular,
isto e (r1), tem omo aut^omato o proprio aut^omato de r1.
Como esta indi ado no desenho, os estados ini ial e nal das maquinas onstituintes
perdem seus status e s~ao tro ados por novos estados ini ial e nal. Combinando varias
etapas omo essas, podemos onstruir aut^omatos para as express~oes regulares arbitrariamente omplexas.
Observando os grafos, e possvel on luir que esta onstru ~ao fun iona.
A har um afd que re onhe e

Exemplo 3.2.2

( ), onde

L r

= (aa + bb) ba:

Para simpli ar vamos fazer diretamente os aut^omatos para as express~oes regulares


mais simples (aa, bb e (ba)). As guras 3.6 e 3.9 mostram esses asos simples. As
guras 3.7 a 3.8 e 3.10 ilustram o pro esso, des rito no teorema 3.2.1, para determinar
o afn desejado.
3.2.1

Linguagens Regulares para Express~


oes Regulares

E razoavel esperar que a inversa do teorema 3.2.1 seja verdadeira e que, portanto, para
toda linguagem regular deve existir uma express~ao regular orrespondente. Como qualquer linguagem regular tem a ele asso iado um afd e portanto um grafo de transi ~ao, tudo
que pre isamos fazer e a har uma express~ao regular apaz de gerar os rotulos de todos
os aminhos do estado ini ial a qualquer estado nal, isto n~ao pare e muito dif il, mas,
ertamente, e um pou o ompli ado. Para obter isso pre isaremos de algum onhe imento intermediario, isto e, de quais s~ao as express~oes regulares que representam as adeias
que saem de um estado q (n~ao ne essariamente o ini ial) e hegam a um estado q0 (n~ao
ne essariamente o nal) sem passar por alguns estados.
Seja L uma linguagem regular. Ent~ao existe uma express~ao regular r tal

Teorema 3.2.3

que

L = L(r).

Seja M um afd que a eita L. Fa ilmente podemos rede nir os estados


de M de tal forma que Q = fq1 ; q2; : : : ; q g, para algum natural n  1. Com isto o estado
ini ial da maquina sera o estado q1 .
Seja R a express~ao regular denotando o onjunto de todas as adeias em w 2 
tal que  (q ; w) = q , sem passar por nenhum estado q , om m > k. Observe que ao
dizer \passar por um estado" estamos so onsiderando os estados intermediarios, isto e,
q 6= q e q 6= q . Assim, i e j podem ser maiores que k .
Podemos de nir R , re ursivamente.
~ o:
Demonstra
a

i;j

i;j

52

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

M1

M2

M1 re onhe e L(aa) e M2 re onhe e L(bb).

Figura 3.6:

M3

Figura 3.7:

M3 re onhe e L(aa + bb).


M4

Figura 3.8:

M4 re onhe e L((aa + bb) ).


M 5
b

Figura 3.9:

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

M5 re onhe e L(ba).
53

Figura 3.10:

54

3.2. Conex~
ao entre Express~
oes Regulares e Linguagens Regulares

M6 re onhe e L((aa + bb) ba).


Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

(P
se i 6= j
(qi ;a)=qj a
P
Ri;j =
 + (qi ;a)=qj a se i = j
0

onde a somatoPria e om respeito ao operador +, sobre as express~oes regulares. Assim,


por exemplo, 3i=1 ai e a express~ao regular a1 + a2 + a3 .
k
Ri;j

k 1
k 1  k 1
k 1
= (Ri;k
(Rk;k
) Rk;j ) + Ri;j

k
Da de ni ~ao a ima, Ri;j
e uma express~ao regular.
k
Para mostrar que a de ni ~ao a ima de Ri;j
satisfaz a intui ~ao de ser as adeias que
ausa o aut^omato M ir de qi a qj , sem passar por nenhum estado om ndi e superior
a k, devemos realizar uma analises minu iosa dessa de ni ~ao. Objetivando dar uma
0
evid^en ia disso, note que Ri;j
representa todos os smbolos em  para os quais ha uma
transi ~ao saindo do estado qi ao estado qj e, portanto, nun a passara por nenhum estado
k
k 1
intermediario. Por outro lado, a de ni ~ao de Ri;j
esta omposta so por Rm;n
, om m e n
sendo i; j ou k, pelo que nun a passara por um estado om ndi e superior a k.
Logo,

r=

X
2

qf F

R1n;f ;

para n = Q (o numero de estados do aut^omato) e a express~ao regular que denota as


adeias em  que s~ao a eitas por M .
Assim, omo onsequ^en ia destes dois ultimos teoremas temos que a lasse de linguagens des rita pelas express~oes regulares e a lasse das linguagens regulares. Portanto, as
express~oes regulares, afd's e afn's tem a mesma poten ialidade, porem divergem na sua
natureza. Enquanto as express~oes regulares des revem ou denotam linguagens regulares
os afd's e afn's re onhe em tais linguagens.
j

Seja M o aut^omato da gura 3.11. A seguir usaremos o \algoritmo"


da prova do teorema anterior para determinar a express~ao regular que des reve L(M ).

Exemplo 3.2.4

1
0

Figura 3.11: afd para o exemplo 3.2.4.


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

55

3.3. Gramati as Regulares


Segundo esse teorema devemos a har R12 2 , mas, da de ni ~ao de R , devemos antes
a har R11 2 e R21 2 . Para a har estas express~oes regulares devemos a har R10 1 , R10 2 , R20 1 e
R20 2 . Assim sendo,
k

i;j

R10 1 =  + 1
;

R10 2 = 0
;

R20 1 = 0
;

R20 2 =  + 1
;

R11 2 = (R10 1 (R10 1 ) R10 2 ) + R10 2


= (( + 1)( + 1) 0) + 0
;

= 1 0

R21 2 = (R20 1 (R10 1 ) R10 2 ) + R20 2


= (0( + 1) 0) + ( + 1)
= 01 0 +  + 1
;

R12 2 = (R11 2 (R21 2 ) R21 2 ) + R11 2


= (1 0(01 0 +  + 1) (01 0 +  + 1)) + (1 0)
= 1 0(01 0 +  + 1) + 1 0
;

= 1 0(01 0 + 1)

Logo, a express~ao regular que representa a linguagem regular re onhe ida pelo aut^omato
da gura 3.11 e
1 0(01 0 + 1) ;

que representa a linguagem de todas as adeias no alfabeto f0; 1g, om uma quantidade
mpar de 0's.

3.3 Gramati as Regulares


Uma ter eira maneira de des rever uma linguagem regular e atraves de ertas gramati as
simples. Gramati as s~ao modos alternativos de espe i ar linguagens. Sempre que des revermos uma famlia de linguagens atraves de um aut^omato ou de qualquer outra maneira,
estaremos interessados em saber que espe ie de gramati a podemos asso iar a essa famlia.
Pois, ela des reve omo podem ser gerados os elementos da linguagem.

56

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 3. Express~oes e Gramati as Regulares


De ni ~ao 3.3.1 Uma gramati a G = hV; T ; S; P i diz-se linear se todas as produ ~oes s~ao
da forma

!
!
!

A
A
A

wB
Bw
w;

onde A; B 2 V e w 2 T  .
Uma gramati a linear e linear 
a esquerda se n~ao tem produ ~oes da forma A ! Bw.
Analogamente, uma gramati a linear e linear 
a direita se n~ao tem produ ~oes da forma
A
! wB .
Uma gram
ati a regular e uma gramati a linear a direita ou linear a esquerda.
Observe que nem toda gram
ati a linear 
e regular. Por exemplo, a gram
ati a

aS

Sb

ab


e linear mas n~
ao 
e regular.
Note que em uma gram
ati a regular apare e, no m
aximo, uma vari
avel no lado direito
e uma no lado esquerdo de qualquer produ
~
ao. Al
em disso, a vari
avel do lado direito ou 
e
sempre o s
mbolo mais 
a esquerda ou o s
mbolo mais 
a direita do lado direito de qualquer
produ
~
ao.

Exemplo 3.3.2 A gramati a G1 = hfS g; fa; bg; S; P1i, om P1 dado omo

!
j
hf g f g

e linear a direita. A gramati a

G2 =

abS

a; b ; S; P2

S ba

i, om

P2

de nido omo

e linear a esquerda. Ambas geram a mesma linguagem, isto e,


parti ular a sequ^en ia

S =

e uma deriva ~ao de

, om

ababa

G1

S =

abS =

ababS =

L(G1 ) = L(G2 )

. Em

ababa

e a sequ^en ia

S ba =

S baba =

ababa

e uma deriva ~ao da mesma adeia, mas atraves de G2 . A partir desse exemplo simples
podemos onje turar que L(G1 ), e portanto L(G2 ) tambem, e a linguagem regular (ab) a.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
57

3.3. Gramati as Regulares


Exemplo 3.3.3 Des rever uma gramati a regular que gere a linguagem regular de todas
as adeias no alfabeto f0; 1g que n~ao ontenha dois 0's seguidos.
Uma tal gramati a deve ter as produ ~oes de modo que sempre que possa gerar quantos
quizer mas ao gerar um 0 deva, em seguida, gerar um 1 ou terminar de produzir. Assim, a gramati a e G = hfS; Ag; f0; 1g; S; P i, onde P e omposto das seguintes produ ~oes
1's

! 0A j A
! 1A j 10A j

S
A

Exemplo 3.3.4 Des rever uma gramati a regular que gere a linguagem, sobre o alfabeto
fa; b; g, de todas as adeias da forma an bm p, om n  0, m  0 e p  0.
Uma tal gramati a deve ter uma produ ~ao que permita a gera ~ao arbitraria de a's, e
que permita a passagem para uma outra produ ~ao que gere uma quantidade arbitraria
de b0 s e esta possibilite a ida a uma produ ~ao que gere um quantidade arbitraria de
's. Assim, a gramati a deve ter tr^es variaveis, uma (A) para gerar a's, outra (B )
para geras os b's e a ultima (C ) para gerar os 's. Uma tal gramati a e de nida por
G = hfA; B; C g; fa; b; g; A; P i, onde P e omposto das seguintes produ ~oes

A
B
C

!
!
!

aA
bB
C

j
j
j

B
C


Exemplo 3.3.5 Seja a linguagem LP al de todas as adeias sobre o alfabeto fa; bg que
quando lidas de esquerda a direita seja o mesmo que quando lida de direita a esquerda.
Este tipo de adeias s~ao onhe idas omo palndromos. Ou seja,

LP al = fw 2 fa; bg = w = wR g:
A gramati a G = hfS; A; B g; fa; bg; S; P i om produ ~oes

S
A
B

!
!
!

aA
Sa
Sb

j bB j
j
j

gera esta linguagem, isto e, L(G) = LP al . Observe que a gramati a G e linear mas n~ao
e linear a direita, nem linear a esquerda, portanto n~ao e regular. Embora toda produ a~o
seja ou linear a direita ou linear a esquerda, a gramati a propriamente n~ao e nem linear a
direita nem linear a esquerda. Esta gramati a e um exemplo de uma gram
ati a linear.
Mais ainda, na se ~ao 3.4.2. veremos que esta linguagem n~ao e regular e, portanto omo
veremos nas se ~oes subsequentes, n~ao existe qualquer gramati a regular que a gere.

58

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

3.3.1

Gramati as Lineares a Direita geram Linguages Regulares

Primeiramente, mostraremos que uma linguagem gerada por uma gramati a linear a direita e sempre regular. Para isso onstruiremos um afn que simula as deriva ~oes de uma
gramati a linear a direita. Observe que as formas senten iais de uma gramati a linear a
direita tem uma forma espe ial na qual existe exatamente uma variavel que o orre omo
smbolo mais a direita. Suponha que temos uma etapa
a1 a2 : : : an A

=) a1 a2 : : : an bB

numa deriva ~ao, obtida usando-se uma produ ~ao A ! bB . O afn orrespondente pode
imitar esta etapa indo do estado A para o estado B , quando o smbolo b for en ontrado.
Nesse esquema, o estado do aut^omato orresponde a variavel na forma senten ial, enquanto a parte da adeia ja pro essada e id^enti a ao pre xo terminal da forma senten ial.
Esta ideia simples e a base da prova do seguinte teorema.
Teorema 3.3.6 Seja G = hV; T; S; P i uma gram
ati a linear a direita. Ent~ao L(G) e uma
linguagem regular.

~ o: Vamos assumir que V = fV0 ; V1 ; : : : ; Vn g, om S = V0 e que para ada


Demonstra
a

= 0; : : : ; n, temos uma ou mais produ ~oes da forma Vi ! wi Vj ou Vi ! wi . Se w e


uma adeia em L(G), ent~ao por ausa da forma das produ ~oes em G, a deriva ~ao deve
ter a forma

V0

=) w1 Vi1
=) w1 w2 Vi2
=) w1 w2 : : : wk Vik
=) w1 w2 : : : wk wl = w:

(3.1)

O aut^omato M a ser onstrudo reproduzira a deriva ~ao onsumindo ada um desses


O estado ini ial do aut^omato sera rotulado V0 e existira um uni o estado nal Vf ,
om f > n. Para ada variavel Vi , om i = 0; : : : ; n, existira uma estado n~ao nal rotulado
Vi . Para ada produ ~
ao
wi0 s.

Vi

! a1a2 : : : amVj ;

o aut^omato tera transi ~oes para one tar

Vi

Vj ,

isto e, sera de nido tal que

 (Vi ; a1 a2 : : : am )

= Vj :

Para ada produ ~ao


Vi

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

! a1 a2 : : : am ;
59

3.3. Gramati as Regulares


a transi ~ao do aut^omato orrespondente sera
 (Vi ; a1 a2 : : : am )

= Vf :

Os estados intermediarios ne essarios para isso n~ao s~ao de interesse e podem ser dados
rotulos arbitrarios. O esquema geral e mostrado na gura 3.12. O aut^omato ompleto e
montado destas partes individuais.
V

a1

a2

am

Vj

a1

a2

am

Vf

Figura 3.12: Representam

Vi

! a1 a2 : : : am Vj e Vi ! a1a2 : : : am , respe tivamente.

Suponha, agora, que w 2 L(G) tal que ( 3.1) e satisfeita. No afn existe, por onstru ~ao,
um aminho de V0 a Vi rotulado w1 , um aminho de Vi a Vj rotulado w2 , e assim por
diante, tal que, laramente
Vf

e a eito por

2 (V0 ; w);

M.

Inversamente, suponha que w e a eito por M . Pelo modo omo M foi onstrudo,
para a eitar w o aut^omato tem de passar pela sequ^en ia de estados V0 , Vi , : : : para Vf ,
usando aminhos rotulados w1 ; w2; : : : Portanto, w deve ter a forma w = w1 w2 : : : wl e a
deriva ~ao
V0

=) w1 Vi =) w1 w2 Vj =) w1 w2 : : : wk Vf =) w1 w2 : : : wk wl

e possvel. Logo w esta em L(G), e assim o teorema esta provado.

Exemplo 3.3.7 Construir um aut^omato que a eite a linguagem gerada pela gramati a
V0
V1
Vf

60

! aV1
! abV0 j

Come amos do grafo de transi ~ao om verti es V0 , V1 e Vf . V0 e o estado ini ial e


o estado nal. A primeira regra de produ ~ao ria uma aresta rotulada a entre V0 e
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

V1 .

Para a segunda regra, pre isamos introduzir um verti e adi ional tal que exista um
aminho rotulado ab entre V1 e V0 . Finalmente, pre isamos adi ionar uma aresta rotulado
b entre V1 e Vf , dando o aut^
omato mostrado na gura 3.13. A linguagem gerada pela
gramati a e re onhe ida pelo aut^omato e a linguagem regular L((aab) ab).
V

Vf

Figura 3.13: afn resultante de uma gramati a linear a direita.


3.3.2

Linguagens Regulares para Gramati as Lineares a Direita

Para mostrar que toda linguagem regular pode ser gerada por alguma gramati a linear
a direita, ome amos do afd para a linguagem e invertemos a onstru ~ao mostrada no
teorema 3.3.6. Os estados do afd tornam-se agora as variaveis da gramati a, e os smbolos
que ausam as transi ~oes tornam-se os terminais nas produ ~oes.
Se L e uma linguagem regular, s^obre o alfabeto
gramati a linear a direita, G = hV; T; S; P i, tal que L(G) = L.

Teorema 3.3.8

,

ent~ao existe uma

Seja M = hQ; ; ; q0 ; F i um afd que a eita L. Assumiremos que


Q = fq0 ; q1 ; : : : ; qn g e  = fa1 ; a2 ; : : : ; am g. Vamos onstruir uma gram
ati a linear a
direita G = hV; T; S; P i, om V = fq0 ; q1; : : : ; qng, T =  e S = q0. Para ada transi ~ao
ao qi ! aj qk . Alem disso, para ada qf
(qi ; aj ) = qk de M , olo amos em P a produ ~
em F , a res entamos a P a produ ~ao qf ! .
Primeiro, mostraremos que G de nida dessa maneira pode gerar toda adeia em L.
Considere w 2 L da forma w = aiaj : : : ak al .
Para M a eitar essa adeia ele deve se movimentar via
(q0 ; ai ) = qp ,
(qp ; aj ) = qr ,
...
(qs ; ak ) = qt

~ o:
Demonstra
a

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

61

3.3. Gramati as Regulares


(qt ; al ) = qf

2 F.

Por onstru ~ao, a gram


ati a tera uma produ ~ao para um desses 's. Portanto, podemos
fazer a deriva ~ao

) aiqp =) aiaj qr =) aiaj : : : ak qt =) aiaj : : : ak al qf =) ai aj : : : ak al ;

q0 =

om a gramati a G, e w 2 L(G). Inversamente se w


ter a forma ( 3.2). Mas isto impli a que

(3.2)

2 L(G), ent~ao sua deriva ~ao deve

 (q0 ; ai aj : : : ak al ) = qf ;

ompletando a prova.

Exemplo 3.3.9

Seja o afd do exer 


 io 2 do ap
tulo anterior.

Do grafo de transi
a
~o

e do teorema anterior, podemos observar que a gram


ati a linear 
a direita que gera a
linguagem re onhe ida por este aut^
omato 
e

G=

hfq0 ; q1; q2g; f0; 1g; q0; P i

, onde


e dado

pelo seguinte onjunto de produ


~
oes

q0
q1
q2
A adeia

001100

! 0q 0 j
! 0q 0 j
! 0q 2 j

1q1
1q2
1q1

pode ser derivada da gram


ati a onstru
da omo segue

) 0q0 =) 00q0 =) 001q1 =) 0011q2 =) 00110q1 =) 001100q1 =) 001100 = 001100:

q0 =

3.3.3

Equival^en ia entre Linguagens Regulares e Gramati as Regulares

Os resultados anteriores estabele em a onex~ao entre linguagens regulares e gramati as


lineares a direita. Podemos fazer uma onex~
ao analoga entre linguagens regulares e
gramati as lineares a esquerda, mostrando, assim, a ompleta equival^en ia de gramati as
regulares e linguagens regulares.

Teorema 3.3.10
a esquerda,


62

G,

Uma linguagem

tal que

L(G) =


e regular se e somente se existe uma gram
ati a linear

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

~ o:
Demonstra
a

Seja G uma gram


ati a linear 
a esquerda.

Para ada produ


~
ao de G

da forma

Bw;

ou

w;

troque ela por uma produ


~
ao da forma

R B;

ou

respe tivamente. Claramente, a gram


ati a G

resultante deste pro esso 


e linear 
a direita

R.

R;

e, mais ainda, L(G ) = (L(G))


Do exer 
 io

30 do ap
tulo anterior, temos que o reverso de qualquer linguagem

regular 
e regular. Como, pelo teorema

3.3.6, L(G ) 
e regular, ent~
ao L(G) tamb
em 
e uma

linguagem regular.
Por outro lado, seja

uma linguagem regular, ent~


ao pelo exer 
 io

anterior, temos que o reverso de

LR

, isto 
e

30 do ap
tulo

, 
e uma linguagem regular. Logo, pelo teorema

3.3.8, existe uma gram


ati a linear 
a direita G, tal que L(G) =

LR

Assim, usando um

pro esso an


alogo ao anterior, podemos onstruir uma gram
ati a linear 
a esquerda a partir
de G, simplesmente, tro ando as produ
~
oes da forma

wB;

ou

pelas produ
~
oes da forma
A

!
!

w;

Bw

R;

ou

R;

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
63

3.4. Propriedades das Linguagens Regulares

respe tivamente. Claramente, a gramati a linear a esquerda G , resultante deste pro esso,
e tal que L(G ) = (L(G))R . Logo, L(G ) = (L(G))R = (LR )R = L. Portanto, para ada
linguagem regular, L, existe uma gramati a linear a esquerda que gera ele.
0

Colo ando os teoremas 3.3.6, 3.3.8 3.3.10 juntos temos a equival^en ia entre linguagens
regulares e gramati as regulares.
Uma linguagem,
tal que L(G) = L.

Teorema 3.3.11

regular

L,

e regular se e somente se existe uma gramati a

~ o: Direto dos teoremas 3.3.6, 3.3.8 e 3.3.10.


Demonstra
a
3.4

Propriedades das Linguagens Regulares

Estamos no momento de olo ar a seguinte quest~ao: qu~ao geral s~ao as linguagens regulares? Seria toda linguagem formal regular? Talvez qualquer onjunto que possamos
espe i ar seja a eito por algum aut^omato nito, embora omplexo. Como veremos essa
onje tura e falsa. Para entender essa resposta, devemos nos aprofundar na natureza das
linguagens regulares e v^er que propriedades a famlia omo um todo tem.
A primeira quest~ao que levantamos e o que a onte e quando operamos om linguagens
regulares. As opera ~oes que onsideramos s~ao opera ~oes tais omo on atena ~ao, uni~ao,
 a linguagem resultante ainda regular? Re rir-nos-emos a isso omo uma quest~ao de
et . E
fe ho. Propriedades de fe ho, embora, prin ipalmente, de interesse teori o, permiti-nos-a
dis riminar muitas linguagens regulares que en ontraremos.
A segunda quest~ao trata de nossa habilidade para de idir sobre ertas propriedades.
Por exemplo, podemos dizer se uma linguagem e nita ou n~ao? Como veremos, tais
quest~oes s~ao fa ilmente respondida para linguagens regulares, mas n~ao para outras linguagens.
Finalmente, onsideremos a importante quest~ao: omo podemos dizer se uma dada
linguagem e regular ou n~ao? Se a linguagem e de fato regular, podemos sempre mostrar
isso exibindo um afd que a re onhe e, ou uma express~ao regular que a denota ou uma
gramati a que a gera. Mas se n~ao for o aso, pre isamos de outra abordagem. Uma
maneira de mostrar que uma linguagem n~ao e regular e estudar as propriedades gerais
das linguagens regulares.

Propriedades de Fe ho de Linguagens Regulares


Considere a seguinte quest~ao: dados duas linguagens regulares L1 e L2 , e sua interse ~ao
tambem regular? Em exemplos espe  os a resposta pode ser obvia, mas aqui pretende verdade que para todas as linguagens regulares L1 e
mos ata ar o problema em geral. E
L2, L1 \ L2 e regular? Formularemos quest~oes analogas para as demais opera ~oes.

64

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

Teorema 3.4.1 Se
e

L1 L 2

L 1 L2
e

s~
ao linguagens regulares, ent~
ao

L1 [L2 L1 L2 L1 L1 L1 \L2


,

tamb
em s~
ao. Dizemos om isso que a fam
lia das linguagens regulares 
e fe hada

sob uni~
ao, on atena
a
~o, fe ho estrela, omplementa
~
ao e interse
~
ao.

Se L1 e L2 s~ao linguagens regulares, ent~ao existem express~oes regulares


e r2 tais que L(r1 ) = L1 e L(r2 ) = L2.

~ o:
Demonstra
a
r1

Uni~
ao e fe ho estrela:

Da de ni ~ao 3.1.3, temos

L1 [ L2 = L(r1) [ L(r2 ) = L(r1 + r2)


L1L2 = L(r1)L(r2 ) = L(r1 r2)
L1 = (L(r1 )) = L(r1 )
Portanto, o fe ho sob uni~ao, on atena ~ao e fe ho-estrela e imediato.
Complemento:

afd

Seja M = hQ; ; ; q0 ; F i um afd que a eita L1. Ent~ao, trivialmente, o



M

= hQ; ; ; q0 ; Q

F ;

a eita L1. Observe que na de ni ~ao de um afd, assumimos que  era uma fun ~ao total,
ou seja (q0 ; w) esta de nida para todo w 2  . Consequentemente, ou  (q0; w) e um
estado nal, e nesse aso w 2 L1, ou n~ao ((q0 ; w) 2 Q F ) e w 2 L1.
Seja L1 = L(M1 ) e L2 = L(M2 ), onde M1 = hQ; 1; 1 ; q0; F1i e
hP; 2; 2; p0; F2 i s~ao afd's. Vamos onstruir a partir de M1 e M2 o aut^omato

Interse
~
ao:

M2

b (q ; p ); Fb i;
b  \  ; ;
= hQ;
1
2
0 0

ujo onjunto de estados, Qb = Q  P , onsiste de pares (q ; p ), e uja fun ~ao de transi ~ao
est
b 
e tal que M
a no estado (q ; p ), se M1 esta no estado q e M2 esta no estado p . Isto
e onseguido tomando
i

((

) ) = (1 (q ; a); 2(q ; a)):

b qi ; pj ; a

e de nido omo o onjunto de todos os (q ; p ) tal que q 2 F1 e p 2 F2 , isto e,


.
= F1  F2. Ent~ao e fa il v^er que w 2 L1 \ L2 se, e somente se, ela e a eita por M
Consequentemente, L1 \ L2 e regular.

Fb

Fb

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

65

3.4. Propriedades das Linguagens Regulares


Diferen a: A famlia das linguagens regulares e fe hada om respe to a diferen a, se

quando L1 e L2 s~ao linguagens regulares, ent~ao L1 L2 tambem e regular. Mas

L1 L2 = L1 \ L2

Como ja mostramos aqui que as linguagens regulares s~ao fe hadas sobre a interse ~ao
e omplemento, podemos on luir que L1 L2 e uma linguagem regular.
Exemplo 3.4.2 Sej~ao M1 e M2 os aut^omatos nitos determinsti os des ritos nas gu-

ras 3.14 e 3.15, respe tivamente. A interse ~ao das linguagens L(M1 ) om L(M2 ), e
re onhe ida pelo aut^omato do exer  io 2.2.6, o qual, se substituirmos P P por (q0 ; q0 ),
P I por (q0 ; q1 ), I P por (q1 ; q0 ) e I I por (q1 ; q1 ), 
e exatamente o mesmo aut^omato que o
onstrudo usando o me anismo des rito no teorema anterior, para a interse ~ao.
a

a
b

0
b

Figura 3.14: afd

M2

b
a

q
0

Figura 3.15: afd

M2

De ni ~ao 3.4.3 Sejam 1 e 2 alfabetos. Uma fun ~ao


homomor smo.

: 1 ! 2

e hamada um

Em palavras, um homomor smo e uma substitui ~ao no qual um simples smbolo e


tro ado por uma adeia. O domnio da fun ~ao e estendido para adeias de modo obvio.
Se = 1 2 n, ent~ao
w

a a

:::a

( ) = ( 1) ( 2)

h w

66

h a

h a

( )

: : : h an :

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 3. Express~oes e Gramati as Regulares


Se L e uma linguagem, sobre 1 , sua imagem homomorfa e de nida omo
(L) = fh(w) = w 2 Lg:

Exemplo 3.4.4 Sejam 1 = fa; bg e 2 = fa; b; g. De na h por h(a) = ab e h(b) = bb .


Ent~ao h(aba) = abbb ab. A imagem homomorfa de L = faa; abag e a linguagem
(L) = fabab; abbb abg:

Exemplo 3.4.5 Tome 1 = fa; bg e 2 = fb; ; dg. De na h : 1

! 2 por

( ) = db
( ) = bd

h a
h b

Se

L e a linguagem regular denotada por


r1

= (ab + b )(aa) , ent~ao

= (db bd + (bd ) )(db db ) ;

denota a linguagem regular h(L).

Teorema 3.4.6 Seja h :  !  um homomor smo. Se L e uma linguagem regular, sobre o alfabeto , ent~ao sua imagem homomorfa e tambem regular. A famlia das
linguagens regulares e, portanto, fe hada sob homomor smos arbitrarios.

Seja L uma linguagem regular, sobre , denotada por alguma express~ao regular r. Seja h(r) a express~ao obtida ao substituir em r, ada smbolo a 2 
por h(a). Pode ser mostrado diretamente apelando a de ni ~ao de uma express~ao regular
que o resultado e uma express~ao regular. E fa il v^er que a express~ao regular h(r) denota
h(L). Tudo que pre isamos fazer 
e mostrar que para todo w 2 L(r), o orrespondente
h(w ) 2 L(h(r )) e, inversamente, que para todo v 2 L(h(r )) existe w 2 L tal que v = h(w ).
Deixamos os detalhes omo exer  io.
~ o:
Demonstra
a

De ni ~ao 3.4.7 Seja L uma linguagem sobre um alfabeto . A linguagem de pre xos

de L, denotado por LP , e de nido omo

LP = f

x = xy

2 L para algum 2  g
y

Isso nos diz que as palavras de LP s~ao os pre xos das palavras em L.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

67

3.4. Propriedades das Linguagens Regulares


Exemplo 3.4.8 Se

L = fanbm = n  1; m  1g, ent~ao


LP = fanbm = n  1; m  0g [ fg:

Observe que L e LP s~ao todas regulares. Em geral, temos o seguinte teorema.


Teorema 3.4.9 Se

L e uma linguagem regular, ent~ao LP

tambem e regular.

Se L e regular, ent~ao existe um afd, M , que re onhe e L. Construa


um novo afd a partir de M dando o estatus de estado nal a ada estado que esteja em
algum aminho do estado ini ial a algum estado nal de M .
A import^an ia do homomor smo, e que pode server para simpli ar demonstra ~oes.
Por exemplo, se sabemos que a linguagem L = f10n1k 0 = n; k  1g, ent~ao via o homomor smo h(0) = aa e h(1) = bb, saberemos que a linguagem L, = fbb(aa)n (bb)k aa n; m
s~ao pares maiores ou iguais a f2g tambem e uma linguagem regular, n~ao pre isamos onstruir um aut^omato nito que re onhe a ela, ou uma gramati a regular que a gere ou uma
expres~ao regular que denote essa linguagem.

~ o:
Demonstra
a

3.4.1

Quest~
oes Elementares s^
obre Linguagens Regulares

Podemos dis utir agora o seguinte problema fundamental: dado uma linguagem, L, e
uma adeia, w, podemos determinar se w perten e a L ou n~ao? Esta quest~ao e onhe ida
omo quest~ao de pertin^en ia e o metodo de respond^e-la e o algoritmo de pertin^en ia.
A quest~ao da exist^en ia e natureza desse algoritmo sera de muito interesse no que seguira.
E um problema em geral dif il. Para as linguagens regulares, no entanto, ^ele e fa il.
O que queremos dizer por \dado uma linguagem : : :"? Em muitos argumentos e importante que essa frase seja lara. Usamos varias maneiras de des rever as linguagens
regulares: des ri ~ao verbal informal, nota ~ao de onjunto, aut^omatos nitos, express~oes
regulares e gramati as regulares. Somente as tr^es ultimas s~ao su ientemente bem de nidas para usar em provas de teoremas. Portanto, dizemos que uma linguagem regular
e dada numa representa ~ao padr~ao se, e somente se, ela e des rita por um aut^omato
nito, uma express~ao regular ou uma gramati a regular.
Teorema 3.4.10 Dado uma representa ~ao padr~
ao de uma linguagem regular L, sobre
e uma adeia w 2  , existe um algoritmo para determinar se w 2 L ou n~ao.

,

Representamos a linguagem por algum re onhe edor nito e ent~ao


testamos se ele a eita w ou n~ao.

~ o:
Demonstra
a

Outras quest~oes importantes s~ao:


68

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

1.

L e

uma linguagem nita ou in nita?

2. S~ao L1 e L2 a mesma linguagem?


3.

L1

e um sub onjunto de L2?

Existe um algoritmo para determinar se uma dada linguagem regular,


na representa a~o padr~ao, e vazia, nita ou in nita.
Teorema 3.4.11

A resposta e imediata a partir da representa ~ao da linguagem omo


grafo de transi ~ao de um afd. Se existe um aminho do verti e ini ial a qualquer verti e
nal, ent~ao a linguagem e n~ao-vazia.
Para determinar se a linguagem e in nita ou n~ao, a hamos todos os verti es que s~ao
a base de algum i lo. Se alguns desses est~ao s^obre um aminho de um verti e ini ial a
um nal, a linguagem e in nita. Caso ontrario, ela e nita.
~ o:
Demonstra
a

Outra forma de veri ar se uma linguagem e in nita, e veri ar se na representa ~ao


padr~ao de express~oes regulares, ela ontem o fe ho estrela  apli ado a uma express~ao
ontendo pelo menos um smbolo de .
A quest~ao da igualdade de duas linguagens e tambem um problema prati o importante.
Frequentemente, existem varias de ni ~oes de uma linguagem de programa ~ao e, pre isamos saber, apesar de suas diferen as aparente, se elas espe i am a mesma linguagem.
Esse, em geral, e um problema dif il. Mesmo para linguagens regulares o argumento n~ao
e obvio. N~ao e possvel argumentar na ompara ~ao palavra a palavra, pois ele so fun iona
para linguagens nitas. N~ao e tambem fa il apelar para express~oes regulares, gramati as
regulares ou afd's, pois existem, por exemplo, in nitas express~oes regulares para denotar
a mesma linguagem. Uma solu ~ao elegante usa a propriedade de fe ho.
Dadas as linguagens regulares L1 e L2 , na representa ~ao padr~ao, existe
um algoritmo para determinar se L1 = L2 ou n~ao.
Teorema 3.4.12

~ o:
Demonstra
a

Usando L1 e L2 podemos onstruir a linguagem


L3

= (L1 \ L2 ) [ (L1 \ L2)

e regular, pois pelo teorema 3.4.1, L1 e L2 s~ao e, pelo mesmo teorema, a uni~ao e
interse ~ao de duas linguagens regulares s~ao regulares. Portanto, podemos a har um afd,
, que re onhe a L3. Uma vez tendo podemos usar o algoritmo do teorema 3.4.11
para determinar se L3 e vazia. E L3 = ; se e somente se L1 = L2 (exer  io).
L3

A ter eira quest~ao, a ima, tem resposta positiva e sera formulada na lista de exer  ios.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

69

3.4. Propriedades das Linguagens Regulares

3.4.2 Identi ando Linguagens n~ao regulares


As linguagens regulares podem ser in nitas. No entanto, o fato delas poderem ser asso iados om aut^omatos que tem memoria nita, imp~oe alguns limites na estrutura das
linguagens regulares. Nossa intui ~ao diz que uma linguagem e regular somente se, em
pro essando qualquer adeia, a informa ~ao a ser armazenada em qualquer estagio e estritamente limitada. Isso e verdade, mas teremos de mostrar pre isamente.
Usando o Prin 
pio da Casa de Pombos

O termo \prin pio da asa de pombos" e usado pelos matemati os para se referir a
seguinte simples observa ~ao: Se olo amos n objetos (pombos) em m aixas ( asa de
pombos), e se n > m, ent~ao no mnimo uma aixa deve onter mais de um tem.

L = fanbn= n  0g

Exemplo 3.4.13 A linguagem

traremos usando uma prova por ontradi


~
ao.

h f g


e regular? A resposta 
e n~
ao. Mos-

Suponha que


e regular.

Ent~
ao, existe

M = Q; a; b ; ; q0 ; F que a re onhe e. Agora, olhemos para (qo ; ai ), om


i = 1; 2; 3; : : :. Como existe um n
umero ilimitado de i's, mas somente um n
umero limitado de estados em M , o prin 
pio da asa de pombos nos diz que deve existir algum estado,
digamos q , tal que

um afd

 (q0 ; an )
Mas, omo

a eita

an bn ,

=q

 (q0 ; am )

= q,

om

6= n

devemos ter

 (q; bn )

= qf

2 F:

Disso podemos on luir que

 (q0 ; am bn )

=  (  (q0 ; am ); bn ) =  (q; bn ) = qf

Isto ontradiz a suposi


~
ao original de que

a eita

am bn

2 F:

somente se

= n.

Logo,

n~
ao pode ser regular.

Neste argumento, o prin pio da asa de pombos e uma maneira de estabele er pre isamente o que queremos dizer quando dizemos que um aut^omato nito tem memoria
limitada. Para re onhe er todos an bn , um aut^omato teria de distinguir entre todos os
pre xos an e bm . Mas omo existe somente um numero nito de estados internos para
fazer isso, existe alguns m e n para os quais a distin ~ao n~ao pode ser feita.
Para usar esse tipo de argumento numa variedade de situa ~oes e onveniente odi alo omo um teorema geral. Existem varias maneiras de fazer isso, a que faremos e talvez
a mais famosa.

70

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

Um Lema da Bomba

O resultado que segue, onhe ido omo lema da bomba para linguagens regulares, usa o
prin pio da asa de pombos numa outra forma. A prova e baseada na observa ~ao de
que num grafo de transi ~ao om n verti es, qualquer aminho de omprimento n ou mais
longo deve repetir algum verti e, isto e, ontem um i lo.

L uma linguagem regular in nita. Ent~ao,


existe um inteiro positivo m tal que todo w 2 L, om j w j m, pode ser de omposto omo
w = xyz , om j xy j m e j y j 1 tal que

Teorema 3.4.14 (Lema da Bomba)

Seja

wi

= xy iz;

(3.3)

esta tambem em L, para todo i = 0; 1; 2; : : :.


Ou seja, toda palavra su ientemente longa em L pode ser quebrada em tr^es partes,
de tal modo que um numero arbitrario de repeti ~oes da parte do meio gera uma outra
palavra em L. Dizemos que a adeia do meio e \bombeada".
~ o: Se L e regular, existe um afd que a re onhe e. Seja M um desses
Demonstra
a
afd's, om estados rotulados por q0 ; q1 ; : : : ; qn . Agora tome uma adeia w 2 L tal que
j w j= k  m = n + 1. Como L e in nita isso pode sempre ser onsiderado. Seja
q0 ; qi ; qj ; : : : ; qf o onjunto de estados do aut^
omato quando ele re onhe e w.
Como essa adeia tem no mnimo n + 1 entradas, no mnimo um estado deve ser repetido, e tal repeti ~ao deve ome ar n~ao apos o n-esimo movimento. Portanto, a sequ^en ia
deve ter a seguinte forma
q0 ; qi ; qj ; : : : ; qr ; : : : ; qr ; : : : ; qf ;

indi ando que devem existir sub adeias

x; y;

de

tal que

 (q0 ; x) = qr ,
 (qr ; y ) = qr ,
 (qr ; z ) = qf ,

om j xy j n + 1 = m e
 (q0 ; xz )

j y j 1. Donde segue imediatamente que

= qf , assim omo  (q0 ; xy 2z ) = qf ;

 (q0 ; xy 3 z )

= qf ;

e assim por diante, ompletando a prova do teorema.


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

71

3.4. Propriedades das Linguagens Regulares

Enun iamos o lema da bomba somente para linguagens in nitas. Linguagens nitas,
embora sempre regulares, n~ao podem ser bombeadas pois o bombeamento automati amente ria um onjunto in nito. O teorema n~ao vale para linguagens nitas, mas ele e
va uo. O m do lema da bomba pode ser tomado t~ao grande que seja maior do que o
maior omprimento das adeias, de modo que nenhuma adeia pode ser bombeada.
O lema da bomba, assim omo o argumento do prin pio da asa de pombos do exemplo
3.4.13, e usado para se mostrar que ertas linguagens n~ao s~ao regulares. A demonstra ~ao
e sempre por ontradi ~ao.
Usar o lema da bomba para mostrar que L = fan bn = n  0g n~ao e uma
linguagem regular. Suponhamos que L e regular, portanto o lema da bomba deve valer.
N~
ao sabemos o valor de m, mas qualquer que seja ele podemos es olher n > m. Logo,
a sub adeia y deve onsistir inteiramente de a's. Suponha que j y j= k . Ent~ao, a adeia
obtida usando-se i = 0, na equa ~ao 3.3, e
Exemplo 3.4.15

n k n

b ;

a qual, laramente, n~ao est


a em L. Isso ontradiz o lema da bomba e, portanto, a hipotese
e falsa, isto e, L n~ao e regular.

72

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

3.5

Exer 
 ios

1. Construa um aut^omato para re onhe er as linguagens representadas pelas express~oes


regulares
(a)
(b)
( )
(d)

1 0
(00 + 10)
(01 + 10)
(0 + 10 + 110)( + 1 + 11)

2. Es rever uma express~ao regular para a linguagem


L

= anbm = n 1; m 1; n m 3 :
f

3. Es rever express~oes regulares para as seguintes linguagens, sobre 0; 1


f

(a)
(b)
( )
(d)
(e)
(f)
(g)

Todas as adeias terminando em 01.


Todas as adeias n~ao terminando em 01.
Todas as adeias ontendo um numero par de zeros.
Todas as adeias om no maximo duas o orr^en ias da sub adeia 00.
Todas as adeias que ontenham as sub adeias 000 e 111.
Todas as adeias que n~ao ontenham as sub adeias 00 e 11.
Todas as adeias que alguma o orr^en ia de dois zeros estejam separados por
uma sub adeia de tamanho 3i, para algum i 0.
Todas as adeias om uma quantidade par de 1's.
Todas as adeias om uma quantidade mpar de 0's.
Todas as adeias om uma quantidade par de 1's e mpar de 0's.
Todas as adeias om uma quantidade par de 1's e de 0's


(h)
(i)
(j)
(k)

4. Es rever express~oes regulares para as seguintes linguagens sobre  = a; b;


f

(a) Todas as adeias ontendo exatamente um a.


(b) Todas as adeias ontendo n~ao mais do que tr^es a's.
( ) Todas as adeias que ontem no mnimo uma o orr^en ia de ada smbolo em
.
(d) Todas as adeias que ontem tr^es a's, tr^es b's e tr^es 's onse utivos, nessa
ordem. Por exemplo as adeias abaaa babbba ba e aaababbbab ab
fazem parte dessa linguagem, ja a adeia aaabb bbba n~ao.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

73

3.5. Exer 
 ios

(e) Todas as adeias que n~ao ontem dois a's onse utivos.
(f) Todas as adeias om uma quantidade par de a's (0 e onsiderado omo par).
5. Demonstre que
(a) (a + b)  (a b )

(b) a + b 6 (a + b)
( ) a b 6 (ab)
(d) (b + ab) (a + )  (a + )(ba + b)

 a a
onde r1 6 r2 se, e somente se, L(r1 ) 6= L(r2 ).
(e) aa

6. Prove que para toda express~ao regular r1 , r2 e r3


(a) (r1 )  r1

(b) (r1 + r2 )  r2 + r1
( ) (r1 + r2 ) + r3  r1 + (r2 + r3 )
(d) r1 (r2 + r3 )  r1 r2 + r1 r3
(e)
(f)
(g)
(h)

r1 + r1  r1
(r1 + r2 )  (r1 r2 )
r1 r1  r1
(r1 r2 ) r1  r1 (r2 r1 )

7. A he um afn que re onhe e a linguagem


(a) L(aa (a + b))
(b) L((ab + b) (a + ))
( ) L(aa bb aa )
8. A har aut^omatos nitos que a eitem as seguintes linguagens
(a) L(aa + aba b )
(b) L(ab(a + ab)(a + aa))
( ) L((abab) (a + b ) )
(d) L((a + b) a(bbb + bab) a(a + b) )
9. A har express~oes regulares para as linguagens re onhe idas pelos aut^omatos da gura seguinte.

74

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

a)
b

b)
a

b
b

c)
a
a
b
a

10. Construir um afn que re onhe e a linguagem gerada pelas gramati as


(a) S
(b) S
( ) S

! abA; A ! baB ; B ! aA j bb
! aaB j b; B ! bbS ;
! aA j bS j ; A ! aB j bS j ; B ! aaS j

bS

11. Construir uma gramati a linear a direita para a linguagem


(a) L((aab abab) )
(b) L((a + b) aaa(a + b) bbb(a + b) )
( ) L((a + b) aaa)
(d) L((ab + ba) (a + b + ))
(e) L((a(aa) (bb) ) aa )
12. Construir uma gramati a regular que gere ada uma das seguintes linguagens sobre
o alfabeto fa; bg.
(a) Todas as adeias que terminem om tr^es a0 s.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

75

3.5. Exer 
 ios

(b)
( )
(d)
(e)
(f)

Todas as adeias que ontenha uma sub adeia do tipo abn a, para algum n  0.
Todas as adeias diferentes de (aaa)k , para qualquer k  1.
Todas as adeias diferentes de ak aa, para qualquer k  1.
Todas as adeias da forma aawaa, onde j w j e multiplo de tr^es.
Todas as adeias que ontem exatamente uma uni a o orr^en ia da sub adeia
aa.

13. Na prova do teorema 3.4.6, mostre que h(r) e uma express~ao regular. Ent~ao, mostre
que h(r) denota h(L).
14. Quais das seguintes igualdades s~ao verdadeiras para todas as linguagens regulares e
todos os homomor smos? Justi que.
(a) h(L1 [ L2 ) = h(L1 ) [ h(L2 )
(b) h(L1 \ L2 ) = h(L1 ) \ h(L2 )
( ) h(L1 L2 ) = h(L1 )h(L2 )
15. Mostre que a famlia das linguagens regulares e fe hada sobre uni~ao nita e interse ~ao nita, isto e, se L1 , L2 ; : : : ; Ln s~ao linguagens regulares ent~ao

[L
n

i=1

\L
n

i=1

tambem s~ao.
16. Mostre que existe um algoritmo para determinar se L1  L2 , para qualquer linguagem regular L1 e L2 .
17. O NEM de duas linguagens e
N EM

(L1 ; L2) = fw= w 62 L1 e

62 L2g

Mostre que a famlia das linguagens regulares e fe hada sobre NEM.


18. Mostre que as linguagens regulares s~ao fe hadas sobre a uni~ao disjunta, onde a uni~ao
disjunta de dois onjuntos (linguagens) L1 e L2 e de nida por

L1 L2 = f(

w;

0)= w 2 L1 g [ f(w; 1)= w 2 L2 g

19. Mostre que as linguagens regulares s~ao fe hadas sobre a opera ~ao  entre linguagens.
Sejam L1 e L2 duas linguagens, de na o operador  por

L1  L2 = f 2 L1
w

76

= w

62 L2g [ f 2 L2
w

= w

62 L1 g

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 3. Express~
oes e Gram
ati as Regulares

20. Mostre que as linguagens sobre  = f g, de nidas a seguir, n~ao s~ao regulares.
a; b

(a) L = f R 2  g
(b) L = f 2  Na( ) = Nb( )g
( ) L = f m n 6= g
ww
w

= w

b = m

onde Na( ) e o numero de 's que guram em


w

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

77

3.5. Exer 
 ios

78

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4
Linguagens Livres de Contexto

Vimos, anteriormente, que nem todas as linguagens s~ao regulares. A relev^an ia dessa
limita ~ao para linguagens de programa ~ao a evidente se reinterpretarmos alguns dos
exemplos. Se em L = fan bn =n  0g substituirmos a por par^entese a esquerda e b por
par^entese a direita, ent~ao as adeias de par^enteses tais omo (()) e ((())) est~ao em L,
mas (() n~ao esta. A linguagem des reve, portanto uma espe ie simples de estrutura
aninhada a hada em linguagens de programa ~ao. Isto indi a que algumas propriedades
das linguagens de programa ~ao requerem algo alem das linguagens regulares. Isto nos
leva a onsiderar linguagens e gramati as livres de ontexto.

4.1 Gramati as Livres de Contexto


As produ ~oes numa gramati a regular s~ao restritivas em dois pontos: o lado esquerdo
da produ ~ao deve onter uma uni a variavel, enquanto o lado direito tem uma forma
espe ial. Para riar uma gramati a \mais poderosa", devemos relaxar algumas dessas
ondi ~oes. Manteremos a restri ~ao sobre o lado esquerdo, mas deixaremos sem restri ~ao
o lado direito. Obteremos assim, uma gramati a livre de ontexto.

De ni ~ao 4.1.1 Uma gramati a G = hV; T ; S; P i diz-se livre de ontexto se todas as

produ ~oes em

tem a forma

x;

2 ( [ ).
Uma linguagem L diz-se livre de ontexto se existe uma gramati a livre de ontexto
tal que L = ( ).

onde

L G

Toda linguagem regular e livre de ontexto, pois toda gramati a regular e tambem
livre de ontexto. Mas, a linguagem fan bn = n  0g n~ao e regular, omo foi visto usando
79

4.1. Gramati as Livres de Contexto


o lema da bomba.

A onte e que, pelo exemplo

1.2.6, ela 
e livre de ontexto.

Logo o

onjunto das linguagens regulares 


e um sub onjunto pr
oprio da fam
lia das linguagens
livres de ontexto.
As gram
ati as livres de ontexto tem esse nome devido ao fato de que a substitui
~
ao
da vari
avel no lado direito pode ser feito em qualquer momento em que a vari
avel apare er
na forma senten ial ( ontexto). Esta ara ter
sti a 
e onsequ^
en ia de se exigir que o lado
esquerdo da produ
~
ao ontenha, somente, uma u
 ni a vari
avel.

Exemplo 4.1.2

G = hfS g; fa; bg; S; P i, om

A gram
ati a

! aSa j

bSb

produ
~
oes

;


e livre de ontexto. Uma deriva
~
ao t
pi a nessa gram
ati a 
e

S =) aSa =) aaSaa =) aabSbaa =) aabbaa


Isto torna laro que

L(G) = fwwR = w 2 fa; bg g:


Essa linguagem 
e livre de ontexto, mas n~
ao 
e regular, onforme o exer 
 io

20 do

ap
tulo 3.

Exemplo 4.1.3

A gram
ati a

G = hfS; A; B g; fa; bg; S; P i, onde P


S
A
B


e livre de ontexto.

Exemplo 4.1.4

!
!
!

abB
aaBb
bbAa


e

L(G) = fab(bbaa)n bba(ba)n = n  0g.

A linguagem

L fam bn= m 6
=

ng


e livre de ontexto. Para mostrar isso pre isamos produzir uma gram
ati a livre de ontexto
que gere a linguagem. Observe que
aso

b's,

n < m.

m 6= n se e somente se m < n ou n < m.

Tomemos o

Primeiramente, geramos uma adeia om a mesma quantidade de

ent~
ao adi ionamos

a's

a's

e de

extras 
a esquerda. Isso 
e feito om as seguintes produ
~
oes

S1
A

!
!

aS1 b j A
aA j a
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

80

Cap
tulo 4. Linguagens Livres de Contexto

Usando um ra io 
nio an
alogo obtemos as seguintes produ
~
oes para o aso

S2
B

!
!

m<n

aS2 b j B
Bb j b

A jun
~
ao desses dois onjuntos de produ
~
oes 
e feita adi ionando as produ
~
oes

S
Assim, a gram
ati a

G=

produ
~
oes a ima gera a linguagem

G, ujas

, onde


e o onjunto de

. Claro que tamb


em poder
amos realizar uma jun
~
ao

n > m

n < m,

resultando numa gram


ati a mais

produ
o
~es s~
ao:

S
A
B

4.1.1

S2 :

hfS; S1; S2; A; B; C g; fa; bg; S; P i


L

do ra io 
nio usado para os asos
enxuta que

! S1 j

!
!
!

aSb j A
aA j a
Bb j b

Deriva ~oes mais a esquerda e mais a direita

Em gramati as livres de ontexto que n~ao s~ao lineares, uma deriva ~ao pode envolver formas senten iais om mais de uma vari
avel. Nesse aso, temos uma es olha na ordem em
que as vari
aveis s~ao tro adas. Tome, por exemplo, a gramati a G = hfS; A; B g; fa; bg; S; P i
om produ ~oes
1:
2:
3:
4:
5:

S
A
A
B
B

!
!
!
!
!

AB
aaA

Bb


 fa il v^er que esta gramati a gera a linguagem


E

L = fa2n bm = n  0; m  0g:
Considere, agora, as duas deriva ~oes seguintes:

S =1) AB =2) aaAB =3) aaB =4) aaBb =5) aab


S =1) AB =4) ABb =2) aaABb =5) aaAb =3) aab:
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

81

4.1. Gramati as Livres de Contexto


Para mostrar que deriva ~ao foi usada enumeramos as produ ~oes e es revemos o orrespondente numero em ima do smbolo =). Isso nos permite v^er que as duas deriva ~oes
n~ao somente geram a mesma adeia, mas que as mesmas produ ~oes s~ao usadas. A diferen a esta somente na ordem em que as produ ~oes s~ao apli adas. Para remover fatores
irrelevantes, frequentemente pedimos que as variaveis sejam tro adas numa ordem espe  a.

De ni ~ao 4.1.5 Uma deriva ~ao diz-se mais a esquerda, se em ada etapa a variavel

mais a esquerda e tro ada na forma senten ial. Se em ada etapa a vari
avel mais a direita
e tro ada na forma senten ial, dizemos que a deriva ~ao e mais 
a direita.

Exemplo 4.1.6 Considere a gramati a om produ ~oes


S
A
B

!
!
!

aAB
bBb
A j 

Ent~ao

S =) aAB =) abBbB =) abAbB =) abbBbbB =) abbbbB =) abbbb


e uma deriva a~o mais a esquerda da adeia abbbb. Uma deriva ~ao mais a direita para a
mesma adeia e

S =) aAB =) aA =) abBb =) abAb =) abbBbb =) abbbb:

4.1.2


Arvores
de deriva ~ao

Uma segunda maneira de mostrar deriva ~oes, independente da ordem em que as produ ~oes
s~ao usadas, e atraves de 
arvores de deriva ~ao. Uma arvore de deriva ~ao e uma arvore
ordenada na qual os nodos s~ao rotulados om os lados esquerdos das produ ~oes e no qual
os lhos de ada nodo representa seus orrespondentes lados direitos.
Por exemplo, a gura 4.1 mostra parte de uma arvore de deriva ~ao representando a
produ ~ao

! abAB

Numa arvore de deriva ~ao um nodo rotulado om uma variavel o orrendo no lado
esquerdo da produ ~ao tem lhos onsistindo dos smbolos no lado direito daquela produ ~ao
e terminando em folhas que s~ao terminais. Uma arvore de deriva ~ao mostra omo ada
variavel e tro ada na deriva ~ao. A de ni ~ao que segue torna pre isa essa no ~ao.

82

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 4. Linguagens Livres de Contexto


0123
7654
AN
ooo ===N=NNNN
o
o
== NNN
oo 
N
ooo?>=<
89:;
?>=<
0123
89:;
89:;
0123
7654
a

A 7654
B ?>=<
b

Figura 4.1: Parte da arvore de deriva ~ao para a produ ~ao A

! abAB .

De ni ~ao 4.1.7 Seja G = hV; T; S; P i uma gramati a livre de ontexto. Uma arvore
ordenada e uma arvore de deriva a~o para G se ela tem as seguintes propriedades
1. A raz tem rotulo S .
2. Toda folha tem um rotulo de T

[ fg.

3. Todo verti e interior (um verti e que n~ao e uma folha) tem um rotulo de V .
4. Se um verti e tem rotulo A 2 V , e seus lhos s~ao rotulados (da esquerda para
direita) a1 ; a2 ; : : : ; an , ent~ao P deve onter uma produ ~ao da forma

! a1 a2 : : : an:

A
5. Toda folha rotulada  e lho uni o.

Uma arvore ordenada satisfazendo as propriedades 3,4 e 5, na qual 1 n~ao se veri a


ne essariamente e na qual a propriedade 2 e tro ada por
2.a. Toda folha tem um rotulo de V

[ T [ fg,

diz-se uma 
arvore de deriva ~ao par ial.
A adeia de smbolos obtida em se lendo, da esquerda para a direita, omitindo qualquer
 en ontrado, diz-se gerada da arvore.

Exemplo 4.1.8 Considere a gramati a G, om produ ~oes


S
A
B

!
!
!

aAB
bBb
A j 

A arvore na gura 4.2 e uma arvore de deriva ~ao par ial para G, enquanto a arvore
na gura 4.3 e uma arvore de deriva ~ao. A adeia abBbB , gerada pela primeira arvore, e
uma forma senten ial de G. A adeia gerada pela segunda arvore, abbbb, e uma senten a
de L(G).

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

83

4.1. Gramati as Livres de Contexto


0123
7654
n S OOOO
nnn
OOO
n
n
n
OOO
n
n
0123
7654
89:;
?>=<
0123
7654
an
A <<
B

<
<<


<

0123
89:;
?>=<
89:;
b 7654
B ?>=<
b

Figura 4.2: Uma arvore de deriva ~ao par ial.


0123U
7654
jjj S UUUUUU
j
j
j
UUUU
UUUU
jjjj
U7654
jjjj
89:;
?>=<
0123
0123
7654
a
A >>
B
>>
>>
0123
7654
89:;
89:;
?>=<
0123
7654
B ?>=<
b
b
A ===

==

=

0123
89:;
?>=<
89:;
?>=<
89:;
B ?>=<

b 7654
b
89:;
?>=<


Figura 4.3: Uma arvore de deriva ~ao.

4.1.3

Rela ~ao entre formas senten iais e arvores de deriva ~ao

As arvores de deriva ~ao d~ao uma des ri ~ao expl ita e ompreensvel das deriva ~oes.
Assim omo o grafo de transi ~ao para aut^omatos nitos, elas s~ao uteis nos argumentos.

Teorema 4.1.9 Seja G = hV; S; T; P i uma gramati a livre de ontexto. Ent~ao para todo
w 2 L(G) existe uma arvore de deriva ~ao de G uja adeia gerada e w. Inversamente, a
adeia gerada por qualquer 
arvore de deriva
~
ao de G est
a em L(G). Al
em disso, se AG

e qualquer 
arvore de deriva
~
ao par ial para G uja ra
z 
e rotulada S , ent~
ao AG gera uma
forma senten ial de G.
~ o: Primeiramente mostraremos que para toda forma senten ial de L(G)
Demonstra
a
existe uma arvore de deriva ~ao par ial. Faremos isso por indu ~ao no numero de etapas
da deriva ~ao. Como base, observemos que a a rma ~ao e verdadeira para toda forma
senten ial derivada em uma etapa. Como S =) u, existe uma produ ~ao S ! u. Isso
segue imediatamente da de ni ~ao 4.1.7.

Suponhamos que para toda forma senten ial derivavel em n etapas, existe uma arvore
de deriva ~ao par ial orrespondente. Agora, qualquer w derivavel em n + 1 etapas deve
ser tal que

S =) xAy , om x; y 2 (V [ T ) e A 2 V , em n etapas, e


xAy =) xa1 a2    am y = w om ai 2 V [ T .

Como, pela hipotese da indu ~ao, existe uma arvore de deriva ~ao par ial que gera xAy ,
e omo a gramati a deve ter a produ ~ao A ! a1 a2    am , vemos que expandindo a folha

84

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

rotulada A, obtemos uma arvore de deriva ~ao par ial que gera
indu ~ao, o resultado e verdade para toda forma senten ial.

xa1 a2    am y = w.

Por

Usando um argumento analogo, podemos mostrar que toda arvore de deriva ~ao par ial
representa alguma forma senten ial.
Como toda arvore de deriva ~ao e tambem uma arvore de deriva ~ao par ial ujas folhas
s~ao terminais, segue que toda senten a de L(G) e gerada por alguma arvore de deriva ~ao
de G e a adeia gerada por qualquer arvore de deriva ~ao esta em L(G).
As arvores de deriva ~ao mostram quais produ ~oes s~ao usadas para se obter uma senten a, mas n~ao forne em a ordem de suas apli a ~oes. As arvores de deriva ~ao s~ao apazes
de representar qualquer deriva ~ao, re etindo o fato de que esta ordem e irrelevante. Esta
observa ~ao nos permite fe har o bura o da dis uss~ao anterior. Por de ni ~ao, qualquer
w 2 L(G) tem uma deriva ~ao, mas n~ao alegamos que ela tambem tem uma deriva ~ao
mais a esquerda e uma mais a direita. Entretanto, uma vez que tenhamos uma arvore
de deriva ~ao, podemos sempre obter uma deriva ~ao mais a esquerda, pensando na arvore
omo tendo sido onstruda de tal modo que a variavel mais a esquerda da arvore foi
sempre expandida primeiro. A menos de detalhes temos que todo w 2 L(G) tem uma
deriva ~ao mais a esquerda e uma mais a direita.

4.2 Analise e Ambiguidade


Ate aqui temos nos on entrado no aspe to gerativo das gramati as livres de ontexto.
Dado uma gramati a G, estudamos o onjunto de adeias que podem ser derivadas usando
G. Em aso de apli a ~oes prati as estaremos tambem interessados om o lado analti o
da gramati a: dado uma adeia de terminais w, queremos saber se w 2 L(G) ou n~ao. Se
for o aso, poderemos estar interessados em a har uma deriva ~ao de w. Uma algoritmo
que pode nos dizer se w 2 L(G) ou n~ao e hamado algoritmo de pertin^
en ia. O termo
an
alise des reve o modo de a har uma sequ^
en ia de produ ~oes pela qual e derivada
w 2 L(G).

4.2.1

Analise e pertin^en ia

Dado uma adeia w em L(G) podemos analisa-la de maneira obvia: sistemati amente
onstruimos todas as possveis (as mais a esquerda, digamos) deriva ~oes e veri amos se
alguma asa om w. Espe i amente ome amos veri ando todas as produ ~oes da forma

S !x
a hando todos os x's em (V [ T ) que podem ser derivados de S numa etapa. Se nenhum desses resultados e w, vamos para a segunda etapa, na qual apli amos todas as
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

85

4.2. Analise e Ambiguidade


produ ~oes possveis a variavel mais a esquerda de todo x. Isso nos da um onjunto de
formas senten iais, algumas delas possivelmente levando para w. Em ada etapa subsequente tomamos novamente as variaveis mais a esquerda e apli amos todas as produ ~oes
possveis. Pode ser que alguma dessas formas senten iais possam ser ex ludas porque
w nun a seria derivada delas. Mas, em geral, temos em ada etapa o onjunto de todas
as formas senten iais possveis. Apos a primeira etapa, temos formas senten iais que podem ser derivadas apli ando-se uma uni a produ ~ao, apos a segunda etapa temos formas
senten iais que podem ser derivadas apli ando duas produ ~oes, e assim por diante. Se
w 2 L(G), devemos ter uma deriva ~ao mais a esquerda de omprimento nito. Portanto,
o metodo nos dara mais edo ou mais tarde uma deriva ~ao mais a esquerda de w.
Como refer^en ia, hamaremos isto o metodo de an
alise de pesquisa exaustiva. Ele
e uma espe ie de analise top-down o qual podemos v^er omo onstru ~ao de uma arvore
de deriva ~ao da raiz para baixo.

Exemplo 4.2.1 Considere a gramati a

! SS j

aSb

bSa

e a adeia w = aabb. A etapa um nos da:


1. S =) SS
2. S =) aSb
3. S =) bSa
4. S =) 
As duas u
ltimas dessas podem ser removidas das pr
oximas onsidera ~oes, por raz~
oes
obvias.
A etapa dois gera as seguintes formas senten iais
1. S =) SS =) SSS
2. S =) SS =) aSbS
3. S =) SS =) bSaS
4. S =) SS =) S
5. S =) aSb =) aSSb
6. S =) aSb =) aaSbb

86

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

7. S =) aSb =) abSab
8. S =) aSb =) ab
Novamente, varias dessas deriva ~oes (3,7 e 8) podem ser removidas. Na pr
oxima
etapa a hamos, a partir da deriva ~ao 6, a adeia pro urada da sequ^en ia.

S =) aSb =) aaSbb =) aabb


Portanto, aabb est
a na linguagem gerada pela gramati a sob onsidera ~ao.

A analise de pesquisa exaustiva tem serios problemas. O mais obvio deles e que ele e
tedioso. Ele n~ao pode ser usado quando se pede e i^en ia. Mas mesmo quando a e i^en ia
for se undaria, existe uma obje ~ao. Enquanto o metodo sempre analisa um w 2 L(G),
e possvel que ele nun a termine para uma adeia que n~ao esta em L(G). Este e o aso
se no exemplo anterior analisarmos a adeia w = abb. O metodo ira produzindo formas
senten iais inde nidamente a menos que oloquemos n^ele uma ondi ~ao de parada.
O problema da n~ao termina ~ao do metodo de pesquisa exaustiva e relativamente fa il
de superar se restringirmos a forma da gramati a. Se examinarmos o exemplo 4.2.1,
veremos que a di uldade vem da produ ~ao S ! . Esta produ ~ao pode ser usado
para de res er o tamanho das formas senten iais su essivas de modo que n~ao possamos
dizer fa ilmente quando parar. Se n~ao tivessemos tais produ ~oes, ent~ao teramos muito
menos di uldade. De fato, existem dois tipos de produ ~oes que queremos deixar de fora.
Aquelas da forma A ! B e A ! . Como veremos futuramente, esta restri ~ao n~ao
afeta, signi ativamente, o poder da gramati a resultante.
Exemplo 4.2.2

A gram
ati a

! SS j

aSb

bSa

ab

ba

satisfaz as nossas exig^en ias. Ela gera a linguagem do exemplo 4.2.1 sem a adeia vazia.

Dado qualquer w 2 fa; bg+ , o metodo da analise de pesquisa exaustiva sempre terminara em n~ao mais do que j w j etapas. Isto e laro devido a que o omprimento da forma
senten ial res e em, no mnimo, um smbolo em ada etapa. Assim, apos j w j etapas
teremos produzido a adeia w em analise ou saberemos que w 62 L(G).
A ideia, nesse exemplo, pode ser generalizado e tornar-se um teorema para linguagens
livres de ontexto, em geral.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

87

4.2. Analise e Ambiguidade


Teorema 4.2.3

Seja

G = hV; T; S; P i uma gramati a livre de ontexto sem produ ~oes da

forma

A
onde

A; B

V.

!

ou

!B

Ent~
ao o m
etodo de an
alise de pesquisa exaustiva pode se tornar um

algoritmo tal que para ada

w 2 T  , ou produz uma analise de w ou nos diz que nenhuma

an
alise 
e poss
vel.

~ o: Para ada forma senten ial, onsidere seu omprimento e o n


Demonstra
a
umero de

smbolos terminais. Cada etapa na deriva ~ao faz res er a forma senten ial, no mnimo,
em um smbolo (terminal ou variavel). Mas, por n~ao termos as produ ~oes do tipo A !
 ou A ! B , sempre esse res imento impli ara no aumento de, pelo menos, um smbolo
terminal. Como o omprimento n~ao pode ex eder j w j, uma deriva ~ao de w n~ao pode
envolver mais do que j w j etapas. Assim, se ate a etapa j w j n~ao tivermos derivado w,
ent~ao w n~ao sera gerada pela gramati a.
A obje ~ao ao metodo de analise de pesquisa exaustiva om respeito a ine i^en ia e
muito mais dif il de ontornar. Numa analise de pesquisa exaustiva poderemos produzir
algo omo j P j formas senten iais na primeira etapa, algo omo j P j2 na segunda, e assim
por diante, tal que a analise ompleta pode produzir j P jjwj formas senten iais. Certamente
isso e bastante e tera de ser en ontrado um metodo melhor no aso de e i^en ia ser de
signi ^an ia na teoria das linguagens livres de ontexto. Infelizmente, os metodos de
analises e ientes n~ao s~ao obvios e os algoritmos onhe idos s~ao muito ompli ados. Este
e um topi o que perten e, propriamente, ao urso de ompiladores. Enun iaremos alguns
resultados isolados para dar ao aluno uma ideia da extens~ao do assunto.

Teorema 4.2.4 Para toda gramati a livre de ontexto existe um algoritmo


w 2 L(G) num numero de opera ~oes propor ional a j w j3 .

que analisa

qualquer

Existem varios metodos onhe idos para obter isso, mas todos eles s~ao su ientemente
ompli ados de modo que n~ao podemos mesmo des rev^e-los sem desenvolver alguns resultados adi ionais. Mais detalhes podem ser en ontrados em [HU79. Uma das raz~oes para
n~ao perseguir isso om mais detalhe e que mesmo esses algoritmos s~ao insatisfatorios. Um
metodo no qual o trabalho vem na ter eira pot^en ia do omprimento da adeia e muito
ine iente, e um ompilador baseado nele ne essitaria uma quantidade de tempo ex essiva
para analisa-la mesmo para programas n~ao muito grandes. O que gostaramos de ter e um
metodo de analise que tomasse um tempo propor ional ao omprimento da adeia. Tais
metodos s~ao referidos omo algoritmos de analise em tempo linear. N~ao onhe emos
nenhum metodo de analise em tempo linear para linguagens livres de ontexto, em geral.
Tais algoritmos podem ser en ontrados, para asos espe iais, porem importantes.

88

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

Considere um tipo de gramati a livre de ontexto na qual todas as produ ~oes s~ao da forma
Exemplo 4.2.5

! ax

onde A 2 V , a 2 T , x 2 V  e para as quais existe uma restri ~ao de que qualquer par (A; a)
pode o orrer em no maximo uma produ ~ao om lado esquerdo A, isto e, para um dado A
no lado esquerdo n~ao pode existir mais do que uma produ ~ao tendo um smbolo terminal a
no ini io da adeia, na direita da produ ~ao. Ent~ao qualquer adeia na linguagem gerada
por tal gramati a pode ser analisada em no maximo j w j opera ~oes.

Para v^er isto, use o metodo de pesquisa exaustiva om a adeia w = a1 a2    am . Como


existe quanto muito uma produ ~ao om S na esquerda e ini iando om a1 na direita a
deriva a~o deve ome ar om

S =) a1 A1 A2    Am :
Em seguida, substituiremos a variavel A1 , mas, novamente, existe no maximo uma
es olha, e portanto devemos ter

S =) a1 A1 A2    Am =) a1 a2 B1 B2    Bk A2    Am :
Vemos que ada etapa produz um smbolo terminal e portanto o pro esso todo deve ser
ompletado em n~ao mais do que j w j etapas.
Este exemplo n~ao e arti ial. Este tipo de gramati a e hamada gram
ati a simples
ou S-gram
ati a. Muitas ara ter
sti as de uma linguagem, semelhante a Pas al, podem
ser expressas om S-gramati as.

Seja L a linguagem sobre o alfabeto f(; )g, onsistindo de todas as adeias


de par^enteses \aninhadas orretamente", isto e, adeias om a mesma quantidade de
ambos tipos de par^enteses, e tais que qualquer pre xo ontenha uma quantidade de \("
maior ou igual que \)". Por exemplo, algumas adeias validas s~ao (()()) e ((()())()), ja as
adeias ())(), ()() e  n~ao s~ao onsideradas omo \aninhadas orretamente". A seguinte
S-gram^ati a gera L.

Exemplo 4.2.6

S
A
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

!
!

(A
(AA

j)
89

4.3. Gramati as Livres de Contexto e Linguagens de Programa ~ao

4.3 Gramati as Livres de Contexto e Linguagens de


Programa ~ao
Onde mais se utiliza a teoria das linguagens formais e na de ni ~ao de linguagens de programa ~ao e na onstru ~ao de interpretadores e ompiladores. O problema basi o aqui e
de nir pre isamente uma linguagem de programa ~ao e usar esta de ni ~ao omo o ponto
de in io para es rever tradu ~oes e ientes e on aveis de programas. Tanto as linguagens
regulares omo as livre de ontexto s~ao importantes na onse u ~ao desses objetivos. Linguagens regulares s~ao usadas no re onhe imento de ertos padr~oes simples que o orrem
em linguagens de programa ~ao, mas pre isamos de linguagens livres de ontexto para
modelar aspe tos mais ompli ados.
 ostume
Podemos de nir uma linguagem de programa ~ao por uma gramati a. E
quando se des reve a sintaxe de linguagens de programa ~ao usar uma onven ~ao para
espe i ar a gramati a, hamada a \Forma de Ba kus-Naur" ou BNF. Esta forma, embora
aparentemente diferente, e em ess^en ia a mesma que vimos usando. Em BNF, as variaveis
s~ao olo adas em ol hetes triangulares "h i". Os smbolos terminais s~ao es ritos sem
qualquer mar a espe ial. A BNF tambem usa smbolos auxiliares omo j, do mesmo modo
omo zemos. Assim, a gramati a no exemplo 4.4.4 deve apare er, em BNF, omo
hexpress~aoi ::= htermoi j hexpress~aoi + htermoi,
htermoi ::= hfatori j htermoi  h fatori,
hfatori ::= hidenti adori j (hexpress~aoi)
hidenti adori ::= a j b j

Os smbolos +, , ) e ( s~ao terminais. O smbolo j representa uma alternativa omo em


nossa nota ~ao, mas ::= e usado em lugar de !. As des ri ~oes BNF das linguagens de
programa ~ao tendem a usar identi adores de variaveis de forma mais expl ita de modo
a des rever melhor o que faz a produ ~ao. Mas diferentemente dessas ara tersti as, n~ao
existem diferen as signi ativas entre essas duas nota ~oes.
Muitas partes de uma linguagem de programa ~ao semelhante a Pas al s~ao su estveis
de de ni ~ao por uma gramati a livre de ontexto. Por exemplo, um omando \if-thenelse" pode ser de nido por

hif- omandoi ::= if h ondi ~aoihthen- lausulaihelse- lausulai

Aqui a palavra have \if" e um smbolo terminal. Todos os outros termos s~ao variaveis as quais ainda tem de ser de nidas. Se ompararmos isso om o exemplo 4.2.5
vemos que isto pare e om uma s-produ ~ao. A variavel hif- omandoi a esquerda e sempre
asso iada om o terminal if na direita. Por isso os omandos omo esses s~ao fa ilmente
e e ientemente analisados. Vemos aqui uma raz~ao porque usamos palavras- haves: elas
n~ao somente prov^eem alguma estrutura visual que nos pode guiar a leitura do programa,
omo tambem torna o trabalho do ompilador muito mais fa il.
Infelizmente nem todas as ara tersti as de uma linguagem de programa ~ao tpi a
podem ser expressas por uma S-gramati a. Por exemplo, as regras para hexpress~aoi

90

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 4. Linguagens Livres de Contexto


n~ao s~ao desse tipo, de modo que sua analise torna-se menos obvia. Ent~ao olo amos
a seguinte quest~ao: que regras gramati ais podemos permitir e ainda assim analisa-las
e ientemente? Em ompiladores tem-se usado bastante o que se hama gramati as LL(k)
(gramati as esquerda-direita, esquerda re ursivas) e LR(k) (gramati as esquerda-direita,
direita re ursivas), as quais geram adeias que podem ser analisadas lendo-as da esquerda
para direita, onsiderando k smbolos em ada passo. Estas gramati as t^em a habilidade
de expressar ara tersti as menos obvias de linguagens de programa ~ao permitindo-nos
ainda analisa-las em tempo linear.

4.4 Ambiguidades em gramati as e linguagens


Na base de nosso argumento podemos a rmar que dado w 2 L(G), o metodo de pesquisa
exaustiva produzira uma arvore de deriva ~ao para w. Dizemos \uma" arvore de deriva ~ao
em vez de \a" arvore de deriva ~ao devido a que existem muitas arvores de deriva ~ao, em
prin pio. Esta situa ~ao e designada por ambiguidade.

De ni ~ao 4.4.1 Uma gramati a livre de ontexto, G = hV; T; S; P i diz-se ambgua se

existe algum w 2 L(G) que tem no mnimo duas arvores de deriva ~ao distintas. Alternativamente, ambiguidade impli a a exist^en ia de duas ou mais deriva ~oes a esquerda ou a
direita.

Exemplo 4.4.2 A gramati a om produ ~oes


S

! aSb j

SS

;

e ambgua. A senten a aabb tem duas arvores de deriva ~ao omo mostrada na gura 4.4.
A ambiguidade e uma ara tersti a omum em linguagens naturais, onde elas s~ao
toleradas e manipuladas de muitos modos. Em linguagens de programa ~ao, onde deve
existir somente uma interpreta ~ao de ada assertiva, a ambiguidade deve ser evitada
quando possvel. Em geral, se obtem isto rees revendo a gramati a numa forma n~aoambgua, equivalente.

Exemplo 4.4.3 Considere a gramati a livre de ontexto G = hV; T; E; P i, onde V =

fE; I g, T = fa; b; ; +; ; (; )g, e P e o onjunto de produ ~oes

! E + E j E  E j (E ) j I
!a j b j
As adeias (a + b)  e a + b  est~ao em L(G). E fa il v^er que esta gramati a gera
E
I

um sub onjunto restrito de express~oes aritmeti as para linguagens de programa ~ao tipo
Fortran ou Pas al. A gramati a e ambgua. Por exemplo, a adeia a + b  tem duas
arvores de deriva a~o diferentes, omo mostrada na gura 4.5.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

91

4.4. Ambiguidades em gramati as e linguagens

0123
7654
S OOOO
nnn
OOO
n
n
n
OOO
n
O
nnn
n
89:;
?>=<
89:;
?>=<
0123
7654
a
S ==
b

=

=

==


89:;
?>=<
0123
7654
89:;
a
S ?>=<
b
89:;
?>=<

0123
7654
ll S VVVVVVV
lll
VVVV
l
l
VVVV
lll
l
V7654
l
0123
7654
0123
S
n S OOOO
n
n
n
OOO
n
OOO
nn
O
nnn
n
0123
7654
89:;
?>=<
89:;
?>=<
89:;
?>=<
a
S

b
=
=
 =

=

==


89:;
?>=<
89:;
0123
7654
a
S ?>=<
b
89:;
?>=<


Figura 4.4: Exemplo de arvores de deriva ~ao diferentes para uma mesma adeia.

0123
7654
r E QQQQQ
r
r
QQQ
r
QQQ
rr
rr
0123
7654
0123
7654
0123
7654
+
E
}E ???
}
??
}
?
}}
}
0123
7654
0123
7654
89:;
?>=<
()*+
/.-,

I
E
E

0123
7654
E

0123
7654
oo E RRRRRR
o
o
RRR
ooo
RRR
ooo
0123
7654
89:;
?>=<
0123
7654

E ==
E
==
==
0123
7654
0123
()*+
/.-,
+ 7654
E
I

89:;
?>=<
a

()*+
/.-,
I

()*+
/.-,
I

()*+
/.-,
I

()*+
/.-,
I

89:;
?>=<
b

89:;
?>=<

89:;
?>=<
a

89:;
?>=<

(a)

(b)

Figura 4.5: Exemplo de arvores de deriva ~ao diferentes para uma mesma adeia.

92

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 4. Linguagens Livres de Contexto


0123
7654
E PPP
PPP
qqq
q
PPP
q
qq
P7654
q
0123
7654
0123
0123
7654
+
E
}T AAA
}
AA
}}
A
}} ?>=<
0123
7654
89:;
0123
7654
0123
7654
T
T
F

0123
7654
F

0123
7654
F

()*+
/.-,
I

()*+
/.-,
I

()*+
/.-,
I

89:;
?>=<

89:;
?>=<
a

89:;
?>=<
b

Figura 4.6: Exemplo de arvore de deriva ~ao numa gramati a, n~ao ambigua, equivalente
a gramati a ambigua do exemplo anterior.
Um modo de resolver a ambiguidade e, omo esta nos manuais de linguagens de programa ~ao, asso iar regras de pre ed^en ia aos operadores + e . Como , normalmente,
tem pre ^en ia mais alta que +, tomaramos a gura 4.3.(a) omo a analise orreta, pois
ela indi a que a subexpress~ao b  e avaliada antes de tomar a adi ~ao. Entretanto, essa
 melhor rees rever a gramati a tal que
onven ~ao esta ompletamente fora da gramati a. E
exista uma analise possvel, aquela em que a multipli a ~ao e feita antes de uma adi ~ao.

Exemplo 4.4.4 Para rees rever a gramati a do exemplo 4.4.3, anterior, introduzimos

novas variaveis, tomando

omo

E ; T ; F; I

g e tro ando as produ ~oes om

! j +
! j 
! j( )
! j j
Uma arvore de deriva ~ao da senten a +  e mostrada na gura
E

a
b

4.6. N~ao existe
outra arvore de deriva a~o para essa adeia: a gramati a n~ao e ambgua. Ela e equivalente a gramati a do exemplo 4.4.3. N~ao e muito dif il justi ar esse argumento nesse
exemplo espe  o, mas, em geral, as quest~oes de se uma dada gramati a livre de ontexto
e ambigua ou n~ao e se duas gramati as livres de ontexto s~ao equivalentes ou n~ao, s~ao
muito dif eis de responder. De fato, veremos adiante que n~ao existe nenhum algoritmo
geral para o qual essas quest~oes possam ser resolvidas.

No exemplo a seguir a ambiguidade veio da gramati a no sentido de que ela poderia ser
removida a hando uma gramati a n~ao-ambgua equivalente. Em alguns asos, entretanto,
isto n~ao e possvel porque a ambiguidade esta na linguagem.

De ni ~ao 4.4.5 Se L e uma linguagem livre de ontexto para o qual existe uma gramati a
n~ao ambgua, ent~ao L diz-se n~
ao-ambgua. Se toda gramati a que gera L e ambgua, L
diz-se inerentemente ambgua.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

93

4.5. Simpli a ~oes de Gramati as Livres de Contexto


Exemplo 4.4.6 A linguagem

L = fam bm ng [ fam bn ng;


om m e n n~ao negativos, e uma linguagem livre de ontexto inerentemente ambgua.
L e livre de ontexto. De fato, observe que

L = L1 [ L2;
onde L1 e gerada por
S1
D
C
e

! DC
! aDb j 
! C j 

L2 e dada por uma gramati a analoga om smbolo de in io S2 e produ ~oes


S2
A
E
Ent~ao

! AE
! aA j 
! bE j :

L e gerada pela ombina ~ao dessas duas gramati as om a produ ~ao adi ional
S

! S1 j

S2 :

A gramati a e ambgua porque as adeias an bn n perten e a L1 e a L2 . Portanto,


tem duas deriva ~oes distintas, uma ome ando om S =) S1 , e outra om S =) S2 .
Disto n~ao segue que L e inerentemente ambgua pois pode existir outra gramati a n~aoambgua equivalente a essa. Mas de alguma maneira L1 e L2 tem exig^en ias on itantes,
a primeira pondo uma restri ~ao no numero de a's e b's, enquanto a segunda faz o mesmo
para b's e 's. Algumas pou as tentativas nos onven era da impossibilidade de ombinar
essas exig^en ias num onjunto uni o de produ ~oes que ubra uni amente o aso n = m.
Um argumento rigoroso, entretanto, e muito te ni o pode ser en ontrado em [Har78.

4.5 Simpli a o~es de Gramati as Livres de Contexto


A de ni ~ao de uma gramati a livre de ontexto n~ao imp~oe qualquer restri ~ao no lado
direito de uma produ ~ao. Entretanto n~ao e ne essario liberdade ompleta. No teorema
4.2.3, vimos a onveni^en ia de ertas restri ~oes sobre as formas gramati ais, eliminando
produ ~oes da forma A !  e A ! B , tornando os argumentos mais fa eis. Em
muitas situa ~oes e desejavel mesmo olo ar mais restri ~oes s^obre a gramati a. Por isso

94

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

pre isamos estudar m


etodos de transformar uma gram
ati a livre de ontexto arbitr
aria
numa equivalente, que satisfaz ertas restri
~
oes sobre sua forma.
A adeia vazia desempenha um papel singular em muitos teoremas e provas e 
e ne ess
ario se d
a a ela uma aten
~
ao espe ial. Preferimos remov^
e-lo estudando somente linguagens que n~
ao a ont
em. Em fazendo isso n~
ao perdemos generalidade, pelo seguinte motivo.
Seja

qualquer linguagem livre de ontexto ontendo a adeia vazia, e

uma gram
ati a livre de ontexto para
a nova vari
avel

S0 , tornando S0

fg

. Ent~
ao a gram
ati a obtida a res entando-se

a vari
avel de in
 io e a res entando a produ
~
ao

!S j

S0
gera

G = hV; T; S; P i

;

Portanto, qualquer on lus~


ao n~
ao trivial que podemos tirar para

tamb
em para

Alem disso, dado qualquer gram


ati a livre de ontexto,

m
etodo para obter

Gb

tal que

L(Gb )

fg

L(G)

L
G,

fg

vale

existe um

Consequentemente, para todos os

propositos pr
ati os, n~
ao existe nenhuma diferen
a entre gram
ati as livres de ontexto que
in luem
livre de

e
.

4.5.1

aquelas que n~
ao o in luem.

No que segue nos restringiremos a gram


ati as

Regra Geral de Substitui


~
ao

Teorema 4.5.1 Seja

G = hV; T; S; P i

uma gram
ati a livre de ontexto. Suponha que

ont
em produ
o
~es da forma

! x1 Bx2 :

A
Suponha que

s~
ao vari
aveis diferentes e que

! y1 j


e o onjunto de todas as produ
~
oes em

Gb

de

hV; T; S; Pb i

(4.1)

a gram
ati a na qual

Pb

y2
P

j  j

yn

que tem

omo o lado esquerdo.

Seja


e onstru
da ao se retirar a produ
~
ao ( 4.1)

e adi ionando a ele

A
Ent~
ao

! x1 y1x2 j

x1 y2 x2

j  j

x1 yn x2 :

L(Gb ) = L(G).

w 2 L(G) e tal que S =)G w (deriva ~ao em G).



deriva
~
ao n~
ao envolve a produ
~
ao ( 4.1), ent~
ao S =) b w .
G
~ o:
Demonstra
a

Suponha que

Se esta

Se for o aso de envolver, ent~


ao observe na deriva
~
ao a primeira vez que a produ
~
ao
( 4.1) 
e usado.

B,

assim introduzido, tem que ser tro ado.

N~
ao perdemos nada em

saber que isso 


e feito imediatamente. Portanto,

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
95

4.5. Simpli a ~oes de Gramati as Livres de Contexto


S

=)G

=)G

u1 Au2

u1 x1 Bx2 u2

=)G

u1 x1 y x2 u2 :

b , podemos obter
Mas, om a gramati a G

=)Gb

u1 Au2

=)Gb

u1 x1 y x2 u2 :

b . Se ( 4.1) e usado
Portanto, podemos obter a mesma forma senten ial om G e G
novamente mais adiante, na deriva ~ao de w , o argumento se repete. Segue ent~ao, por
indu ~ao no n
umero de vezes que a produ ~ao e apli ada, que

Portanto, se w
ent~ao w 2 L(G).

( ), ent~ao

L G

=)Gb

w:

( b ). Analogamente se mostra que se

L G

( b ),

L G

Exemplo 4.5.2 Considere G = hfA; B g; fa; bg; A; P i, om produ ~oes


A

! j
j
!
j
a

aaA

abbA

abB ;

b:

Usando a substitui ~ao sugerida para a vari


avel
du ~oes
A
B

! j
j
!
j
a

aaA

abbA

b, 
A nova gramati a, G
e equivalente a

em

b om pro, obtemos a gramati a G

ababbA

abb ;

b:

. A adeia

aaabb

tem deriva ~ao

=) aaA =) aaabB =) aaabb

b 
, e a orrespondente deriva ~ao em G
e

=) aaA =) aaabb :

Note que, neste aso, a vari


avel B e as produ ~oes asso iadas est~
ao, ainda, na gramati a,
embora elas n~ao possam desempenhar seus papeis nas deriva ~oes.

96

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

4.5.2

Remo
~
ao de Produ
~
oes Esquerda-Re ursivas

O teorema 4.5.1 e uma regra de substitui ~ao simples e intuitiva: uma produ ~ao A !
x1 Bx2 pode ser eliminada da gram
ati a se olo armos em seu lugar o onjunto de produ ~oes nas quais B e tro ado por todas as adeias que ele deriva em uma etapa. Neste
resultado e pre iso que A 6= B . O aso quando A = B sera par ialmente respondido no
pr
oximo teorema.

Seja G = hV; T ; S; P i uma gramati a livre de ontexto. Divida o onjunto


de produ ~oes ujos lados esquerdo s~ao alguma variavel (digamos A), em dois sub onjuntos
disjuntos
Teorema 4.5.3

Ax1

j  j

Ax2

Axn ;

(4.2)

onde xi ; yi est~ao em (V

b
G =

h [f g
V

) , mas

b
; T ; S; P , onde

da forma ( 4.2) e ( 4.3) por

62

A
V

y1

y2

j  j

ym ;

(4.3)

n~ao e pre xo de qualquer yi . Considere a gramati a


e Pb s~ao obtidas tro ando todas as produ ~oes de P

yi

yi Z;

xi

xi Z;

= 1;    ; m;
= 1;    ; n:

Ent~ao L(G) = L(Gb ).


~ o: Considere uma deriva ~ao em G, envolvendo a variavel A, numa sequ^en ia
Demonstra
a
de etapas usando produ ~oes da forma ( 4.2), digamos
A

=) Axi =) Axj xi =) Axk    xj xi

Mais edo ou mais tarde, hegaremos numa senten a na qual uma produ ~ao da forma
( 4.3) deve ser usada, tal que
A

=) yh xk    xj xi :

b por
Mas essa sequ^en ia tambem pode ser gerada por G
A

=) yh Z =) yh xk Z =) yh xk    xj Z =) yh xk    xj xi :

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

97

4.5. Simpli a ~oes de Gramati as Livres de Contexto


Portanto, para qualquer

w tal que S

)G w

, tamb
em temos

pode ser revertido fa ilmente.

As produ
~
oes da forma ( 4.2) s~
ao hamadas

)Gb w

esquerda-re ursivas.

. O argumento

Elas s~
ao um aso

espe ial de re urs~


ao 
a esquerda em gram
ati as. Em geral uma gram
ati a diz-se

re ursiva se existe alguma variavel A para a qual

esquerda-

A =) Ax
seja poss
vel.

Exemplo 4.5.4 Use o teorema 4.5.3 para remover produ ~oes esquerda-re ursivas da

gramati a

A
B

! Aa j
! Bb j

aB
ba:

;

Apli ando o teorema para a variavel A, fazendo as identi a ~oes x1 = a, y1 = aB , e


y2 = , obtemos o novo onjunto de produ ~oes

A
Z
B

! aB j aB Z j
! a j aZ;
! Bb j ba:

Z;

Apli ando o teorema novamente, desta vez a variavel B , obtemos o resultado nal

A
Z
B
Y

! aB j aB Z j
! a j aZ;
! baY j ba;
! b j bY;

Z;

Para remover produ


~
oes esquerda-re ursivas deve-se introduzir novas vari
aveis.

gram
ati a resultante pode ser onsiderada mais simples do que a original, porque ela n~
ao
tem qualquer produ
~
ao esquerda-re ursiva.

Por outro lado, ela, geralmente, tem mais

vari
aveis e produ
~
oes.

4.5.3

Remo ~ao de Produ o~es In


uteis

Queremos sempre remover produ


~
oes de gram
ati as que nun a tomam parte de deriva
~
oes.
Por exemplo, na gram
ati a ujo onjunto de produ
~
oes 
e

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
98

Captulo 4. Linguagens Livres de Contexto


S

! j
! j
!
B

A
B

aS a

aa

aA;

Bb

a produ ~ao S ! B n~ao desempenha qualquer papel, pois B n~ao pode ser transformado
numa adeia terminal. Por outro lado, as produ ~oes A ! a j aA tambem n~ao
desempenham qualquer papel, pois embora de A possamos derivar uma adeia terminal,
nun a poderemos atingi-lo apartir de S . Remover estas produ ~oes leva a uma gramati a
equivalente e mais simpli ada.

De ni ~ao 4.5.5 Seja G = hV; T ; S; P i uma gramati a livre de ontexto. Uma variavel A
diz-se u
til se existe w 2 L(G) tal que
S

2( [

=) xAy =) w;

) . Em palavras, uma variavel e util se o orre em, no mnimo, uma deriva ~ao.
Caso ontrario ela diz-se in
util. Uma produ ~ao e inutil se ela envolve qualquer variavel
inutil.
x; y

Exemplo 4.5.6 Elimine smbolos e produ ~oes inuteis de

S; A; B; C

ge

= fa; bg, om

onsistindo de
S
A
B
C

!
!
!
!

aS

V; T ; S; P

i,

onde

a
bb
aC b

Primeiro identi amos o onjunto de variaveis que leva a uma adeia terminal. Como
! a e B ! aa, as variaveis A e B perten em a esse onjunto. Do mesmo modo
perten e S pois S =) A =) a. Entretanto n~ao podemos usar esse argumento para
C . Logo, C 
e inutil. Removendo C e as produ ~oes envolvendo C teremos a gramati a
G1 = hV1 ; T ; S; P1 i, om V1 = fS; A; B g e as produ
~oes
A

S
A
B

!
!
!

aS

a
bb

Agora, devemos eliminar aquelas variaveis que n~ao podem ser atingidas a partir do S .
Para isso, podemos desenhar um grafo de depend^en ia para as variaveis.Os grafos de
depend^en ia s~ao maneiras de visualizar rela ionamentos omplexos e s~ao en ontrados em
muitas apli a ~oes. Para as gramati as livres de ontextos, os grafos de depend^en ia tem
seus verti es rotulados om variaveis. Existira uma aresta desde um verti e C em D se e
somente se existe uma produ a~o da forma
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

99

4.5. Simpli a ~oes de Gramati as Livres de Contexto



GFED
@ABC
S

GFED
// @ABC
A

@ABC
GFED
B

Figura 4.7: Exemplo de grafo de depend^


en ia

Um grafo de depend^en ia para

G1

xDy:

e mostrado na gura 4.7.

Uma variavel e util somente se existir um aminho do verti e rotulado S ao verti e


rotulado om aquela variavel. No nosso aso, vendo a gura 4.7, a variavel B e inutil.
Removendo-o e as orrespondentes produ ~oes e terminais, hegamos a resposta nal
b
b b
b
b
b
G = hV ; T ; S; P i om V = fS; Ag, T = fag e as produ
~oes
S
A

!
!

aS

A;

A formaliza
~
ao desse pro esso leva 
a onstru
~
ao geral e o teorema orrespondente.

Teorema 4.5.7 Seja

G =

i uma gramati a livre de ontexto. Ent~ao existe


b e b n~
h
i
ao ontem

V; T ; S; P

uma gramati a livre de ontexto, Gb = Vb ; Tb ; S; Pb , tal que


qualquer variavel inutil.
~ o:
Demonstra
a

A gram
ati a G pode ser gerada de G, usando um algoritmo onsis-

titu
do de duas partes.
G1 =

L(G) = L(G)

Na primeira parte, onstruimos uma gram


ati a intermedi
aria,

V1 ; T ; S; P1 , tal que V1 ont


em somente vari
aveis das quais podemos derivar uma

adeia de s
mbolos terminais, isto 
e, vari
aveis A para as quais

) 2

A =

T :

As etapas do algoritmo s~
ao:

1. Torne V1 igual a

2. Repita o seguinte passo at


e n~
ao onseguir mais a res entar nenhuma vari
avel a V1 .

(a) Para A

V , onde P tem uma produ


~
ao da forma

x1 x2



xn ;

xi

2 [
T

V1 e n

adi ione A a V1 .

3. Tome P1 omo todas as produ


~
oes em P om s
mbolos em (V1

T) .

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
100

Cap
tulo 4. Linguagens Livres de Contexto

@ABC
GFED
A
z FFFF
z
z
FF
z
F
zz
zz
@ABC
GFED
XYZ[
_^]\
A1
A1
1



@ABC
GFED
A
w j1 HHHH
w
w
HH
ww
H
ww
@ABC
GFED
HIJK
ONML
Ai1
Aim
FF
FF
xx
x
FF
xx
F
xx
HIJK
ONML
HIJK
ONML
akp
ak1





nivel

nivel

nivel

nivel

nivel


Figura 4.8: Arvore
de deriva ~ao par ial
 laro que este pro esso terminara. E
 igualmente laro que se S 62 V1 , ent~ao L(G) =
E
L(G1 ) = ;. Por outro lado, se A 2 V1 , ent~
ao A =) w, para algum w 2 T  , pode ser
derivada em G1 = hV1 ; T ; S; P1 i. O problema restante e se todo A para o qual A =)
w = a1 a2    am 
e adi ionado a V1 antes do pro edimento terminar. Considere qualquer
um desses A's e olhe a arvore de deriva ~ao par ial para aquela deriva ~ao ( gura 4.8).
No nvel k, existem somente smbolos terminais, portanto toda variavel Ai no nvel k 1
sera adi ionado a V1 , no primeiro passo, na etapa 2 do algoritmo. Qualquer variavel no
nvel k 2 sera adi ionado a V1 , no segundo passo da etapa 2. Na ter eira vez da etapa 2,
todas as variaveis no nvel k 3 ser~ao adi ionados, e assim por diante. O algoritmo n~ao
pode terminar enquanto existir variavel na arvore que n~ao esteja ainda em V1 . Portanto,
A ser
a, mais edo ou mais tarde, olo ado em V1 .
Na segunda parte da onstru ~ao, obtemos a resposta nal, que e Gb de G. Desenhamos o grafo de depend^en ia para G1 e dele a hamos todas as variaveis que n~ao podem
ser atingidas de S . Essas s~ao removidas do onjunto de variaveis, assim omo as orrespondentes produ ~oes. Podemos tambem eliminar qualquer terminal que n~ao o orre em
b = hVb ; Tb ; S; Pb i.
alguma produ ~ao util. O resultado e a gramati a G
Por onstru ~ao, Gb n~ao ontem qualquer smbolo ou produ ~ao inutil. Alem disso, para
ada w 2 L(G) temos a deriva ~ao
S

Como a onstru ~ao retem


samos para fazer a deriva ~ao

=) xAy =) w:

e todas as produ ~oes asso iadas, temos tudo que pre is-

=)Gb xAy =)Gb w:

A gramati a Gb e onstruda de G removendo produ ~oes tais que Pb  P . Consequenb


temente, qualquer L(Gb )  L(G). Colo ando os dois resultados juntos, vemos que G e G
s~ao equivalentes.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

101

4.5. Simpli a ~oes de Gramati as Livres de Contexto


4.5.4

Remo
~
ao de -produ
~
oes

Um espe ie de produ ~ao que e, as vezes, indesejada e aquela na qual o lado direito e a
adeia vazia.

De ni ~ao 4.5.8

Qualquer produ
~
ao de uma gram
ati a livre de ontexto da forma

A

e hamada uma

-produ ~ao.

!

Qualquer vari
avel

para a qual a deriva


~
ao

A =) 

e poss
vel 
e hamada

anulavel.

Uma gramati a pode gerar uma linguagem n~ao ontendo , hamada linguagem livre
de , ainda que a gramati a possua -produ ~oes e variaveis anulaveis. Nesses asos, as
-produ ~oes podem ser removidas

Exemplo 4.5.9

Considere a gram
ati a

S
S1

! aS1b;
! aS1 b j :
 fan bn = n  1g

Esta gram
ati a gera a linguagem livre de

-produ ~ao S1 ! 
substituindo-se  por S1 ,
. A

pode ser removida ap


os adi ionar-se novas produ
~
oes obtidas

onde ela o orre no lado direito. Fazendo isso, obtemos a gram


ati a

S
S1

! aS1b j ab;
! aS1 b j ab:

 f
E
a il mostrar que esta nova gram
ati a gera a mesma linguagem que a original.

Em situa ~oes mais gerais, as substitui ~oes para as -produ ~oes podem ser feitas de
modo similar, porem mais ompli ado.

Teorema 4.5.10

Seja

G = hV; S; T; P i uma gramati a livre de ontexto tal que  62 L(G).


Gb = hV; T; S; Pb i, sem -produ ~oes.

Ent~
ao existe uma gram
ati a equivalente,

~ o: Primeiro en ontraremos VN , o onjunto de todas as variaveis anul


Demonstra
a
aveis
de G, usando as seguintes etapas:

102

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

1. Para toda produ


~
ao

!

, ponha

A em VN .

2. Repita o seguinte passo at


e n~
ao existir vari
avel a ser olo ada em

(a) Para todas as produ


~
oes em

P
B

onde

A1 ; A2 ;    ; An

est~
ao em

Uma vez obtido o onjunto


olhamos 
as produ
~
oes

VN ,

xi

[T

! A1A2    An;

VN , ponha B

em

VN .

estamos pronto para onstruir

Pb .

Para fazer isso,

da forma

A
onde

VN .

! x1 x2 : : : xm ;

m  1;
P,

Para ada uma dessas produ


~
oes de

olo amos em

Pb

aquelas

produ
~
oes, assim omo todas aquelas geradas tro ando as vari
aveis anul
aveis, om

,

xi e xj s~ao anulaveis, existira uma


xj e tro ada por  e uma na qual
ambas s~
ao tro adas om . Existe uma ex ess~
ao: se todos os xi s~
ao anul
aveis, a produ
~
ao
A !  n~ao sera olo ada em Pb . E laro que Gb e equivalente a G.
em todas as ombina
~
oes poss
veis.

produ
~
ao em

Pb ,

om

xi

Por exemplo, se

tro ado por

,

uma na qual

Exemplo 4.5.11 A he uma gram


ati a livre de ontexto sem -produ ~oes, equivalente a
gramati a de nida por

S
A
B
C
D

! ABaC;
! BC;
! b j ;
! D j ;
! d:

Da primeira etapa da onstru ~ao do teorema 4.5.10, a hamos que as variaveis anulaveis
s~ao A; B e C . Ent~ao, seguindo a segunda etapa da onstru ~ao obtemos

S
A
B
C
D

! ABaC j BaC j
! BC j C j B;
! b;
! D;
! d:

AaC

ABa

aC

Ba

Aa

a;

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
103

4.5. Simpli a ~oes de Gramati as Livres de Contexto

4.5.5

Remo ~ao de produ ~


oes unitarias

As produ ~oes em que ambos os lados s~ao variaveis uni as s~ao indesejaveis.

De ni ~ao 4.5.12 Qualquer produ ~ao numa gramati a livre de ontexto da forma,
A
onde A; B

! B;

2 V , e hamada produ ~ao unitaria.

Teorema 4.5.13 Seja G = hV; S; T; P i uma gramati a livre de ontexto sem -produ ~oes.
b = hVb ; Tb ; S; Pb i, que n~
Ent~ao, existe uma gramati a livre de ontexto, equivalente G
ao
ontem produ o~es unitarias.

! A pode
ser removida sem nenhum efeito sobre a gramati a. Consideremos as produ ~oes unitarias
da forma A ! B , om A 6= B . A primeira vista, pode pare er que podemos usar o
teorema 4.5.1, diretamente om x1 = x2 = , tro ando

~ o: Obviamente que qualquer produ ~ao unitaria da forma A


Demonstra
a

!B

om

A
onde B

! y1 j

y2

j  j

yn ;

! y1 j    j yn .

Mas isso nem sempre fun ionara. No aso espe ial

A
B
C

!B
!C
!A

as produ ~oes unitarias n~ao s~ao removidas. Para superar isso, primeiro a hamos para ada
A, todas as variaveis B tais que

A =) B:

(4.4)

Podemos fazer isso desenhando um grafo de depend^en ia, om uma aresta (C; D)
sempre quando a gramati a tem a produ ~ao C ! D, ent~ao (4.4) se veri a quando
existir um aminho entre A e B . A nova gramati a Gb e gerada primeiro olo ando-se
em Pb todas as produ ~oes n~ao unitarias de P . Em seguida, para todo A e B satisfazendo
(4.4), a res entamos a Pb as produ ~oes

104

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

@ABC
GFED
S

GFED
// @ABC
B

&&
ff

@ABC
GFED
A

Figura 4.9: Exemplo de grafo de depend^


en ia para remo
~
ao de produ
~
oes unit
arias.

! y1 j

A
onde

! y1 j

que uma vez

y2
que B

j  j y
! y1 j

y2

j  j

yn ;

ao todas as produ
~
oes em
n s~

y2

j  j

yn


e tirado de

Pb , om B

Pb ,

a esquerda. Observe


nenhum dos

yi

pode ser uma

simples vari
avel, desse modo nenhuma produ
~
ao unit
aria 
e riada na etapa.
Para mostrar que a gram
ati a resultante 
e equivalente 
a original segue-se a mesma
linha de ra io 
nio do teorema

4.5.10.

Observe que o algoritmo a ima pode gerar produ


~
oes in
uteis. Portanto, depois, aso
seja ne ess
ario, devemos apli ar a

Exemplo 4.5.14

Gb o algoritmo do teorema

Remover todas as produ ~oes unitarias de

! Aa j B;
! a j b j
! A j bb:

S
A
B
que

4.5.7.

B;

O grafo de depend^en ia para produ ~oes unitarias e dado na gura 4.9. Vemos dele

) A;

) B;

) A e A ) B:

Portanto, adi ionemos as produ ~oes n~ao unitarias originais

! Aa;

!a j

b ; B

! bb;

as novas regras

!a j

bb; A

! bb

!a j

b ;

para obter a gramati a desejada.


Podemos olo ar todos esses resultados juntos para mostrar que as gram
ati as para
linguagens livres de ontexto podem se tornar livres de produ
~
oes in
uteis,

-produ ~oes e

produ
~
oes unit
arias.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
105

4.6. Formas Normais


4.6

Formas Normais

Existem muitas tipos de formas normais que podemos estabele er para gram
ati as livres
de ontexto. Algumas dessas, devido suas amplas utilidades, foram estudadas extensivamente. Consideremos, brevemente, duas delas.

4.6.1

Forma Normal de Chomsky

Uma esp
e ie de forma normal que podemos v^
er 
e aquela na qual o n
umero de s
mbolos
a direita da produ

~
ao s~
ao estritamente limitados. Em parti ular, podemos pedir que as
adeias no lado direito das produ
~
oes n~
ao tenham mais que dois s
mbolos. Um exemplo

forma normal de Chomsky.


e a

De ni ~ao 4.6.1 Uma gramati a livre de ontexto esta na forma normal de Chomsky

se todas as produ o~es s~ao da forma

! BC ou A ! a;

A
onde A; B; C

2V

e a 2 T.

Teorema 4.6.2 Seja G = hV; T; S; P i uma gramati a livre de ontexto tal que  62 L(G).

b = hVb ; T; S; Pb i, na forma normal de Chomsky.


Ent~ao, existe uma gramati a equivalente, G

~ o:
Demonstra
a
dade, que

Devido ao teorema

4.5.10 podemos assumir, sem perda de generali-

G n~ao tem -produ ~oes nem produ ~oes unitarias.

A onstru
~
ao de

Gb sera dada

em duas etapas.

Etapa1:

Construir a partir de

todas as produ
~
oes em

uma gram
ati a,

a2T

xi


e um s
mbolo ou em

e a produ
~
ao

!a

Ba

hV1; T; S; P1i

. Se

! x1 x2    xn;
ou

T.

Introduzir uma nova vari


avel

n = 1, ent~ao x1

Ba ,

para ada

deve ser um s
mbolo terminal, pois n~
ao

temos produ
~
oes unit
arias. Neste aso, olo ar a produ
~
ao em

P1

, onsiderando

na forma

A
onde ada

G1

P1 .

Se

n  2, olo ar em

a produ
~
ao

A
onde

Ci = xi

se

xi 2 V

Ci = Ba

se

! C1 C2    Cn;
xi = a.
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

106

Cap
tulo 4. Linguagens Livres de Contexto

Com isso removemos todos os smbolos terminais das produ ~oes de omprimento maior
do que um, tro ando-os om as novas variaveis introduzidas. No m dessa etapa, temos
uma gramati a G1 , ujas produ ~oes t^em a forma

! a;

(4.5)

! C1 C2    Cn;

(4.6)

A
ou

onde Ci 2 V1 . Logo, por onsequ^en ia do teorema 4.5.1, e fa il v^er que L(G1 ) = L(G).
Na segunda etapa, introduzimos variaveis adi ionais para reduzir o omprimento do lado direito das produ ~oes onde ne essario. Primeiro olo ar todas as produ ~oes
da forma (8.3) e todas da forma (4.6), om n = 2 em Pb . Para n > 2, introduzir as novas
variaveis D1 ; D2 ; : : : ; Dn 2 e olo ar em Pb as produ ~oes
Etapa 2:

! C1 D1;

D1

! C2 D2; : : : ; Dn

! Cn

Cn :

 laro que a gramati a, Gb , resultante esta na forma normal de Chomsky. Repetidas


E
apli a ~oes do teorema 4.5.1 mostra que L(Gb ) = L(G1 ) e, onsequentemente,

L(Gb ) = L(G):
Exemplo 4.6.3

Converter a gram
ati a, om produ ~oes

! ABa;

! aab;

! A ;

para a forma normal de Chomsky.


Pela exig^en ia na onstru ~ao do teorema 4.6.2, a gramati a n~ao tem qualquer produ ~ao ou qualquer produ ~ao unitaria.
Na etapa 1, introduzimos novas vari
aveis Ba , Bb , B e usamos o algoritmo para obter

S
A
B
Ba
Bb
B
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

! ABBa ;
! Ba Ba Bb ;
! AB ;
! a;
! b;
! :
107

4.6. Formas Normais


Na segunda etapa, introduzimos variaveis adi ionais para obter as duas primeiras produ o~es em forma normal, obtendo o resultado nal.

S
D1
A
D2
B
Ba
Bb
B
4.6.2

! AD1;
! BBa ;
! Ba D2;
! Ba Bb;
! AB ;
! a;
! b;
! :

Forma Normal de Greiba h

De ni ~ao 4.6.4 Uma gramati a livre de ontexto diz-se na forma normal de Greiba h se todas as produ o~es t^em a forma
A

! ax;

onde a 2 T e x 2 V  .
Note que devido as formas das produ
~
oes, uma gram
ati a na forma normal de Greiba h
n~
ao pode ser esquerda re ursiva.

Teorema 4.6.5 Seja G uma gramati a livre de ontexto, om 

uma gramati a equivalente, Gb , na forma normal de Greiba h.


~ o:
Demonstra
a

O algoritmo para a onstru


~
ao de

nessa onstru
~
ao 
e bastante longo.

Gb ,

62 L G .
(

Ent~ao existe

e a prova do teorema baseado

Desde que nosso interesse 


e na exist^
en ia de uma

forma normal de Greiba h, em vez de sua onstru


~
ao, s
o esbo
aremos sua onstru
~
ao.
O algoritmo para rees rever uma gram
ati a na forma normal de Greiba h onsiste em
v
arias etapas.

Etapa 1:

Rees rever a gram


ati a na forma normal de Chomsky.

Etapa 2:

Rotular as vari
aveis

Etapa 3:

Usar os teoremas

A1 ; A2 ; : : : ; An , de tal forma que A1 = S .

4.5.1 e

4.5.3 para rees rever a gram


ati a tal que todas as

produ
~
oes tenham uma das poss
veis formas

Ai
Zi
Ai

! Aj xj ; j > i;
! Aj xj ; j  n;
! axi ;
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

108

Cap
tulo 4. Linguagens Livres de Contexto

onde a 2 T e xi 2 V  e Zi s~ao as variaveis introduzidas quando foi usado o teorema


4.5.3, para eliminar produ ~oes esquerda-re ursivas. Para v^er que isso e possvel,
olhemos as produ ~oes ujos lados esquerdos e A1 . Tais produ ~oes satisfazem as
exig^en ias, ex eto aquelas da forma
A1

A1 x:

Para essas, apli amos o teorema 4.5.3, introduzimos novas variaveis Z1 no pro esso. Isto remove essas produ ~oes. Agora, onsidere as produ ~oes A2 ! A1 x. Se
substituirmos por A1 , usando o teorema 4.5.1, geramos ou produ ~oes a eitaveis ou
produ ~oes da forma A2 ! A2 x. Apli amos o teorema 4.5.3 para nos v^er livre
dessas ultimas. Para A3 , primeiro eliminamos A3 ! A1 x, pelo teorema 4.5.1,
e ent~ao, A3 ! A2 x. Finalmente, removemos as produ ~oes esquerda-re ursivas,
usando o teorema 4.5.3. Continuando assim ate todas as produ ~oes estarem na
forma requerida.
Etapa 4:

Apos a etapa 3, todas as produ ~oes tendo

An

An

a esquerda devem ser da forma

axn

e est~ao, portanto, na forma orreta. Estas produ ~oes podem, ent~ao, ser substitudas
naquelas An 1 , no lado esquerdo para obt^e-las na forma An 1 ! axn 1 . Essas,
ent~ao s~ao substitudas nas produ ~oes om An 2 a esquerda, e assim por diante.
Ao m desse pro esso, todas as produ ~oes om Ai , no lado esquerdo, estar~ao na
forma normal de Greiba h. Finalmente, para transformar as produ ~oes do tipo
Zi
! Aj xj na forma apropriada, realizamos uma substitui ~ao, usando o teorema
4.5.1.
Exemplo 4.6.6

Considere

!
!

A1
A2

A2 A2
A1 A2

j
j

a;
b:

A gramati a est
a na forma normal de Chomsky, e as vari
aveis est~
ao rotuladas apropriadamente, de modo que podemos ome ar na etapa 3. As produ ~oes
A2

eA1

A2 A2

est~
ao na forma exigida na etapa 3. Para obter a produ ~ao A2
usamos o teorema 4.5.1, substituindo por A1 , para obter
A2

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

A2 A2 A2

aA2

A1 A2

, na forma normal,

b:

109

4.6. Formas Normais

Agora, usamos o teorema 4.5.3, para remover produ ~oes esquerda-re ursivas, introduzindo a variavel Z e fazendo a identi a ~ao A = A2 , x1 = A2 A2 , y1 = aA2 e y2 = b
A2
Z

!
!

j
2 j

aA2

A2 A

aA2 Z

j j
b

bZ;

A2 A2 Z:

Finalmente, substituimos, usando o teorema 4.5.1, a primeira o orr^en ia de


produ ~oes om Z no lado esquerdo, hegando a forma normal de Greiba h.
A1
A2
Z

!
!
!

aA2 A2
aA2

aA2 A2

aA2 Z A2

aA2 Z

j j
j
b

aA2 Z A2

bA2
bZ;
bA2

bZ A2

bZ A2

A2

, nas

a;

aA2 A2 Z

aA2 Z A2 Z

bA2 Z

bZ A2 Z

Como este exemplo indi a, transformar uma gramati a livre de ontexto, embora
muito simples, na sua forma normal de Greiba h tende a ser um pro esso muito extenso.

110

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 4. Linguagens Livres de Contexto

4.7

Exer 
 ios

1. Considere a gramati a, om produ ~oes

! aSb j

SS

:

Mostre que a linguagem gerada por essa gramati a e

L = fw 2 fa; bg = Na (w) = Nb(w) e Na(v)  Nb(v)g;


para todo pre xo v de wg, onde Na (w) e o numero de a's, que o orrem em w.
Sugest~ao: testar as seguintes adeias: abaabb, aabaabb e ababab.
2. Desenhe a arvore de deriva ~ao orrespondente ao exer  io anterior.
3. A har as gramati as livres de ontexto para as seguintes linguagens ( om m
n  0 e k  0).
(a)
(b)
( )
(d)
(e)
(f)

 0,

L = fanbm = n 6= m 1g,
L = fanbm = n 6= 2mg,
L = fanbm = n  m + 3g,
L = fanbm k = n = m ou m  kg,
L = fanbm k = n = m ou m =6 kg,
L = fw 2 fa; bg = Na(w) e impar g

4. A har uma gramati a livre de ontexto para a linguagem

L = fanwwRbn = w 2 fa; bg ; n  1g


5. De na uma gramati a livre de ontexto para a linguagem de todas adeias no alfabeto fa; bg que n~ao s~ao palndromos. Isto e, para a linguagem

L = fw 2 fa; bg = w 6= wRg


6. Seja

L = fanbn = n  0g

(a) Mostre que L2 e livre de ontexto.


(b) Mostre que Lk e livre de ontexto, para ada k  1.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

111

4.7. Exer 
 ios

7. Mostre uma 
arvore de deriva
~
ao para a adeia

S
A
B

! AB j
! aB;
! Sb:

aabbbb,

om a gram
ati a

;

D^
e uma des ri
~
ao da linguagem gerada por essa gram
ati a.
8. Considere a gram
ati a om produ
~
oes

S
A
B
Mostre que a adeia

aabbabba

! aaB;
! bBb j
! Aa:

;

n~
ao est
a na linguagem gerada por tal gram
ati a.

9. A har uma gram


ati a de livre ontexto para o onjunto de todas as express~
oes
regulares sobre o alfabeto

fa; bg

10. Mostre que a gram


ati a seguinte 
e amb
gua

S
A
B

! AB j aaB;
! a j Aa;
! b:

11. Construa uma gram


ati a n~
ao amb
gua, equivalente 
a gram
ati a do exer 
 io anterior.
12. En ontre uma S-gram
ati a para

L(aaa b + b) e para L = fan bn = n  1g.

13. Mostre que toda S-gram


ati a 
e n~
ao-amb
gua.
14. Mostre que a linguagem
15. Use o teorema

(a)
(b)

( )

S
S
A
S
Z

L fw 2 fa; bg = Na w
=

) =

Nb w g
(


e livre de ontexto.

4.5.3, para remover produ


~
oes esquerda-re ursivas nas gram
ati as

! abS j SS j 
! Sb j A;
! Aa j a
! aZ j SbS;
! aZb j :

16. D^
e uma gram
ati a sem produ
~
oes esquerda-re ursivas para a linguagem

L fw 2 fa; bg = Na w
=

> Nb (w)g
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

112

Cap
tulo 4. Linguagens Livres de Contexto

17. Elimine as produ ~oes in


uteis na seguinte gramati a

S
A
B
C
D

! a j aA j B j
! aB j ;
! Aa;
! CD;
! dd j ddD:

C;

18. Elimine as -produ ~oes de

S
A
B

! AaB j aaB;
! aBa j  j B;
! bbA j :

19. Elimine as produ ~oes unitarias nas duas gramati as anteriores.


20. Elimine produ ~oes unitarias, -produ ~oes, produ ~oes in
uteis e produ ~oes esquerdare ursivas nas seguintes gramati as livres de ontexto:
(a) S

A
B
C
(b) S
A
B
C
D
( ) S
A
B
C

! Sa j aAB
! B j aa j 
! AbB j  j C
! aCCa j ABC
! ASAS j B
! aAa j 
! bB j C j Db
! aCb j ab
! Da j bD
! aA j aB j SaA
! B j aa j 
! bB j  j C
! aCa j ABC

21. Suponha que G e uma gramati a livre de ontexto, para a qual  2 L(G). Mostre
b , tal que
que se apli armos o teorema 4.5.10, obteremos uma nova gramati a, G
L(Gb ) = L(G) fg.
22. Converter as seguintes gramati as na forma normal de Chomsky
(a) S
(b) S

! aSb j ab
! aSbA j aA;
! abA j b:

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

113

4.7. Exer 
 ios

( ) S

A
B

! abAB;
! bAB j ;
! BAa j A j

:

23. Transformar as gramati as resultantes do exemplo anterior a forma normal de Greiba h.


24. Converter a seguinte gramati a na forma normal de Greiba h.

114

! aaS j

SS

aa:

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5
Aut^
omatos a Pilha

A des ri ~ao das linguagens livres de ontexto, por meio de gramati as livre de ontexto e
onveniente, omo se observa no uso de BNF, em linguagens de programa ~ao. Uma pergunta e se existe uma lasse de aut^omatos que possamos asso iar om as linguagens livres
de ontexto. Vimos, anteriormente, que os aut^omatos nitos tem memorias estritamente
nitas, n~ao podendo re onhe er todas as linguagens livre de ontextos. Intuitivamente,
entendemos que isso a onte e devido aos aut^omatos nitos possuirem memorias estritamente nitas, enquanto o re onhe imento de linguagens livre de ontexto podem requerer
o armazenamento de uma quantidade ilimitada de informa ~ao. Por exemplo, quando veri amos uma adeia da linguagem L = fanbn = n  0g, devemos he ar n~ao somente
que todos os a's pre ede o primeiro b, mas tambem que a quantidade de a's e a mesma
que a de b's, ou seja, pre isamos ontar. Como n e ilimitado, esta ontagem n~ao pode
ser feita om uma memoria nita. Queremos uma maquina que possa ontar sem limite.
Mas, omo podemos ver de exemplos omo fwwR = w 2  g, pre isamos mais que a
habilidade de ontar ilimitadamente: pre isamos da habilidade de armazenar e omparar
uma sequ^en ia de smbolos na ordem reversa. Isso sugere que tentemos uma pilha omo
me anismo de armazanamento, permitindo armazenamento ilimitado restrito a opera ~oes
omo uma pilha. Isto nos forne e uma lasse de maquinas hamadas aut^omatos a pilha
(apn ou ap).
5.1

Aut^
omato a Pilha N~
ao-Determin
sti o (apn)

Na gura 5.1, e apresentado uma representa ~ao esquemati a de um aut^omato a pilha.


Cada movimento da unidade de ontrole de um aut^omato a pilha l^e um smbolo da ta
de entrada, enquanto ao mesmo tempo tro a o onteudo da pilha atraves das opera ~oes
usuais na pilha. Cada movimento da unidade de ontrole e determinado pelo smbolo de
entrada orrente assim omo pelo smbolo no topo da pilha. O resultado do movimento e
um novo estado da unidade de ontrole e uma mudan a no topo da pilha.
115

5.1. Aut^omato a Pilha N~ao-Determinsti o (apn)


Fita de Entrada

Unidade de
Controle
Estado
Interno

Pilha

Saida

Figura 5.1: Representa ~ao esquemati a de um aut^omato a pilha.

De ni ~ao 5.1.1 Um aut^omato a pilha n~ao determinsti o (apn) e de nido pela
M = hQ; ; ; ; q0 ; z; F i, onde

setupla

 Q e um onjunto nito de estados interno da unidade de ontrole,


  e um onjunto nito de smbolos, hamado o alfabeto de entrada,
 e o onjunto nito de smbolos, hamado o alfabeto da pilha,
 q0 e o estado ini ial,
 z e o smbolo de in io da pilha,
 F  Q e o onjunto de estados nais,
 : Q  ( [ fg)  ! }f in(Q  ) e a fun ~ao de transi ~ao.
Uma apli a ~ao de tem a seguinte interpreta ~ao. O argumento de e o estado orrente
da unidade de ontrole, o smbolo de entrada orrente, e o smbolo orrente no topo da
pilha. O resultado e o onjunto dos pares (q; x), onde q e o proximo estado da unidade
de ontrole e x e a adeia posta no topo da pilha, no lugar do uni o smbolo que estava la
antes. Observe que o segundo argumento de pode ser , indi ando que o movimento n~ao
onsome um smbolo de entrada. Denominaremos tal movimento -transi ~ao. Observe,
tambem, que o e de nido de tal modo que ^ele pre isa de um smbolo na pilha. N~ao e
possvel nenhum movimento se a pilha estiver vazio. Note, ademais que podemos disminuir
a quantidade de smbolos na pilha se de nirmos para dar omo resultado o par (q; ).

Exemplo 5.1.2 Suponha que o onjunto de regras de transi ~ao de um apn ontem
(q1 ; a; x)

116

= f(q2 ; yz ); (q3 ; )g:


Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

Se em um determinado momento a unidade de ontrole esta no estado q1 , o smbolo


de entrada lido e a, e o smbolo sobre o topo da pilha e x, ent~ao uma de duas oisas pode
a onte er:
1. a unidade de ontrole vai para o estado q2 e a adeia yz substitui x no topo da pilha,
ou
2. a unidade de ontrole vai para o estado
pilha.
Exemplo 5.1.3

q3 ,

om o smbolo

removido do topo da

Considere o apn om

 Q = fq0 ; q1 ; q2 ; q3 g,


 = fa; bg,

= f0; 1g,

 z

= 0,

 F

= fq3 g e

:
(q0 ; a; 0) = f(q1 ; 10); (q3 ; )g;
(q0 ; ; 0) = f(q3 ; )g;
(q1 ; a; 1) = f(q1 ; 11)g;

(q1 ; b; 1) = f(q2 ; )g;


(q2 ; b; 1) = f(q2 ; )g;
(q2 ; ; 0) = f(q3 ; )g:

Que podemos a rmar sobre a a ~ao deste aut^omato?


Primeiro, observe que n~ao s~ao espe i adas transi ~oes para todas as ombina ~oes
possveis de entrada e smbolos da pilha. Por exemplo, n~ao existe nenhuma entrada
para (q0 ; b; 0). A interpreta ~ao deste fato e o mesmo usado para aut^omato nito n~aodeterminsti o: uma transi ~ao n~ao espe i ada vai para o onjunto vazio e representa uma
on gura ~ao de morte do apn.
As transi ~oes ru iais s~ao (q1 ; a; 1) = f(q1 ; 11)g que adi iona 1 a pilha quando e lido
um a, e (q2 ; b; 1) = f(q2 ; )g, o qual remove um 1 quando um b e en ontrado. Essas duas
etapas ontam o numero de a's e ompara om o numero de b's. A unidade de ontrole
esta no estado q1 ate ser en ontrado o 1o b quando ele entra no estado q2 . Isto assegura
que nenhum b pre ede o ultimo a. Apos analizar as transi ~oes restantes, veremos que o
apn terminara no estado nal q3 se e somente se a adeia de entrada esta na linguagem
L = fan bn = n  0g [ fag:

Como uma analogia om aut^omatos nitos, devemos dizer que o apn a eita a linguagem
a ima.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

117

5.1. Aut^
omato a Pilha N~
ao-Determin
sti o (apn)

Para melhor visualizar a fun ~ao de transi ~ao , sera mostrada omo uma tabela, onde
a primeira oluna e rotulada om os pares estado orrente-smbolo no topo da pilha, e a
primeira la om os smbolos de entrada junto om a entrada . Cada elemento (i; j ) da
matriz que n~ao esteja na primeira oluna (portanto, j > 1) nem na primeira la (portanto,
i > 1), representa a sada da fun ~
ao quando avaliada no estado orrente, smbolo do topo
da pilha (des ritos na posi ~ao (i; 1) da matriz) e para a entrada des rita na posi ~ao (1; j )
da matriz. Para simpli ar a nota ~ao, usaremos (qi ; ai ); (qj ; aj ); : : : ; (qk ; ak ) em vez de
f(qi ; ai ); (qj ; aj ); : : : ; (qk ; ak )g e n~ao es reveremos nada quando a sada for ;. Assim, por
exemplo, a fun ~ao de transi ~ao do exemplo anterior seria representada pela tabela

(q0 ; 0)
(q1 ; 1)
(q2 ; 1)
(q2 ; 0)

a
(q1 ; 10); (q3; )
(q1 ; 11)

(q2 ; )
(q2 ; )


(q3 ; )

(q3 ; )

Para simpli ar a dis uss~ao, introduziremos uma nota ~ao onveniente para des rever
as on gura ~oes su essivas de um apn durante o pro essamento de uma adeia. Os fatores
relevantes em qualquer momento apos um passo omputa ional do apn s~ao o estado orrente da unidade de ontrole, a parte n~ao lida da adeia de entrada, e o onteudo orrente
da pilha. Juntos esses elementos determinam ompletamente todas as maneiras possveis
no qual um apn pode pro eder. A tripla
(q; w; u);
onde q e o estado orrente da unidade de ontrole, w e a parte n~ao lida da adeia e u e o
onteudo da pilha ( om o smbolo mais a esquerda indi ando o topo da pilha) e hamado
uma des ri ~
ao instant^
anea do aut^
omato a pilha. Um movimento de uma des ri ~ao
instant^anea para outro sera denotado pelo smbolo `, portanto
(q1 ; aw; bu) ` (q2 ; w; yu)
e possvel se e somente se
(q2 ; y ) 2 (q1 ; a; b):
O movimento envolvendo um numero arbitrario de etapas sera denotado por ` e `+ ,
^este ultimo indi ando que, no mnimo, um movimento e feito. Quando varios aut^omatos
est~ao sob onsidera ~ao usaremos
`M para enfatizar que o movimento e feito pelo
aut^omato parti ular M .

118

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 5. Aut^omatos a Pilha


5.1.1

A Linguagem A eita por um Aut^


omato a Pilha

Assim omo os aut^omatos nitos re onhe em linguagens (regulares), ada aut^omato a


pilha re onhe e, tambem, uma linguagem.

De ni ~ao 5.1.4 Seja M = hQ; ; ; ; q0 ; z; F i um aut^omato a pilha n~ao determinsti o.


A linguagem a eita por M e o onjunto
L(M )

= fw 2  = (q0 ; w; z ) ` (qf ; ; u); para algum

qf

2F

2  g:

Em palavras, a linguagem a eita por M e o onjunto de todas as adeias sobre o


alfabeto  para as quais M , ome ando no estado ini ial q0 e om a pilha ontendo
somente o smbolo z , para num estado nal apos onsumir a adeia toda.

Exemplo 5.1.5 Construir uma apn para a linguagem

L = fanbn = n  0g:
Como no exemplo anterior, para ada a lido olo aremos um smbolo na pilha, de tal
modo que quando ome emos l^er os b's, retiremos ada um desses smbolos da pilha. Se ao
terminar de l^er a adeia estiver a pilha om o smbolo de in io da pilha (que e diferente
do olo ado quando l^e um a) ent~ao vamos para um estado nal. Logo, de namos o apn
M = hfq0 ; q1 ; q2 g; fa; bg; f0; 1g; ; q0 ; o; fq2 gi, onde 
e de nido pela seguinte tabela:
a

(q0 ; 0) (q0 ; 10)


(q2 ; )
(q0 ; 1) (q0 ; 11) (q1 ; )
(q1 ; 1)
(q1 ; )
(q1 ; 0)
(q2 ; )
Quando

pro essa a adeia

aabb,

faz os seguintes movimentos:

(q0 ; aabb; 0) ` (q0 ; abb; 10) ` (q0 ; bb; 110) ` (q1 ; b; 10) ` (q1 ; ; 0) ` (q2 ; ; )
e, portanto, a adeia e a eita. Claramente, este apn a eita a linguagem
L(M ) = L.

L,

isto e,

Exemplo 5.1.6 Construir um apn para a linguagem

L = fw 2 fa; bg = Na (w) = Nb(w)g:


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

119

5.1. Aut^
omato a Pilha N~
ao-Determin
sti o (apn)

Como anteriormente, a solu ~ao para este problema envolve ontar o numero de a's e
b's, o que 
e feito om uma pilha. N~ao pre isamos aqui nos preo upar om a ordem dos
a's e b's. Podemos inserir um smbolo de ontagem, digamos 0, na pilha se o a for lido,
e ent~ao tirar um smbolo da pilha quando o b for lido. A uni a di uldade om isto e
se existe um pre xo de w om mais b's que a's, n~ao a haremos um 0 para retirar. Para
isso deveremos usar um smbolo de ontagem negativa, digamos 1, para ontar os b's que
est~ao sendo lidos alem dos a's. Assim, quando vier novos a's retiramos estes 1's da pilha
ate ar novamente equiparada as quantidades. A solu ~ao ompleta e um apn
M

om

= hfq0 ; q1 g; fa; bg; f0; 1; z g; ; q0 ; z; fq1 gi;

de nido por

(q0 ; z )
(q0 ; 0)
(q0 ; 1)
Em pro essando a adeia

baab,

a
(q0 ; 0z )
(q0 ; 00)
(q0 ; )

b
(q0 ; 1z )
(q0 ; )
(q0 ; 11)


(q1 ; z )

o apn faz o seguinte movimento

(q0 ; baab; z ) ` (q0 ; aab; 1z ) ` (q0 ; ab; z ) ` (q0 ; b; 0z ) ` (q0 ; ; z ) ` (q1 ; ; z );


e portanto a adeia e a eita.
Exemplo 5.1.7

Construir um apn que a eite a linguagem

L = fwwR = w 2 fa; bg g;


Usamos o fato de que os smbolos s~ao re uperados na pilha na ordem reversa de sua
inser ~ao. Quando lemos a primeira parte da adeia, olo amos os smbolos onse utivos
na pilha. Para a segunda parte, omparamos o os smbolo de entrada orrente om o topo
da pilha, ontinuando enquanto os dois asarem. Como os smbolos s~ao re uperados da
pilha na ordem reversa que foram olo ados, um asamento ompleto se da se e somente
se a entrada e da forma wwR .
Uma aparente di uldade ao se usar esta sugest~ao e que n~ao sabemos o meio da adeia,
isto e, quando w termina e quando ome a wR . Mas, a natureza n~ao determinsti a do
aut^omato nos ajuda. O apn adivinha orretamente qual e o meio e muda de estado nesse
ponto. Uma solu ~ao para o problema e dado por
M

120

= hQ; ;

; ; q0 ; z; F i;

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

onde Q = fq0 ; q1 ; q2 g,  = fa; bg, = fa; b; z g, F = fq2 g. A fun ~ao de transi ~ao pode
ser visualizada omo tendo varias partes: um onjunto para olo ar w na pilha,
(q0 ; a; z ) = f(q0 ; az )g; (q0 ; b; a) = f(q0 ; ba)g;
(q0 ; b; z ) = f(q0 ; bz )g; (q0 ; a; b) = f(q0 ; ab)g;
(q0 ; a; a) = f(q0 ; aa)g; (q0 ; b; b) = f(q0 ; bb)g;

um onjunto para adivinhar o meio da adeia, onde o apn muda de estado de


(q0 ; ; a)

q0

para

q1 ,

= f(q1 ; a)g; (q0 ; ; b) = f(q1 ; b)g;

um onjunto para omparar wR om o onteudo da pilha,


(q1 ; a; a)

= f(q1 ; )g; (q1 ; b; b) = f(q1 ; )g;

e, nalmente,
(q1 ; ; z )

= f(q2 ; )g;

para re onhe er o asamento bem su edido.


Esta fun ~ao de transi a~o pode ser melhor visualizada na tabela

(q0 ; z )
(q0 ; a)
(q0 ; b)
(q1 ; a)
(q1 ; b)

(q0 ; az ) (q0 ; bz ) (q2 ; )


(q0 ; aa) (q0 ; ba) (q1 ; a)
(q0 ; ab) (q0 ; bb) (q1 ; b)
(q1 ; )
(q1 ; )

A sequ^en ia de movimentos que a eita

abba

e

(q0 ; abba; z ) ` (q0 ; bba; az ) ` (q0 ; ba; baz ) ` (q1 ; ba; baz ) ` (q1 ; a; az ) ` (q1 ; ; z ) ` (q2 ; ; ):
A alternativa n~ao determinsti a para lo alizar o meio da adeia e tomada no ter eiro
movimento. Naquele estagio, o apn tem a des ri ~ao instant^anea (q0 ; ba; baz ) e tem es olhas para o proximo movimento. Uma e usar (q0 ; b; b) = f(q0 ; bb)g e fazer o movimento

(q0 ; ba; baz ) ` (q0 ; a; bbaz ):


O segundo e o movimento que usamos, ou seja, usar (q0 ; ; b) = f(q1 ; b)g. Somente
este ultimo leva a a eita ~ao da entrada.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

121

5.2. Aut^
omatos a Pilha e Linguagens Livre de Contexto

5.2

Aut^
omatos a Pilha e Linguagens Livre de Contexto

Nos exemplos da se ~ao anterior, vimos que os aut^omatos a pilha existem para algumas
linguagens familiares livres de ontexto. Isto n~ao e oin id^en ia. Existe uma rela ~ao
geral entre as linguagens livres de ontexto e os aut^omatos a pilha n~ao-determinsti os.
Veremos que a toda linguagem livre de ontexto esta asso iado um apn que a a eita e,
inversamente, que toda linguagem a eita por um apn e livre de ontexto.
5.2.1

Linguagens Livre de Contexto para Aut^


omatos a Pilha

Primeiro, mostraremos que para toda linguagem livre de ontexto existe um apn que a
a eita. A ideia subja ente e onstruir um apn que possa, em algum sentido, efetuar uma
deriva ~ao mais a esquerda de qualquer adeia na linguagem. Para simpli ar um pou o o
argumento, assumiremos que a linguagem e gerada por uma gramati a na forma normal
de Greiba h.

O apn que vamos onstruir tera T omo alfabeto de entrada e V [ fz g omo alfabeto
da pilha, om z 62 V sendo o smbolo de in io da pilha. Representaremos a deriva ~ao
mantendo as variaveis na parte direita da forma senten ial omo a adeia que substituira
a variavel no topo da pilha, enquanto o terminal da parte esquerda e identi ado om o
smbolo de entrada que e lido. Apos o que, para simular a apli a ~ao de uma produ ~ao
A ! ax, devemos ter a vari
avel A no topo da pilha e o terminal a omo smbolo de
entrada. A variavel sobre a pilha e removida e tro ada pela adeia de variaveis x. O que
deve atingir 
e fa il de v^er. Antes de apresentar o argumento geral, veremos um exemplo
simples.
Exemplo 5.2.1

produ ~oes

Construir um apn que a eite a linguagem gerada pela gramati a om

! aSbb j

a:

Primeiro transformemos a gramati a a forma normal de Greiba h, tro ando as produ ~oes para
S
A
B

! aSA j
! bB;
! b:

a;

O aut^omato orrespondente tera tr^es estados, fq0 ; q1 ; q2 g, om estado ini ial q0 e estado
nal fq2 g. Primeiro, o smbolo de in io S e posto sobre a pilha por

122

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

(q0 ; ; z )

= f(q1 ; Sz )g:

A produ ~ao S ! aSA sera simulada no apn removendo S da pilha e tro ando om
SA enquanto l^
e a entrada a. Analogamente, a produ ~ao S ! a deve possibilitar o apn l^e
um a enquanto, simplesmente, remove S . Portanto, as duas produ ~oes s~ao representadas
no apn por
(q1 ; a; S )

= f(q1 ; SA); (q1 ; )g:

Analogamente, as outras produ ~oes forne em


(q1 ; b; A) =
(q1 ; b; B ) =

f(q1 ; B )g;
f(q1 ; )g:

O apare imento do smbolo de in io da pilha no topo da pilha sinaliza a ompleta ~ao
da deriva ~ao e o apn e posto no estado nal por
(q1 ; ; z )

= f(q2 ; z )g:

A onstru ~ao, nesse exemplo, pode ser adaptado para outros asos, levando para um
resultado geral.
Teorema 5.2.2

apn

tal que

Para qualquer linguagem livre de ontexto L, n~ao ontendo , existe um

L = L(M ):
~ o: Se
Demonstra
a

e uma linguagem livre de ontexto, livre de , existe uma


gramati a livre de ontexto para ela na forma normal de Greiba h. Seja G = hV; T; S; P i
tal gramati a. Construiremos ent~ao um apn que simulara as deriva ~oes mais a esquerda
nesta gramati a. Como foi sugerido, a simula ~ao sera feito tal que a parte n~ao pro essada da forma senten ial esta na pilha, enquanto o pre xo terminal de qualquer forma
senten ial asa om o orrespondente pre xo da adeia de entrada (o smbolo de entrada
orrente).
Espe i amente o apn sera
M

= hfq0 ; q1 ; q2 g; T; V

[ fzg; ; q0; z; fq2 gi;

onde z 62 V . Observe que o alfabeto de entrada de M e id^enti o ao onjunto de terminais


de G e que o alfabeto da pilha ontem o onjunto das variaveis da gramati a (mais o
smbolo de in io da pilha). A fun ~ao de transi ~ao in luira
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

123

5.2. Aut^
omatos a Pilha e Linguagens Livre de Contexto

(q0 ; ; z )

= f(q1 ; Sz )g

(5.1)

de modo que apos o primeiro movimento de M , a pilha ontem o smbolo de in io S da


deriva ~ao (o smbolo de in io z da pilha e uma mar a que nos permite dete tar o m da
deriva ~ao). Alem disso, o onjunto de regras de transi ~ao e tal que
(q1 ; u) 2 (q1 ; a; A);

(5.2)

sempre que A ! au esta em P . Isto e, l^e a entrada a e remove a variavel A do topo
da pilha, tro ando-a por u. Desse modo ela gera as transi ~oes que permite o apn simular
todas as deriva ~oes. Finalmente, temos
(q1 ; ; z )

para olo ar M no estado nal.


Para mostrar que
esquerda
S

a eita qualquer

= f(q2 ; z )g;

(5.3)

2 L(G), onsidere a deriva ~ao par ial mais a

=) a1 a2    an A1 A2    Am =) a1 a2    an B1    Bk A2    Am :

Se M simula esta deriva ~ao, ent~ao apos l^e a1 a2    an , a pilha deve onter A1 A2    Am .
Para tomar o proximo passo na deriva ~ao, G deve ter a produ ~ao
A1

mas a onstru ~ao e tal que

! bB1    Bk :

tem uma regra de transi ~ao na qual


(q1 ; B1    Bk ) 2 (q1 ; b; A1 );

e tal que a pilha agora ontem


se

B1

   Bk A2    Am , apos ter lido a1    an b.

Um argumento de indu ~ao simples sobre o numero de etapas na deriva ~ao mostra que
=) w, ent~ao

(q1 ; w; Sz ) ` (q1 ; ; z ):
Usando 5.1 e 5.3 temos
(q0 ; w; z ) ` (q1 ; w; Sz ) ` (q1 ; ; z ) ` (q2 ; ; z );
de modo tal que L(G)  L(M ).

124

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

Para provar que L(M )  L(G), seja w 2 L(M ). Por de ni ~ao
(q0 ; w; z ) ` (q2 ; ; u):
Mas existe somente uma maneira para ir de q0 para q1 e somente uma de q1 para q2 .
Portanto, devemos ter
(q1 ; w; Sz ) ` (q1 ; ; z ):
Agora, vamos es rever w = a1 a2    an . Ent~ao a primeira etapa em
(q1 ; a1 a2    an ; Sz ) ` (q1 ; ; z )

(5.4)

deve ser uma regra da forma ( 5.2) para obter


(q1 ; a1 a2    an ; Sz ) ` (q1 ; a2 a3    an ; u1 z ):
Mas, ent~ao, a gramati a tem uma regra da forma S

! a1 u1, tal que S =) a1u1:

Repetindo isto, es revendo u1 = Au2 , temos


(q1 ; a2    an ; Au2z ) ` (q1 ; a3    an ; u3 u2 z );
impli ando que A

! a2 u3 esta na gramati a e que


S =) a1 a2 u3 u2 :

Isto torna laro que em qualquer ponto o onteudo da pilha (ex luindo z ) e id^enti o a
parte n~ao asada da forma senten ial, de modo que ( 5.4) impli a

S =) a1 a2    an :
Em onsequ^en ia, L(M )  L(G), ompletando a prova.
Exemplo 5.2.3

Considere a gramati a

S
A
B
C

! aA;
! aABC j
! b;
! :

bB

a;

Uma vez que a gramati a ja est


a na forma normal de Greiba h, podemos usar as
onstru ~oes do teorema, a ima, imediatamente.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

125

5.3. Aut^
omatos a Pilha para Gramati as Livre de Contexto
Alem das regras
(q0 ; ; z )

= (q1 ; Sz )

e (q1 ; ; z ) = (q2 ; z ) ;

o apn tera as regras de transi ~ao.


(q1 ; a; S ) =
(q1 ; a; A) =
(q1 ; ; C ) =

f(q ; A)g;
f(q ; ABC ); (q ; )g;
f(q ; )g:
1

(q1 ; b; A) =
(q1 ; b; B ) =

f(q ; B)g;
f(q ; )g;
1

Ao pro essar aaab , M faz a seguinte sequ^en ia de movimentos

(q0 ; aaab ; z )
(q1 ; b ; BCz )

` (q ; aaab ; Sz) ` (q ; aab Az) ` (q ; ab ; ABCz) `


` (q ; ; Cz) ` (q ; ; z) ` (q ; ; z):
1

Isto orresponde a deriva ~ao


S

) aA =) aaABC =) aaaBC =) aaabC =) aaab :

5.3 Aut^
omatos a Pilha para Gramati as Livre de Contexto
A inversa do teorema 5.3.2 e tambem verdadeira. A onstru ~ao e reverter o pro esso
de onstru ~ao deste teorema, de modo que a gramati a simule os movimentos do apn.
Isto signi a que o onteudo da pilha deve estar re etida na parte das variaveis da forma
senten ial, enquanto a entrada pro essada e o pre xo terminal da forma senten ial. Para
fazer isso e pre iso um pou o de detalhe.
De modo a manter a dis uss~ao t~ao simples quanto possvel, assumiremos que o apn
em dis uss~ao satisfaz as seguintes ondi ~oes:
^ tem um uni o estado nal no qual o aut^omato so entra nele se e somente se a
1. Ele
pilha estiver vazia.
2. Todas as transi ~oes devem ter a forma (qi ; a; A) =

fC ; C ; : : : ; C g, onde
1

= (qj ; )

(5.5)

= (qj ; BC ):

(5.6)

Ci

ou
Ci

126

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

Isto e, ada movimento ou aumenta ou diminui o onteudo da pilha de um uni o


smbolo.
 possvel mosEssas restri ~oes podem pare er muito severas, o que n~ao e verdade. E
trar que para qualquer apn existe um equivalente, no sentido que re onhe em a mesma
linguagem, satisfazendo as ondi ~oes 1. e 2.
Construiremos, agora, a gramati a livre de ontexto para a linguagem a eita pelo apn.
Para ini iar, devemos ter uma forma senten ial para indi ar o onteudo da pilha, mas
observemos que a on gura ~ao de um apn tambem envolve um estado interno que deve
ser relembrado na forma senten ial. Para isso, devemos usar variaveis na gramati a da
forma (qi Aqj ), om a interpreta ~ao de que (qi Aqj ) =) w se e somente se o apn apaga A
da pilha, indo do estado qi para o qj , enquanto l^e a adeia w. \Apagar", aqui, signi a
que A e seus efeito apos (isto e, a adeia pela qual e tro ada) desapare e da ta, trazendo
o smbolo originalmente abaixo de A para o topo.
Usando esta interpreta ~ao, n~ao e dif il v^er que as produ ~oes da gramati a pre isa
orresponder a ada um desses dois tipos de transi ~oes. Como ( 5.5) envolve uma \remo ~ao
" imediata de A, a gramati a tera a orrespondente produ ~ao
(qi Aqj )

! a:

Produ ~oes do tipo ( 5.6) geram a produ ~ao


(qi Aql )

! a(qj Bqk )(qk Cql );

onde qk e ql tomam todos os valores possveis em Q. Isto e devido ao fato de que para
apagar A primeiro lemos a, tro amos A om BC e vamos para o estado qj . Logo, devemos
apagar B e depois C . Podemos fazer isto indo ate um estado qk e apagar B , ou seja,
(qj Bqk ) e depois indo ate um estado ql e apagar C , ou seja, (qk Cql ), para algum estado
qk ; ql 2 Q. Como n~
ao sabemos espe i amente qual, olo amos todos.
Na ultima etapa, pode pare er que adi ionamos em demasia, uma vez que podem
existir estados qk que n~ao podem ser al an ados por qj enquanto apaga B . Isto e verdade,
mas isto n~ao afeta a gramati a. Neste aso, a variavel resultante (qj Bqk ) e inutil e n~ao
afeta a linguagem a eita pela gramati a.
Finalmente, omo variavel de in io tomamos (q0 zqf ), onde
do apn.
Exemplo 5.3.1

qf

e o uni o estado nal

Considere o apn om transi


~
oes
(q0 ; a; z )
(q0 ; a; A)
(q0 ; b; A)
(q1 ; ; z )

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

= f(q0 ; Az )g;
= f(q0 ; A)g;
= f(q1 ; )g;
= f(q2 ; )g:

127

5.3. Aut^
omatos a Pilha para Gramati as Livre de Contexto
Usando q0 omo estado ini ial e q2 omo estado nal, o apn satisfaz a ondi ~ao 1,
a ima, mas n~ao 2. Para satisfazer esta ultima ondi ~ao, introduzimos um novo estado q3
e uma etapa intermediaria na qual primeiro removemos o A da pilha, ent~ao tro amos-la
no proximo movimento. O novo onjunto de transi ~oes e
(q0 ; a; z )
(q3 ; ; z )
(q0 ; a; A)
(q0 ; b; A)
(q1 ; ; z )

f(q0; Az)g;
= f(q0 ; Az )g;
= f(q3 ; )g;
= f(q1 ; )g;
= f(q2 ; )g:

As tr^es ultimas s~ao da forma ( 5.5) de modo que elas geram as produ ~oes orrespondentes.
(q0 Aq3 )

! a;

(q0 Aq1 )

! b;

(q1 zq2 )

! :

A partir das duas primeiras transi ~oes obtemos o seguinte onjunto de produ ~oes.
(q0 zq0 )

(q0 zq1 )

(q0 zq2 )

(q0 zq3 )

(q3 zq0 )

(q3 zq1 )

(q3 zq2 )

(q3 zq3 )

! a(q0 Aq0 )(q0zq0 ) j a(q0 Aq1 )(q1zq0 ) j a(q0 Aq2)(q2 zq0 ) j a(q0 Aq3)(q3 zq0 );
! a(q0 Aq0 )(q0zq1 ) j a(q0 Aq1 )(q1zq1 ) j a(q0 Aq2)(q2 zq1 ) j a(q0 Aq3)(q3 zq1 );
! a(q0 Aq0 )(q0zq2 ) j a(q0 Aq1 )(q1zq2 ) j a(q0 Aq2)(q2 zq2 ) j a(q0 Aq3)(q3 zq2 );
! a(q0 Aq0 )(q0zq3 ) j a(q0 Aq1 )(q1zq3 ) j a(q0 Aq2)(q2 zq3 ) j a(q0 Aq3)(q3 zq3 );
! (q0 Aq0)(q0 zq0 ) j (q0Aq1 )(q1 zq0 ) j (q0 Aq2 )(q2zq0 ) j (q0 Aq3 )(q3zq0 );
! (q0 Aq0)(q0 zq1 ) j (q0Aq1 )(q1 zq1 ) j (q0 Aq2 )(q2zq1 ) j (q0 Aq3 )(q3zq1 );
! (q0 Aq0)(q0 zq2 ) j (q0Aq1 )(q1 zq2 ) j (q0 Aq2 )(q2zq2 ) j (q0 Aq3 )(q3zq2 );
! (q0 Aq0)(q0 zq3 ) j (q0Aq1 )(q1 zq3 ) j (q0 Aq2 )(q2zq3 ) j (q0 Aq3 )(q3zq3 ):

A variavel de in io sera


on gura ~oes

(q0 zq2 ).

A adeia

(q0 ; aab; z )

A orrespondente deriva ~ao om


(q0 zq2 )

128

aab

e a eita pelo apn, om as su essivas

` (q0; ab; Az)


` (q3; b; z)
` (q0; b; Az)
` (q1; ; z)
` (q2; ; ):

e

) a(q0 Aq3 )(q3zq2 )


=) aa(q3 zq2 )
=) aa(q0 Aq1 )(q1 zq2 )
=) aab(q1 zq2 )
=) aab:
=

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

As etapas na prova do seguinte teorema ser~ao fa eis de entender se se observar a


orrespond^en ia entre as su essivas des ri ~oes instant^aneas do apn e as formas senten iais
na deriva ~ao. O primeiro qi , na variavel mais a esquerda de ada forma senten ial e o
estado orrente do apn, enquanto a sequ^en ia de smbolos do meio e a mesma do onteudo
da pilha.
Embora a onstru ~ao gere uma gramati a muito ompli ada, ela pode ser apli ada a
qualquer apn ujas regras de transi ~ao satisfazem as ondi ~oes dadas.
Teorema 5.3.2

ontexto.

Se

L = L(M ) para algum apn M , ent~ao L e uma linguagem livre de

Assuma que M = hQ; ; ; ; q0 ; z; fqf gi satisfaz as ondi ~oes (5.5) e


(5.6). Construiremos uma gramati a G = hV; ; (q0 zqf ); P i, onde V onsiste dos elementos da forma (qi qj ) e para ada
~ o:
Demonstra
a

(qj ; BC ) 2 (qi ; a; A)
in luimos em P a produ ~ao

! a(qj Bqk )(qk Cql );

(ql Aqj )

para ada qk ; ql 2 Q. Por outro lado, para ada


(qj ; ) 2 (qi ; a; A)
in luimos em P a produ ~ao
(qi Aqj )

! a:

Mostraremos que a gramati a assim obtida e tal que para ada


x 2  e u; v 2  ,

qi ; qj

2 Q, A 2

(qi ; uv; Ax) ` (qj ; v; x); se e somente se (qi Aqj ) =) u:


Pela maneira omo foram onstrudas as produ ~oes de G, podemos, fa ilmente, mostrar
isto. Basta apli ar uma indu ~ao no tamanho da sequ^en ia de movimentos, para obter a
impli a ~ao, e outra no tamanho da deriva ~ao, para obter a inversa. Assim, em parti ular,
podemos on luir que
(q0 ; w; z ) ` (qf ; ; ); se e somente se (q0 zqf ) =) w;
onde qf

2 F . Portanto, L(M ) = L(G).

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

129

5.4. Exer 
 ios

5.4

Exer 
 ios

1. Construa um apn que a eite a linguagem de todos os palndromos no alfabeto fa; bg.
Um palndromo e uma adeia que quando lida da esquerda a direita e a mesma que
quando lida da direita a esquerda.
2. Dado um afd M = hQ; ; ; q0; F i, des reva omo onstruir, diretamente, um apn
equivalente a ele.
3. Construa apn's que re onhe am as seguintes linguagens, sobre  = fa; bg
(a)
(b)
( )
(d)
(e)
(f)
(g)
(h)

L = fanb2n = n  0g
L = fanbm = n  m  3ng
L = fanbm a2n+1 j n; m  1g
L = fanbm j n = m + 1 ou m = n + 1g
L = fw 2 fa; bg j Na(w) e multiplo de 3g
L = fw 2  = Na (w) = Nb(w) + 1g
L = fw 2  = Na (w) = 2Nb(w)g
L = fw 2  = 2Na (w)  Nb(w)  3Na(w)g

4. Construa apn's que re onhe am as seguintes linguagens sobre  = fa; b; g


(a)
(b)
( )
(d)
(e)

L = fw wR = w 2 fa; bgg
L = fanbm n+m : n  0; m  0g
L = fanbn+m m = n  0; m  0g
L = fw 2  = Na (w) = Nb(w) = N (w)g
L = fw 2  = Na (w) + Nb(w) = N (w)g

5. Que linguagem e a eita pelo apn


M

= hfq0 ; q1; q2g; fa; bg; fA; B; zg; ; q0; z; fq2 gi; onde

(q0; a; z) = f(q1; A); (q2; )g;


(q1; b; A) = f(q1 ; B )g;
(q1; b; B ) = f(q1 ; B )g;
(q1; a; B ) = f(q2 ; )g ?

6. Que linguagem a eita o apn anterior se F = fq0; q1 ; q2g?


7. Mostre que o apn onstrudo no exemplo 5.2.1 a eita a adeia aaabbbb.
130

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 5. Aut^
omatos a Pilha

8. Prove que o apn onstru


do no exemplo

5.2.1 re onhe e a linguagem

L fan+1b2n = n  g:
=

9. Construa um apn que re onhe


a a linguagem gerada pela gram
ati a

S
A
B

! aABB j aAA;
! aBB j a;
! bBB j A:

10. Construa um apn que re onhe


a a linguagem gerada pela gram
ati a

S
A
11. No exemplo

! AA j
! SA j

a;
b:

5.3.1 mostre que as vari


aveis (q0 Bq0 ) e (q0 zq1 ) s~
ao in
uteis.

12. En ontre uma gram


ati a livre de ontexto que gere a linguagem a eito pelo apn

hfq0; q1; q2 g; fa; bg; fA; zg; ; q0; z; fq2gi;


(q0 ;

z)
(q0 ; A)
(q1 ; z )

a
Az )
(q1 ; )

(q0 ;

13. D^
e os detalhes da prova do teorema

b
(q0 ;

onde

AA)
(q2 ;

)

5.3.2.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
131

5.4. Exer 
 ios

132

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 6
Propriedades das Linguagens Livres
de Contexto

As linguagens livres de ontexto o upam uma posi


~
ao entral na hierarquia das linguagens
formais. Por um lado, as linguagens livres de ontexto in luem importantes, mas restritas,
fam
lias de linguagens omo as linguagens regulares. Por outro lado, existem fam
lias de
linguagens mais amplas das quais as linguagens livres de ontexto s~
ao asos espe iais. Para
estudar as rela
~
oes entre fam
lias de linguagens e exibir suas semelhan
as e diferen
as,
investigaremos as propriedades ara ter
sti as das v
arias fam
lias. Como anteriormente,
para as linguagens regulares, veremos as propriedades de fe ho para v
arias opera
~
oes,
algoritmos para determinar propriedades de membros da fam
lia, e resultados estruturais
omo os lemas da bomba.

6.1

Lemas da Bomba

O lema da bomba dado para linguagens regulares 


e uma ferramenta efetiva para mostrar
que ertas linguagens n~
ao s~
ao regulares. Existem lemas da bomba an
alogos para outras
lasses de linguagens.

Aqui, dis utiremos um desses lemas para linguagens livres de

ontexto, em geral.

6.1.1

O Lema da Bomba para Linguagens Livres de Contexto

Teorema 6.1.1 (Lema da Bomba)

Ent~ao existe algum inteiro positivo


ser de omposto omo

Seja L uma linguagem livre de ontexto in nita.


tal que para qualquer w 2 L, om j w j m, pode

w = uvxyz;

om
133

(6.1)

6.1. Lemas da Bomba

vxy

j

(6.2)

(6.3)

j j
vy

tal que uv xy z

L, para todo i = 0; 1; 2; : : :.

Este 
e onhe ido omo o lema da bomba

para linguagens livres de ontexto.

~ o:
Demonstra
a

V^
er [Lin90.

^
Este
lema 
e u
 til para mostrar que uma linguagem n~
ao perten e 
a fam
lia das linguagens
livre de ontexto. Seu uso 
e an
alogo aquele visto para linguagens regulares.

Exemplo 6.1.2 Mostre que a linguagem


Suponha que

L f
=

n n n

a b

= n

 g
0

n~
ao 
e livre de ontexto.


e livre de ontexto. Ent~
ao, pelo lema da bomba, existe m satisfazendo

as ondi
~
oes do teorema

m m m

6.1.1. A adeia a

est
a em

. Se es olhermos vxy omo

sendo uma adeia s


o de a's, ent~
ao, pelo lema da bomba, a adeia uv xy z , por exemplo,
deveria estar em

, mas omo

vy

j

n n n

1, ela laramente n~
ao 
e da forma a b , pois

tem mais a's que b's (e 's). Analogamente, se es olhermos as sub adeias v omposta s
o
de a's, digamos j a's, e y omposta s
o de b's, digamos k b's, ent~
ao a adeia bombeada

m+j

uv xy z , ter
a a forma a

est
a em

m+k

, e portanto, novamente geramos uma adeia que n~


ao

. De fato, a u
ni a maneira da es olha das sub adeias u; v; x; y e z impedir esse

fato 
e tomar vxy tal que vy tenha o mesmo n
umero de a's, b's e 's.
poss
vel pela restri
~
ao ( 6.2). Portanto,

Mas isso n~
ao 
e

n~
ao 
e livre de ontexto.

Exemplo 6.1.3 Considere a linguagem

L f
=

ww = w

2 f g g
a; b

Apesar desta linguagem pare er muito similar 


a linguagem livre de ontexto do exemplo
4.1.2, ela n~
ao 
e livre de ontexto.
Suponha que


e livre de ontexto. Ent~
ao, pelo lema da bomba, existe m satisfazendo

as ondi
~
oes do teorema 6.1.1. Considere a adeia a

m m

m m

. Uma das poss


veis es olha

de vxy pode ser


m

m
m
z }| { z }| { z }| { z }| {

 
` aa aa

a b

b a



u v x y

a b
z


a

Assim, se usarmos i = 0, obteremos a adeia

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
134

Cap
tulo 6. Propriedades das Linguagens Livres de Contexto

k j

m m

a b a

a qual n~
ao est
a em

; om k < m ou j < m;

(6.4)

. Claramente, se es olhermos outras sub adeias vxy satsifazendo as

restri
~
oes ( 6.2) e ( 6.3) poderemos obter adeias an
alogas 
a adeia ( 6.4).

Exemplo 6.1.4 Mostre que a linguagem


Dado m no teorema

L f
=

j k

a b

= j = k

n~
ao 
e livre de ontexto.

6.1.1, tomamos nossa adeia omo sendo a

m2 m
b

Claramente,

temos v
arias es olhas para u, v , x, y , z . A u
ni a que requer mais uidado 
e a seguinte:

m2

k1

   z }|  {   
` a a
a

{ z

}|

}|

k2

z }| {

a b

  


a a a
b

Bombeando as sub adeias v e y , i vezes, geraremos a nova adeia om m


a's e m + (i

teremos m

+ (i

1)k1

1)k2 b's. Se k1 = 0, ent~


ao, pela restri
~
ao ( 6.3), k2 > 1. Para o aso i = 0,
a's e m

k2 b's o qual obviamente n~


ao est
a em

Usando um ra io 
nio

an
alogo, obteremos que a es olha k2 = 0 e k1 > 1, tamb
em falha. Consideremos, portanto,

o aso k1 = 0 e k2 = 0 e tomemos i = 0. Como

(m

k2 )

(m

= m

2m + 1

< m

k1 ;

o resultado n~
ao est
a em

6.2

. Portanto,

1)

n~
ao 
e livre de ontexto.

Propriedades de Fe ho e Algoritmos de De is~


ao
para Linguagens Livres de Contexto

No ap
tulo 4, analizamos algumas propriedades de fe ho para ertas opera
~
oes e alguns
algoritmos de de is~
ao sobre as propriedades da fam
lia de linguagens regulares.
quest~
oes, eram fa ilmente provadas.

Ambas

No entanto, as mesmas quest~


oes para linguagens

livres de ontexto s~
ao ligeiramente mais dif
 eis de se responder. Primeiro, algumas propriedades de fe ho que s~
ao satisfeitas por linguagens regulares n~
ao o s~
ao por linguagens
livres de ontexto. Segundo, muitas quest~
oes intuitivamente simples para linguagens regulares, n~
ao podem ser respondidas para livres de ontexto. Nesta se
~
ao, veremos somente
alguns dos resultados mais importantes.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
135

6.2. Propriedades de Fe ho e Algoritmos de De is~


ao para Linguagens Livres
de Contexto

6.2.1

Fe ho de Linguagens Livres de Contexto

Teorema 6.2.1 A fam


lia de linguagens livres de ontexto 
e fe hada sobre uni~
ao, on a-

tena
~
ao e fe ho estrela ( ).

~ o:
Demonstra
a

Exer 
 io.

Teorema 6.2.2 A fam


lia de linguagens livres de ontexto n~
ao 
e fe hada sobre interse
a
~o
e omplementa
~
ao.

~ o:
Demonstra
a

Considere as linguagens

L1

fan bn m

= n

 0;

 0g

fan bm m

= n

 0;

 0g:

L2
Claramente

L1

L2

s~
ao livres de ontexto.

Mas, omo vimos no exemplo

6.1.2, a

linguagem

L1 \ L2

fan bn n

= n

 0g;

n~
ao 
e livre de ontexto. Logo, as linguagens livres de ontexto n~
ao s~
ao fe hadas sobre a
interse
~
ao.
Por outro lado, seja a identidade de onjuntos

L1 \ L2

L1 [ L2 :

(6.5)

Se as linguagens livres de ontexto fossem fe hadas sobre a omplementa


~
ao, ent~
ao,
omo pelo teorema anterior elas s~
ao fe hadas sobre a uni~
ao, a linguagem em (6.5) tamb
em
seria livre de ontexto, o qual ontradiz o resultado anterior. Consequentemente, a fam
lia
das linguagens livres de ontexto n~
ao 
e fe hada sobre a omplementa
~
ao.

6.2.2

Algumas Propriedades De id


veis de Linguagens Livre de
Contexto

No ap
tulo 4 j
a foi visto a exist^
en ia de um algoritmo de pertin^
en ia para linguagens
livres de ontexto. Isto 
e uma ara ter
sti a essen ial de qualquer fam
lia de linguagens
u
 til na pr
ati a. Outras propriedades simples de linguagens livres de ontexto podem ser
determinadas. Para os prop
ositos desta dis uss~
ao, assumiremos que a linguagem 
e des rita
pela sua gram
ati a.

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
136

Cap
tulo 6. Propriedades das Linguagens Livres de Contexto

Seja G = V; T; S; P uma gramati a livre de ontexto. Ent~ao existe um


algoritmo para de idir quando L(G), for vazio ou n~ao.

Teorema 6.2.3

~ o: Por simpli idade assuma que 


Demonstra
a

62

L(G). Use o algoritmo para remover


smbolos e produ ~oes inuteis. Se S for inutil, ent~ao L(G) e vazio, sen~ao L(G) ontem ao
menos um elemento.

Seja G = V; T; S; P uma gramati a livre de ontexto. Ent~ao existe um


algoritmo para de idir quando L(G), for in nito ou n~ao.

Teorema 6.2.4

~ o: Assuma que P n~ao ontem nenhuma -produ ~ao, nenhuma produ ~ao
Demonstra
a

unitaria e nenhum smbolo inutil. Se existe na gramati a uma variavel se repetindo,


A V , isto e, uma variavel tal que

)
ent~ao, omo A n~ao e inutil, deve existir w 2 T tal que
S =) uAv =) uxAyv =) w;
Logo, u =) x , x =) x , A =) x , y =) x e v =) x
A = xAy;


s~ao tais que x1 x2 x3 x4 x5 = w. Portanto, para todo n = 1; 2; : : :

om x1 ; x2 ; x3 ; x4 ; x5

2T

S = uAv = uxn Ay n v = uxn zy n v = x1 xn2 x3 xn4 x5


e portanto L(G) seria in nita.
Se nenhuma variavel pode ser repetida, ent~ao o omprimento de qualquer deriva ~ao
n~ao ex ede V . Em ujo aso L(G) e nita.

j j

Assim, para obter um algoritmo para determinar quando L(G) e in nita, somente
pre isamos determinar quando a gramati a tem uma variavel repetindo. Isto pode ser
onseguido, simplesmente, desenhando o grafo de depend^en ia das variaveis. Se existe
um  lo, ent~ao a gramati a tem uma variavel se repetindo, pois n~ao temos variaveis
inuteis, e portanto sempre podemos hegar a ela desde S .

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

137

6.3. Exer 
 ios

6.3

Exer 
 ios

1. Mostre que as seguintes linguagens, sobre o alfabeto fag, n~ao s~ao livres de ontexto
(a)
(b)
( )

L = fan = n e um numero primog


L = fan = n  0g
L = fan! = n  0g
2

2. Mostre que as seguintes linguagens, sobre o alfabeto fa; bg, n~ao s~ao livres de ontexto
(a)
(b)
( )

L = fam bn = n = m2 g
L = fam bn = m  n2g
L = fam bn = m  (n

1)3 g

3. Mostre que as seguintes linguagens, sobre o alfabeto fa; b; g, n~ao s~ao livres de
ontexto
(a)
(b)
( )
(d)

L = fak bm n = n = kmg
L = fak bm n = k < m; k  m  ng
L = fak bm n = m > k; n > kg
L = fw = Na(w) < Nb(w) < N (w)g

4. Determine quais das seguintes linguagens, sobre o alfabeto fa; bg, s~ao livres de
ontexto e quais n~ao
(a)
(b)
( )
(d)
(e)

L = fanwwRan = n  0; w 2 fa; bgg


L = fam bnam bn = m  0; n  0g
L = fam bnan bm = m  0; n  0g
L = fam bnaj bk = m + n  j + kg
L = fam bnaj bk = m  j; n  kg

5. Mostre que a famlia das linguagens livres de ontexto e fe hada sobre homomor smo.
6. Mostre que a famlia das linguagens livres de ontexto n~ao e fe hada sobre diferen a
de onjuntos.
7. Seja L(G) uma linguagem gerada pela gramati a livre de ontexto G. D^e um algoritmo para determinar quando  2 L(G) ou n~ao.
8. Mostre que existe um algoritmo que determina quando a linguagem gerada por
alguma gramati a livre de ontexto ontem qualquer palavra de omprimento menor
que algum numero n.

138

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7

M
aquinas de Turing

Dentre as ideias dis utidas anteriormente se desta am os on eitos de linguagens regulares


e livres de ontexto, assim omo sua asso ia ~ao om re onhe edores de estados nitos e
aut^omatos a pilhas, respe tivamente. Observamos que a famlia das linguagens regulares
forma um sub onjunto proprio das linguagens livres de ontexto e por isso os aut^omatos
a pilha s~ao, em algum sentido, mais poderosos do que os aut^omatos nitos. Vimos,
tambem que as linguagens livres de ontexto, embora fundamental para estudar linguagens
de programa ~ao s~ao de es opo limitado. Isto porque ertas linguagens simples, omo
L = fanbn n : n  0g e fww = w 2 fa; bgg, n~ao s~ao livres de ontexto. Da pro urarmos
de nir novas lasses de linguagens que onsiderem esses asos. Para isso vamos retornar
ao on eito de um aut^omato. Se ompararmos os aut^omatos nitos om os aut^omatos a
pilha observamos que a natureza da memoria temporaria faz a diferen a entre eles. Um
 razoavel esperar que
aut^omato a pilha sem memoria temporaria e um aut^omato nito. E
existam famlias de linguagens mais poderosas se dermos mais exibilidade de memoria
ao aut^omato?. Por exemplo, o que a onte eria se usassemos duas pilhas, tr^es pilhas,
uma la ou algum outro dispositivo de memoria?. A ada novo dispositivo de memoria
orresponde de nir uma nova espe ie de aut^omato e atraves dele uma nova famlia de
linguagens? Esta abordagem sus ita uma grande quantidade de quest~oes, muitas das
 mais util olo ar quest~oes mais ambi iosas e onsiderar
quais n~ao muito interessantes. E
ate onde iria o on eito de aut^omato. O que podemos dizer sobre o aut^omato mais
poderoso e os limites da omputa ~ao? Isto leva ao on eito fundamental de m
aquina de
Turing e por seu turno, a uma de ni ~ao pre isa da ideia de uma omputa ~ao me ^ani a
e algortmi a.
Come aremos om a de ni ~ao formal de uma maquina de Turing e ent~ao pro uraremos
a intui ~ao fazendo alguns programas simples. Apos, argumentaremos que, embora rudimentar, o on eito e bastante abrangente para obrir pro essos muito mais omplexos. A
dis uss~ao ulmina na tese de Turing, que assegura que qualquer pro esso omputa ional,
omo aqueles efetuados pelos omputadores atuais, pode ser efetuado por uma maquina
de Turing.
139

7.1. A Maquina de Turing Padr~ao

Cabecote de LeituraEscrita

Unidade
Estado

de

Interno

Controle

Figura 7.1: Representa ~ao esquemati a de uma maquina de Turing

7.1 A Maquina de Turing Padr~ao


Embora seja possvel imaginar uma grande variedade de aut^omatos om dispositivos de
armazenamento omplexos e so sti ados, a memoria de uma maquina de Turing e bastante
simples. Ela pode ser visualizada omo um vetor unidimensional de elulas, ada uma das
quais pode manter um uni o smbolo. Este vetor se estende inde nidamente em ambas
as dire ~oes e, portanto, e apaz de manter uma quantidade ilimitada de informa ~oes.
A informa ~ao pode ser lida e tro ada em qualquer ordem. Chamaremos tal dispositivo
de armazenamento uma ta, porque ela e analoga as tas magneti as, tradi ionalmente,
usadas nos omputadores atuais.

7.1.1 De ni ~ao de Maquina de Turing


Uma maquina de Turing e um aut^omato uja memoria temporaria e uma ta. Esta ta
e dividida em elulas, ada uma das quais e apaz de manter um smbolo. Asso iado a
ta existe um abe ote de leitura-es rita que pode se mover uma elula para a direita ou
para a esquerda da ta, podendo l^er e es rever um uni o smbolo em ada movimento.

De ni ~ao 7.1.1 Uma maquina de Turing M e de nida por M = hQ; ;

onde

 Q e


 e um onjunto nito de smbolos, hamado alfabeto de entrada,


e um onjunto nito de smbolos, hamado alfabeto da ta,

e uma fun ~ao de transi ~ao,

140

2; F i,

um onjunto nito de estados internos,

; ; q0 ;

2 2 e um smbolo espe ial, hamado bran o,


Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

b c

b c

(a)

(b)

Figura 7.2: A situa ~ao (a) antes do movimento e (b) apos.

 q0 2 Q e o estado ini ial e


 F  Q e o onjunto de estados nais.
Na de ni ~ao, assumiremos que  
f2g, isto e, que o alfabeto de entrada, n~ao
in lui o bran o. O bran o e tirado dos smbolos de entrada por raz~oes que ar~ao laras
a seguir. A fun ~ao de transi ~ao e de nida omo:

:Q

! Q   fE; Dg:

Em geral, e uma fun ~ao par ial sobre Q  , sua interpreta ~ao nos da o prin pio
pelo qual uma maquina de Turing opera. Os argumentos de s~ao o estado orrente da
unidade de ontrole e o smbolo orrente da ta sendo lido. O smbolo de movimento
indi a se o abe ote de es rita-leitura move-se para a esquerda (E) ou para a direita (D)
uma elula apos o novo smbolo ter sido es rito na ta.
Exemplo 7.1.2

transi a~o

A gura 7.2 mostra a situa ~ao antes e apos o movimento ausado pela
(q0 ; a)

= (q1 ; d; D)

Podemos pensar uma maquina de Turing omo um omputador muito simples. ^ele
tem uma unidade de pro essamento, que tem uma memoria nita, e na sua ta, ^ele tem
uma memoria se undaria om apa idade ilimitada. As instru ~oes que tal omputador
pode efetuar s~ao muito limitadas: ele pode per eber um smbolo na sua ta e usa-lo omo
resultado para de idir o que fazer no proximo passo. As uni as a ~oes que a maquina pode
efetuar s~ao: rees rever o smbolo orrente, tro ar o estado do ontrole e mover o abe ote
uma elula para a direita ou esquerda. Este pequeno onjunto de instru ~oes pode pare er
inadequado para efetuar tarefas ompli adas, porem isso n~ao e verdade. As maquinas de
Turing s~ao, em prin pio, muito poderosas. A fun ~ao de transi ~ao, , de ne omo esse
omputador pode atuar, por isso hamamos essa fun ~ao de \programa" da maquina.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

141

7.1. A Maquina de Turing Padr~ao


a

Figura 7.3: Parte da exe u ~ao de uma maquina de Turing.


Como sempre, o aut^omato ome a num dado estado ini ial om alguma informa ~ao na
ta ( ada elula ini ialmente ontem ou um smbolo de entrada em  ou o smbolo espe ial
2). Ent~ao, ele exe uta uma sequ^en ia de etapas ontroladas pela fun ~ao de transi ~ao
. Durante esse pro esso, o onte
udo de qualquer elula na ta pode ser examinado e
alterado em qualquer momento. Mais edo ou mais tarde, o pro esso todo pode parar.
Uma maquina de Turing para de omputar se atinge uma on gura ~ao para a qual
n~ao esta de nida. Isto e possvel porque e uma fun ~ao par ial. De fato, assumiremos
que so existe um uni o estado nal para o qual n~ao s~ao de nidas transi ~oes. Portanto, a
maquina de Turing parara sempre que ela entrar num estado nal.
Exemplo 7.1.3 Considere a maquina de Turing de nida por
 Q = fq0 ; q1 g,


 = fa; bg,

= fa; b; 2g,

 F

= fq1 g e

 (q0 ; a) = (q0 ; b; D ), (q0 ; b) = (q0 ; b; D ), (q0 ; 2) = (q1 ; 2; E ).

Se esta maquina de Turing ome a om o smbolo \a", sob o abe ote de leitura-es rita,
a regra de transi a~o apli avel e (q0 ; a) = (q0 ; b; D). Portanto, o abe ote de leitura-es rita
mudara o \a" pelo \b", e ent~ao se movera para a direita na ta. A maquina permane era
no estado q0 . Qualquer \a" subsequente tambem sera tro ado, mas os b's n~ao ser~ao
modi ados. Quando a maquina en ontrar o primeiro bran o, ela se movera uma elula
para a esquerda, e ent~ao para no estado nal q1 .
A gura 7.3 mostra varios estagios do pro esso para uma on gura ~ao ini ial simples.

142

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

Exemplo 7.1.4

De na

por

Tome

Q,

, , omo no exemplo anterior, mas om F , agora, vazio.

= (q1 ; a; D), (q0 ; b) = (q1 ; b; D), (q0 ; 2) = (q1 ; 2; D),


(q1 ; a) = (q0 ; a; E ), (q1 ; b) = (q0 ; b; E ), (q1 ; 2) = (q0 ; 2; E ).

(q0 ; a)

Para v^er o que a onte e aqui, podemos onsiderar um aso tpi o. Suponha que a ta ini ialmente ontem ab   , om o abe ote de leitura-es rita apontando para \a". A
maquina l^e o \a", mas n~ao o altera. Seu proximo estado e q1 e o abe ote se move para
^ smbolo e lido e deixado tambem
a direita, de modo que ^ele, agora, aponta para \b". Este
inalterado. A maquina volta para o estado q0 e o abe ote se move para a esquerda. Estamos, agora, exatamente na situa ~ao ( on gura ~ao) original e a sequ^en ia de movimentos
ome a novamente. E laro que a maquina, qualquer que seja a informa ~ao ini ial na
ta, exe utara para sempre, om o abe ote se movendo para a direita e para a esquerda,
alternadamente, mas n~ao realizando qualquer modi a ~ao na ta. Este e um exemplo de
uma maquina que n~ao para, em analogia om a terminologia, em programa ~ao, dizemos
que a maquina de Turing esta num \la o in nito".

Como podemos dar de ni ~oes diferentes de uma maquina de Turing e bom resumir
as prin ipais ara tersti as do nosso modelo, o qual sera hamado maquina de Turing
padr~ao:
1. A maquina de Turing tem uma ta que e ilimitada em ambas as dire ~oes, permitindo
qualquer numero de movimentos para a direita ou para a esquerda.
2. A maquina e determinsti a no sentido de que de ne, no maximo, um movimento
para ada on gura ~ao.
3. N~ao existe ta de entrada espe ial. Assumimos que no in io a ta tem um onteudo
espe ial. Alguns destes podem ser onsiderados entradas. Analogamente, n~ao existe
nenhum dispositivo de sada. Sempre que a maquina para, algum ou todo o onteudo
da ta pode ser visto omo sada.
Para exibir as on gura ~oes de uma maquina de Turing usamos a ideia de uma des ri ~ao instant^anea. Qualquer on gura ~ao e ompletamente determinado pelo estado orrente da unidade de ontrole, o onteudo da ta, e a posi ~ao do abe ote de leitura-es rita.
Usaremos a nota ~ao
a1 a2    ak 1 qak ak+1    an

para a des ri ~ao instant^anea de uma maquina no estado q , om o onteudo da ta omo
o da gura 7.4
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

143

7.1. A Maquina de Turing Padr~ao


a1 a

a k-1 a k ak+1

Figura 7.4: Con gura ~ao arbitraria de uma maquina de Turing


Os smbolos a1 ;    ; an onstituem o onteudo da ta, enquanto q de ne o estado da
unidade de ontrole. Esta onven ~ao e es olhida de tal modo que a posi ~ao do abe ote
esta sobre a elula ontendo o smbolo imediatamente seguindo q .
A des ri ~ao instant^anea nos da somente uma quantidade nita de informa ~oes para a
direita e esquerda do abe ote. A parte n~ao espe i ada da ta e assumida onter somente
bran os. Normalmente tais bran os s~ao irrelevantes e, n~ao s~ao mostrados expli itamente,
na des ri ~ao instant^anea. Se a posi ~ao do bran o e relevante para a dis uss~ao ^ele apare era
na des ri ~ao instant^anea. Por exemplo, a des ri ~ao instant^anea q 2w indi a que o abe ote
esta na elula imediatamente a esquerda do primeiro smbolo de w e que esta elula ontem
um bran o.

Exemplo 7.1.5 O desenho da gura 7.3 orresponde a sequ^en ia de des ri ~oes instant^aneas q0 aa, bq0 a, bbq0 2 e bq1 b.
Um movimento de uma on gura ~ao a outra sera denotado por `. Portanto, se
(q1 ; )

= (q2 ; e; D);

um movimento possvel e
abq1 d

abeq2 d:

Os smbolos ` e `+ tem os signi ados usuais de um numero arbitrario de movimentos.


Subes ritos `M s~ao usados em argumentos para distinguir entre varias maquinas.

Exemplo 7.1.6 A a a~o da maquina de Turing na gura 7.3 pode ser representada por
q0 aa

bq0 a

bbq0

bq1 b

ou
q0 bb ` bq1 b:

144

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 7. Maquinas de Turing


A seguir resumiremos de um modo formal todas as observa ~oes feitas anteriormente.

De ni ~ao 7.1.7 Seja M = hQ; ;


adeia a1 : : : ak
movimento

1 qak    an ,

om

ai

; ; q0 ; ; F i uma m
aquina de
e q 2 Q e uma des ri ~ao

a1    ak 1 q1 ak ak+1 : : : an

Turing. Ent~ao qualquer


instant^anea de M . Um

a1    ak 1 bq2 ak+1    an

e possvel se e somente se
(q1 ; ak )

= (q2 ; b; D):

Um movimento
a1 : : : ak 1 q1 ak ak+1 : : : an

a1 : : : ak 2 q2 ak 1 bak+1 : : : an

e possvel se e somente se
(q1 ; ak )

= (q2 ; b; E ):

Uma on gura ~ao y1 qp ay2 e uma on gura ~


ao de parada, denotado por, y1 qp ay2 `,
se (qp ; a) n~ao e de nido. Assim, uma maquina de Turing M p
ara para a on gura ~ao
ini ial x1 qi x2 se
x1 qi x2 ` y1 qj ay2

para algum qj 2 Q e a 2 , para o qual (qj ; a) n~ao e de nido. A sequ^en ia de on gura ~oes levando a uma on gura ~ao de parada sera hamada de omputa ~
ao.

O exemplo 7.1.4 mostra a possibilidade de que uma maquina de Turing pode nun a
parar, permane endo num la o sem m do qual ela n~ao pode es apar. Esta situa ~ao desempenha um papel fundamental na des ri ~ao de uma maquina de Turing, representemo-la
por
x1 qx2 `

indi ando que, ini iando da on gura ~ao ini ial x1 qx2 a maquina nun a para.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

145

7.1. A Maquina de Turing Padr~ao

7.1.2

Maquinas de Turing omo Re onhe edoras de Linguagens

As maquinas de Turing podem ser vistas omo re onhe edoras no seguinte sentido. Uma
adeia w e es rita sobre a ta, om bran os preen hendo as por ~oes n~ao usadas. A maquina
ome a no estado ini ial q0 , om a posi ~ao do abe ote no smbolo mais a esquerda de
w . Se ap
os uma sequ^en ia de movimentos, a maquina de Turing entra num estado nal
e para, ent~ao w e onsiderada re onhe ida pela maquina de Turing. Lembre, que por
onven ~ao, quando uma exe u ~ao de uma maquina de Turing atinge um estado nal, ela
para.

De ni ~ao 7.1.8 Seja M = hQ; ;


guagem re onhe ida por M e
L(M )

; ; q0 ;

2; F i uma maquina de Turing.

= fw 2 + = q0 w ` x1 qf x2 para algum qf 2 F; x1 ; x2 2

Ent~ao a lin

Esta de ni ~ao indi a que a entrada w e es rita na ta om bran os em ambos os lados.
A raz~ao para ex luir bran os da entrada se torna laro agora: Ela assegura-nos que todas
as entradas est~ao restritas a uma regi~ao bem de nida da ta, separadas por bran os a
esquerda e a direita. Sem essa onven ~ao, a maquina n~ao poderia limitar a regi~ao na qual
ela deveria olhar para a entrada. N~ao importa quantos bran os ela veja, ela nun a poderia
estar segura de que n~ao houvesse alguma entrada n~ao bran a em algum outro lugar da
ta.
A de ni ~ao 7.1.8 nos diz o que deve a onte er quando um w 2 L(M ). Ela n~ao diz
nada sobre a sada para qualquer outra entrada. Quando w 62 L(M ), uma de duas oisas
pode a onte er: a maquina pode parar num estado n~ao nal ou ela pode entrar num la o
in nito e nun a parar. Qualquer adeia para qual M n~ao para, por de ni ~ao n~ao esta em
L(M ).

Exemplo 7.1.9 Para  = f0; 1g projetar uma maquina de Turing que re onhe e a linguagem denotada pela express~ao regular 0 .
Este e um exer  io fa il de programa ~ao em maquinas de Turing. Come ando no lado
esquerdo da entrada, lemos ada smbolo e he amos se ele e um 0. Se f^or o aso, ontinuamos movendo para a direita. Se atingirmos um bran o sem en ontrar nada alem de 0,
terminamos e re onhe emos a adeia. Se a adeia ontem um 1 em algum lugar, a adeia
n~ao esta em L(0 ), e paramos num estado n~ao nal. A maquina deve ter dois estados
Q = fq0 ; q1 g e um estado nal F = fq1 g. A fun
~ao de transi ~ao pode ser espe i ada por
(q0 ; 0)

= (q0 ; 0; D); (q0 ; 2) = (q1 ; 2; E ):

Toda vez que 0 apare e sob o abe ote ^este se movera para a direita. Se em qualquer
momento 1 e lido, a maquina parara em um estado n~ao nal q0 , desde que (q0 ; 1) n~ao
esteja de nida.

146

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

O re onhe imento de uma linguagem mais ompli ada, em geral, e dif il. Como
maquinas de Turing tem um onjunto de instru ~oes primitivas, as omputa ~oes que podemos programar numa linguagem de programa ~ao de nvel mais alto e, em geral, di ultoso
numa maquina de Turing. Mesmo assim, e possvel e o on eito e fa il de entender, omo
o proximo exemplo mostra.
Para  = fa; bg, projetar uma maquina de Turing que re onhe e a
linguagem L = fan bn = n  1g.

Exemplo 7.1.10

Intuitivamente, resolvemos o problema do seguinte modo. Come amos no \a" mais


a esquerda, he amos-lo tro ando \a" por algum smbolo, digamos x. Ent~ao movemos o
abe ote para a direita ate en ontrar o \b" mais a esquerda, que por seu turno e he ado e
tro ado por um smbolo, digamos y . Apos isso, nos movemos para a esquerda novamente
ate o \a" mais a esquerda e o tro amos por x, ent~ao nos movemos ate o \b" mais a
direita e o tro amos por y , e assim por diante. Indo para tras e para frente desta maneira,
asamos ada \a" om o \b" orrespondente. Se apos algum tempo nenhum \a" ou \b"
restar, ent~ao a adeia deve estar em L.
Desse modo a maquina sera

= hQ; ;

; q0 ;

2; F i, onde

 Q = fq0 ; q1 ; q2 ; q3 ; q4 g


 = fa; bg

= fa; b; x; y; 2g

 F

= fq4 g

As transi ~oes podem ser separadas em varias partes. O onjunto


(q0 ; a)

= (q1 ; x; D), (q1 ; a) = (q1 ; a; D),


(q1 ; y ) = (q1 ; y; D ), (q1 ; b) = (q2 ; y; E )

tro a o \a" mais a esquerda por x, e ent~ao move o abe ote para a direita ate en ontrar
o primeiro \b", tro ando-o por y . quando o y for es rito a maquina entra no estado q2 ,
indi ando que um \a" foi asado om um \b".
O proximo onjunto de transi ~oes reverte a dire ~ao ate um x ser en ontrado olo ando
o abe ote no \a" mais a esquerda, retornando o ontrole no estado q0 , isto e, voltamos
a pro eder om o asamento do \a" mais a esquerda om o \b" mais a esquerda, de nido
pelo primeiro grupo de transi ~oes. Observe que n~ao e esperado en ontrar qualquer \b" no
aminho de volta.
(q2 ; y )

= (q2 ; y; E ) , (q2 ; a) = (q2 ; a; E ) , (q2 ; x) = (q2 ; x; D).

Apos um passo nesta parte da omputa ~ao, a maquina tera efetuado uma omputa a~o
par ial.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

147

7.1. A Maquina de Turing Padr~ao


q0 aa    abb    b ` xq0 a    ayb    b

de modo que um uni o \a" foi asado om um \b". Apos dois passos, teremos ompletado
a omputa ~ao par ial
q0 aa    abb    b ` xxq0    ayy    b;

e assim por diante, indi ando que o pro esso de asamento esta sendo omo o esperado.

Quando a entrada e a adeia an bn , a rees rita ontinua desta maneira, parando somente quando n~ao houver mais a's nem b's para serem asados. Na pro ura do \a" mais
a esquerda, o abe ote vai para a esquerda no estado q2 ate a har o primeiro x, reverte a
dire ~ao esperando en ontrar um \a". Mas, agora, em vez de en ontrar um a ^ele a hara
um y . Para terminar, e feito uma revis~ao nal para v^er se tambem todos os b's foram
tro ados (para dete tar entradas onde haja mais b's que a's). Isto pode ser espe i ado
por
(q0 ; y ) = (q3 ; y; D ) , (q3 ; y ) = (q3 ; y; D )

(q3 ;

2) = (q4; 2; E ):

Se w 62 L, a omputa ~ao parara num estado n~ao nal. Por exemplo, se w = an bm ,


om n > m, a maquina mais edo ou mais tarde en ontrara um bran o no estado q1 . Ela
parara porque n~ao esta espe i ada nenhuma transi ~ao para esse aso.
A entrada
q0 aabb
xxq2 yy

aabb

xq1 abb

nos da a seguinte su ess~ao de des ri ~oes instant^aneas


`

xq2 xyy

xaq1 bb

xxq0 yy

xq2 ayb
`

xxyq3 y

q2 xayb
`

xxyyq3

xq0 ayb

xxq1 yb

xxyq1 b

xxyq4 y:

Neste ponto a maquina de Turing para num estado nal, de modo que a adeia
e a eita.

aabb

Exemplo 7.1.11 Projetar uma maquina de Turing que re onhe a a linguagem


L

fa

n bn n = n  1g:

As ideias usadas no exemplo anterior s~ao fa ilmente adaptadas nesse aso. Casamos
ada \a", \b" e \ " tro ando-os por x, y e z , respe tivamente. No m he amos que todos
os smbolos originais foram rees ritos. Embora on eitualmente uma simples extens~ao
do exemplo anterior, es rever esse programa e, omo veremos a seguir, bastante mais
tedioso. Para fa ilitar a visualiza ~ao da maquina de Turing, usaremos uma nota ~ao de
tabela, onde a oluna representa o smbolo lido pelo abe ote e as las o estado interno da
maquina. O onteudo da tabela representa o movimento da maquina de Turing para esse
smbolo e esse estado.

148

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

q0
q1
q2
q3
q4

(q1 ; x; D)
(q4 ; y; D)
(q1 ; a; D) (q2 ; y; D)
(q2 ; y; D)
(q2 ; b; D) (q3 ; z; E )
(q2 ; z; D)
(q3 ; a; E ) (q3 ; b; E )
(q0 ; x; D) (q3 ; y; E ) (q3 ; z; E )
(q4 ; y; D) (q4 ; z; D) (q5 ; 2; E )

q5

O estado nal e q5 .

Observe que mesmo fan bn g sendo uma linguagem livre de ontexto e fan bn n g n~ao
sendo, elas podem ser re onhe idas por maquinas de Turing om estruturas similares.

Uma on lus~ao que podemos tirar deste exemplo e que uma maquina de Turing pode
re onhe er linguagens que n~ao s~ao livres de ontexto, uma primeira indi a ~ao de que as
maquinas de Turing s~ao mais poderosas do que os automatos a pilha.

7.1.3

Maquinas de Turing omo Tradutores (Computadores)

Tivemos pou os motivos ate aqui para estudar os tradutores. Em teoria de linguagens re onhe edores s~ao bastante adequados. Mas omo veremos, as maquinas de Turing n~ao s~ao
somente interessantes omo re onhe edores, elas nos forne em modelos abstratos simples
de omputadores digitais, em geral. Uma vez que o prin ipal objetivo de um omputador
e transformar entradas em sadas, ^ele atua omo um tradutor. Se pretendermos modelar omputadores usando maquinas de Turing, temos de estudar esse aspe to om mais
detalhes.
A entrada para uma omputa ~ao e a adeia, de todos os smbolos n~ao bran os, dispostos na ta, de esquerda a direita, no in io da omputa ~ao. Na on lus~ao da omputa ~ao
num estado nal, a sada sera a adeia que se en ontrar na ta. Se a maquina para
num estado n~ao nal ou a em la o in nito para uma determinada entrada, diremos
que a maquina n~ao esta de nida ou diverge para essa entrada. Portanto, podemos v^er
uma maquina de Turing tradutora M omo uma implementa ~ao de uma fun ~ao par ial

f : 
!  de nida por
( ) = wb

f w

uma vez que


q0 w

para algum estado nal qf

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

` M

w1 q w2 ;

e wb = w1 w2 2

149

7.1. A Maquina de Turing Padr~ao


De ni ~ao 7.1.12 Uma fun ~ao f om domnio D diz-se Turing omputavel ou, simplesmente, omput
avel se existe alguma maquina de Turing M = hQ; ; ; ; q0 ; 2; F i
tal que para todo w 2 D
q0 w ` w1 qf w2 , om qf

2 F e f (w) = w1w2

E laro que quando queremos omputar uma fun ~ao, digamos f : D ! E , usamos
uma representa ~ao formal ( omo adeias de uma linguagem formal) dos domnios D e E .
Como teremos oportunidade de v^er, todas as fun ~oes matemati as omuns, n~ao importa qu~ao ompli adas elas sejam, s~ao Turing omputaveis. Come aremos olhando algumas
opera ~oes simples, omo a adi ~ao e a ompara ~ao aritmeti a.

Exemplo 7.1.13 Dado dois inteiros positivos x e y , projetar uma maquina de Turing
que ompute x + y .
Primeiramente, temos que fazer alguma onven ~ao para representar os inteiros positivos. Por simpli idade, usaremos a nota ~ao unaria no qual qualquer inteiro positivo x e
representado por (x) 2 f1g+ , tal que

j (x) j= x
Devemos, tambem, de idir omo x e y s~ao dispostos ini ialmente na ta e omo sua
soma deve apare er no nal da omputa ~ao. Assumiremos que (x) e (y ) est~ao na
ta em nota ~ao unaria, separados por um 0, om o abe ote apontando para o smbolo
mais a esquerda de (x). Apos a omputa ~ao, (x + y ) estara na ta seguido por um
0, e o abe ote estara posi ionado no lado esquerdo do resultado. Portanto, pretendemos
projetar uma maquina de Turing para a omputa ~ao

q0 (x)0 (y ) ` qf (x + y )0;
onde qf e um estado nal. Construir um programa para isso e relativamente simples.
Tudo que pre isamos e mover o separador 0 para a direita, ate o nal de (y ), de modo
que a adi a~o nada mais seja do que on atenar as duas adeias. Para isso, onstruimos

M = hQ; ; ; ; q0 ; 2; F i; om

 Q = fq0 ; q1; q2 ; q3; q4g,


  = f0; 1g,
 = f0; 1; 2g,
 F = fq4g,
150

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

q0
q1
q2
q3
q4

(q1 ; 1;

D)

(q0 ; 1;

D)
D)
(q3 ; 0; E )
(q3 ; 1; E )

(q1 ; 1;

(q2 ;

2; E

(q4 ;

2; D

Observe que ao mover o 0 para a direita riamos temporariamente um 1 extra. A


transi a~o (q2 ; 1) = (q3 ; 0; D) e ne essaria para remover o 1 extra (que foi relembrado
olo ando a maquina no estado q1 ) para o m da omputa ~ao.
Isto pode ser visto na sequ^en ia de des ri ~oes instant^aneas para somar 111 om 11:

` 1q0 11011 ` 11q0 1011 ` 111q0 011 ` 1111q111 ` 11111q1 1 `


111111q1 2 ` 11111q2 1 ` 1111q3 10 ` 111q3 110 ` 11q3 1110 ` 1q3 11110 `
q3 111110 ` q3 2111110 ` q4 111110:
q0 111011

A nota
~
ao un
aria, embora in onveniente para omputa
~
oes pr
ati as, 
e bastante adequada para programa
~
ao em m
aquinas de Turing. O programa resultante 
e mais urto e
mais simples daquele se usarmos uma outra nota
~
ao, tal omo bin
aria ou de imal.
Adi ionar n
umeros 
e uma das opera
~
oes fundamentais de qualquer omputador, aquela
que desempenha uma parte na s
ntese de instru
~
oes mais ompli adas. Outras opera
~
oes
b
asi as s~
ao opiar e omparar adeias. Essas tamb
em podem ser fa ilmente programadas
em m
aquinas de Turing.

Projetar uma maquina de Turing que multiplique um numero inteiro


positivo por dois. Isto em nota ~ao unaria e o mesmo que projetar uma maquina de Turing
a qual opie ou duplique adeias de 1's. Mais pre isamente, uma maquina de Turing que
efetue a omputa ~ao
Exemplo 7.1.14

q0 w ` qf ww

para qualquer

2 f1g+ .

Para resolver este problema devemos implementar o seguinte pro esso intuitivo:
1. Tro ar todo
2. A har o

por x.

mais a direita e tro a-lo por

3. Mover-se para o extremo direito da regi~ao n~ao bran a e riar um

4. Repetir a etapa 2 e 3 ate n~ao existir mais x's


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
151

7.1. A Maquina de Turing Padr~ao


Uma vers~ao de maquina de Turing desse pro esso intuitivo e

2
q0 (q0 ; x; D)
(q1 ; 2; E )
q1 (q1 ; 1; E ) (q2 ; 1; D) (q3 ; 2; D)
1

q2
q3

q ; ; D)

( 2 1

q ; ; E)

( 1 1

onde q3 e o uni o estado nal. Isto pode pare er um pou o dif il de v^er a primeira vista,
por isso devemos testar o programa om uma adeia simples omo 11. A omputa ~ao
efetuada neste aso e

q0 11 ` xq0 1 ` xxq0 2 ` xq1 x ` x1q2 2 ` xq1 11 ` q1 x11 ` 1q2 11 ` 11q2 1 ` 111q2 2 `


11q1 11 ` 1q1 111 ` q1 1111 ` q1 21111 ` q3 1111:

Exemplo 7.1.15 Sejam x e y dois inteiros positivos em nota ~ao unaria. Construir uma
maquina de Turing que pare no estado nal qf se x  y , e pare no estado n~ao nal qn se
x < y . Mais espe i amente, a maquina deve efetuar a omputa ~ao

q0 (x)0 (y ) ` qf (x)0 (y ); se x  y;
q0 (x)0 (y ) ` qn (x)0 (y ); se x < y:
Para resolver este problema, podemos usar a ideia do exer  io 7.1.10, om ligeiras
modi a ~oes. Ao inves de asar a's e b's, asaremos o 1 mais a esquerda do 0 om o 1
mais a direita. Isto se realizara ate en ontrarmos o 0. No m do asamento, teremos na
ta ou

xx    x1    10xx    x2
ou

xx    x0xx    x2
ou

xx    x01    1xx    x2;


dependendo se x > y , x = y ou y > x, respe tivamente. No primeiro aso, a haremos
2 quando tentarmos asar o ultimo 1 a esquerda de 0 om o 1 mais a direita de 0. Isto
pode ser usado para entrar no estado qf . No segundo e ter eiro asos, a haremos um x
a esquerda de 0 quando tentarmos realizar o asamento. Se ainda en ontrarmos um 1

152

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

na direita, ent~ao y > x e nesse aso usamos isso para entrar em outro estado qn . Se o
asamento for perfeito, isto e, n~ao a harmos nenhum 1 na direita do 0, signi ara que
x = y e, portanto, iremos ao estado qf . A m
aquina de Turing que efetua essas opera ~oes
e:

q0
q1
q2
q3
q4
q5
qn
q6
qf

1
(q0 ; x; D)
( q 1 ; 1; D )
(q3 ; x; E )
(q3 ; 1; E )
( q 5 ; 1; D )
( q 5 ; 1; D )
(qn ; 1; E )
( q 6 ; 1; D )
( q f ; 1; E )

0
x
2
(q4 ; 0; D)
(q1 ; 0; D) (q2 ; x; E ) (q2 ; 2; E )
(q6 ; 0; E )
(q3 ; 0; E ) (q0 ; x; D)
(q6 ; x; E )
(q5 ; 1; D) (qn ; 2; E )
(qn ; 0; E ) (qn ; 1; E )
(q6 ; 1; D) (qf ; 2; E )
(qf ; 0; E ) (qf ; 1; E )

Este exemplo mostra maquinas de Turing que podem ser programadas para tomar de is~oes baseada em ompara ~oes aritmeti as. Esta espe ie de de is~oes simples e omum em
linguagens de maquina de omputadores, onde entram adeias de instru ~oes alternadas,
dependendo da sada de uma opera ~ao aritmeti a.

7.2 Combina ~ao de Maquinas de Turing para Realizar Tarefas Compli adas
Mostramos, expli itamente, omo algumas opera ~oes importantes, en ontradas em todo
omputador, podem ser simuladas numa maquina de Turing. Desde que, nos omputadores digitais, tais opera ~oes primitivas s~ao blo os para onstruir instru ~oes mais omplexas,
vamos v^er omo essas opera ~oes basi as podem ser ombinadas numa maquina de Turing.
Para mostrar omo as maquinas de Turing podem ser ombinadas, seguimos uma prati a
omum em programa ~ao. Come amos om uma des ri ~ao de alto nvel, ent~ao re namo-la
su essivamente ate o programa estar na linguagem atual om a qual estamos trabalhando.
Podemos des rever maquinas de Turing em alto nvel de varias maneiras. Diagramas de
blo o ou pseudo odigo s~ao as duas abordagens que mais frequentemente usaremos nas
dis uss~oes que seguem.
7.2.1

Diagramas de Blo os

Nos diagramas de blo o en apsulamos informa ~oes em aixas pretas uja fun ~ao e des rita,
mas ujos detalhes interiores n~ao s~ao onhe idos. Ao usar tais aixas, argumentamos, impli itamente, que elas podem ser onstrudas. Como um primeiro exemplo, ombinaremos
as maquinas dos exemplo 7.1.13 e 7.1.15.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

153

7.2. Combina ~ao de Maquinas de Turing para Realizar Tarefas Compli adas

Adicionador

x+y

x>
y

A
x,y

Comparador
f(x,y)

C
y
x<

Apagador
E

Figura 7.5: Exemplo de ombina ~ao de m


aquinas de Turing

Exemplo 7.2.1 Projetar uma maquina de Turing que omputa a fun ~ao

f (x; y ) =

x + y , se x  y
0
, se x < y

Suponhamos que x e y s~ao inteiros positivos em representa ~ao unaria. O valor zero
sera representado por 0, om o resto da ta em bran o.
A omputa ~ao de f (x; y ) pode ser visualizada em alto nvel por meio do diagrama na
gura 7.5
Este diagrama mostra que primeiro usamos uma maquina de ompara ~ao, tal omo
aquela do exemplo 7.1.15, para determinar se x  y ou n~ao. Se f^or o aso, o omparador
envia um sinal de partida para o adi ionador do exemplo 7.1.13, que ent~ao omputa x + y .
Se n~ao, isto e se x < y , um programa apagador e a ionado para tro ar todo 1 por bran o.
Em dis uss~oes subsequentes, usaremos, frequentemente, diagramas de blo os de alto
nvel representando maquinas de Turing. Ele e ertamente mais rapido e laro do que
o onjunto extensivo orrespondente de 's. Antes de a eitar esta vis~ao de alto nvel
devemos justi a-la. O que signi a, por exemplo, dizer que o omparador envia um sinal
de partida para o adi ionador? N~ao existe nada na de ni ~ao 7.1.1 que ofere a essa
possibilidade. Entretanto ela pode ser dada de forma direta.
O programa C que ompara esta es rito de forma sugestivo no exemplo 7.1.15, usando
uma maquina de Turing que tem estados indexados om C . Para o adi ionador, usamos a
ideia do exemplo 7.1.13, om estados indexados por A. Para o apagador E , onstruimos
uma maquina de Turing tendo os estados indexados om E . As omputa ~oes efetuadas
por C s~ao:

q 0 (x)0 (y ) ` q 0 , se x  y;
C;

154

A;

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

q 0 (x)0 (y ) ` q 0 , se x < y;
C;

E;

Se tomarmos q 0 e q 0 omo os estados ini iais de A e E , respe tivamente, vemos


que C ome a ou om A ou om E . A omputa ~ao efetuada pelo adi ionador A sera
A;

E;

q 0 (x)0 (y ) ` q (x + y )0
A;

A;f

e aquela efetuada pelo apagador E sera

q 0 (x)0 (y ) ` q 0:
E;

E;f

O resultado e uma uni a maquina de Turing que ombina as a ~oes de C , A e E omo


esta indi ado na gura 7.5.
Observe que nos exemplos 7.1.13 e 7.1.15, usados aqui, ambas maquinas param a
omputa ~ao deixando o abe ote de leitura-es rita apontando para o smbolo mais a esquerda da sada. Esta onve ~ao e ne essaria, quando se deseja ombinar maquinas de
Turing, pois, por de ni ~ao, qualquer exe u ~ao de qualquer maquina de Turing, ome a
om o abe ote apontando o smbolo mais a esquerda. Assim, quando on lui a omputa ~ao do omparador, ele deixa o abe ote na posi ~ao orreta para ome ar a exe u ~ao do
adi ionador ou do apagador, segundo seja o aso.

7.2.2

Ma roinstru
~
ao

Uma outra vis~ao de alto nvel das maquinas de Turing e aquela envolvendo pseudo- odigo.
Em linguagem de programa ~ao, pseudo- odigo e uma maneira de esbo ar uma omputa ~ao usando frases des ritivas ujos signi ados supostamente entendemos. Embora esta
des ri ~ao n~ao seja usada no omputador, assumimos que podemos traduzi-la na linguagem
apropriada quando ne essario. Uma espe ie simples de pseudo- odigo e exempli ado pela
ideia de uma ma roinstru ~ao, que e uma uni a assertiva para uma sequ^en ia de assertivas
de baixo nvel. Antes de nimos ma roinstru ~oes em termos da linguagem de baixo nvel.
Ent~ao usamos as ma ro instru ~oes num programa om a hipotese de que o odigo de
baixo nvel relevante esta substitudo para ada o orr^en ia da ma roinstru ~ao. Esta ideia
e muito util na programa ~ao em maquinas de Turing.
Exemplo 7.2.2

Considere a ma roinstru ~ao


se a ent~ao q sen~ao q ;
j

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

155

7.2. Combina ~ao de Maquinas de Turing para Realizar Tarefas Compli adas
om a seguinte interpreta ~ao. Se a maquina l^e \a", ent~ao independentemente de seu
estado orrente ela entra no estado qj sem tro ar o onteudo da ta ou mover o abe ote.
Se o smbolo lido n~ao e \a", a maquina entra no estado qk sem tro ar nada.
Para implementar essa ma roinstru ~ao requeriremos varias etapas de uma maquina
de Turing

= (q 0 ; a; D) para todo q 2 Q,
(q ; b) = (q 0 ; b; D ) para todo q 2 Q e todo b 2
(q 0 ; ) = (q ; ; E ) para todo 2 ,
(q 0 ; ) = (q ; ; E ) para todo 2 .
(qi ; a)

fag,

Os estados qj0 e qk0 s~ao novos, e foram introduzidos para levar em onta as ompli a ~oes que apare em do fato de na maquina de Turing padr~ao o abe ote mudar de posi ~ao
em ada movimento. Na ma roinstru ~ao queremos tro ar o estado mas n~ao o abe ote,
isto e, deixamo-lo onde estava. Deixamos o abe ote mover-se para a direita, mas olo amos a maquina no estado qj0 ou qk0 . Isto indi a que um movimento para a esquerda deve
ser feito antes de entrar no estado desejado qj ou qk .
7.2.3

Subprogramas

Dando um passo a frente, podemos tro ar as ma roinstru ~oes por subprogramas. Normalmente, uma ma roinstru ~ao e tro ado pelo odigo atual em ada o orr^en ia, enquanto
um subprograma e um uni o peda o de odigo que e soli itado repetidamente quando ne essario. Os subprogramas s~ao fundamentais em linguagens de programa ~ao de alto nvel,
mas eles tambem podem ser usados om maquinas de Turing. Para tornar isso plausvel,
vamos esbo ar rapidamente omo uma maquina de Turing pode ser usada omo um subprograma que pode ser soli itada repetidamente por outra maquina de Turing. Isto requer
uma nova ara tersti a: a abilidade para armazenar informa ~ao na hamada on gura ~ao
de programas, de modo que a on gura ~ao possa ser re riada no retorno do subprograma.
Por exemplo, digamos que a maquina A no estado q soli ita a maquina B . Quando B
terminou, deveramos reasumir o programa A no estado q , om o abe ote (que pode
ter sido movido durante as opera ~oes de B ) na sua posi ~ao original. Em outras vezes, A
pode hamar B do estado q , no aso em que o ontrole deve retornar para esse estado.
Para resolver o problema da transfer^en ia de ontrole, devemos ser apazes de passar informa ~ao de A para B e vi e-versa, sermos apazes de re riar on gura ~ao de A quando
ele re upera o ontrole de B , e assegurar que temporariamente as omputa ~oes suspensas
de A n~ao sejam afetadas pela exe u ~ao de B . Para isto, devemos dividir a ta em varias
regi~oes omo mostrado na gura 7.6.
Quando A soli ita B , ele primeiro es revera as informa ~oes ne essarias (por exemplo,
estado orrente de A) na regi~ao T . Apos essa transfer^en ia B usara T para en ontrar sua
entrada. O espa o de trabalho para B esta separado de T e do espa o de trabalho de
A, de modo que nenhuma interfer^
en ia possa o orrer. Quando B termina, ele retornara
i

156

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

regiao separadora

#
Espaco de trabalho

Espaco de trabalho
para A

para

Figura 7.6: Divis~ao da ta para simula ~ao de subprogramas em maquinas de Turing.


Fita no inicio da computacao
1

0 1

Fita no final da computacao


1 0 1

1
x

1
xy

Figura 7.7: Conteudo da ta para a multipli a ~ao usando a ideia de subprograma.


seu resultado para a regi~ao T , onde A o en ontrara. Desta maneira, os dois programas
podem interagir omo desejado. Observe que isso e muito pare ido om o que a onte e
no omputador real quando um subprograma e soli itado.
Agora podemos programar maquinas de Turing em pseudo- odigos, uma vez que onhe amos (ao menos em tese) omo traduzir ^este pseudo- odigo em um programa de
maquina Turing atual.

Projetar uma maquina de Turing que multiplique dois inteiros positivos


em nota ~ao unaria.

Exemplo 7.2.3

Uma maquina de multipli a ~ao pode ser onstruda ombinando as ideias en ontradas
na adi a~o e opia. Vamos assumir que os onteudos no ini io e nal da ta s~ao omo
indi ados na gura 7.7. O pro esso de multipli a ~ao pode ser visualizado omo opias
repetidas do multipli ando y para ada 1 no multipli ador x. O pseudo- odigo seguinte
mostra as prin ipais etapas do pro esso
1. Repita as seguintes etapas ate n~ao onter mais 1's.
(a) a har um 1 em x e tro a-lo por um outro smbolo, digamos \a",
(b) troque o 2 mais a direita por y .
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

157

7.3. Tese de Turing

2. Troque todos os a's om 1's.


Portanto a maquina de Turing e a seguinte
1

(q1 ; a; D )

(q7 ; 0; E )

q1

( q 1 ; 1; D )

(q2 ; 0; D )

q2

(q3 ; a; D )

(q5 ; 0; E )

q3

( q 3 ; 1; D )

(q3 ; 0; D )

q4

(q4 ; 1; E )

(q4 ; 0; E )

(q2 ; a; D )

(q6 ; 0; E )

(q5 ; 1; E )

q0

q5
q6

(q6 ; 1; E )

(q4 ; 1; E )

(q0 ; a; D )
(q7 ; 1; E )

q7

(q8 ;

; D)

q8

onde

F =

fq8 g.

Apesar da natureza des ritiva desses exemplos, eles j


a nos possibilita onje turar que
m
aquinas de Turing, embora em prin 
pio bem rudimentar, podem ser ombinadas de
muitas maneiras de modo a torn
a-las bastante poderosas.

Nossos exemplos n~
ao foram

bastante gerais e detalhados para nos permitir argumentar que provamos alguma oisa.
Mas, 
e plaus
vel nesse ponto onje turar que as m
aquinas de Turing podem fazer tarefas
muito ompli adas.

7.3

Tese de Turing

A dis uss~
ao anterior n~
ao somente mostrou omo uma m
aquina de Turing pode ser onstru
da de partes mais simples, mas desta a um aspe to negativo ao se trabalhar om tais
aut^
omatos de baixo n
vel. Enquanto ne essitemos de pou a imagina
~
ao ou engenhozidade para traduzir um diagrama de blo o ou pseudo 
odigo no programa da m
aquina de
Turing orrespondente, faz^
e-lo pode tomar muito tempo ou fa ilmente levar a erro e n~
ao
a res entar nada ao nosso entendimento.

O onjunto de instru
~
oes de uma m
aquina de

Turing 
e t~
ao restrito que qualquer argumento, solu
~
ao ou prova para um problema n~
ao
trivial 
e muito tedioso.
Agora enfrentamos um dilema: queremos argumentar que as m
aquinas de Turing podem efetuar n~
ao somente opera
~
oes simples para as quais ofere emos programas expl
 itos,
por
em pro essos mais omplexos, des rit
veis por diagramas de blo os ou pseudo- 
odigos.
Para defender tais argumentos devemos mostrar expli itamente programas relevantes,
mas isso 
e bastante trabalhoso. Desse modo, gostar
amos de a har uma maneira de efetuar uma dis uss~
ao razoavelmente rigorosa de m
aquinas de Turing sem ter que es rever
o 
odigo de baixo n
vel.

N~
ao existe infelizmente maneira ompletamente satisfat
oria de

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
158

Cap
tulo 7. M
aquinas de Turing

fazer isso. O melhor que podemos fazer e manter um ompromisso razoavel. Para v^er
omo devemos al an ar tal ompromisso, retomaremos alguns fundamentos loso os.
Podemos tirar algumas on lus~oes simples dos exemplos vistos anteriormente. A primeira e que as maquinas de Turing pare em ser mais poderosas que os aut^omatos a
pilha. No exemplo 7.1.11, esbo amos a onstru ~ao de uma maquina de Turing para
uma linguagem que n~ao e livre de ontexto e para a qual, onsequentemente, n~ao existe
um aut^omato a pilha. Os exemplos 7.1.13, 7.1.14 e 7.1.15 mostram que as maquinas
de Turing podem fazer algumas opera ~oes aritmeti as simples, manipular adeias e fazer
algumas ompara ~oes. A dis uss~ao tambem ilustra omo as opera ~oes podem ser ombinadas para resolver problemas mais omplexos, omo varias maquinas de Turing podem
ser ompostas, e omo um programa pode atuar omo subprograma de um outro. Como
opera ~oes muito omplexas podem ser onstrudas dessa maneira, podemos suspeitar que
as maquinas de Turing podem modelar em poder um omputador tpi o.
Suponha que f^ossemos fazer a onje tura de que, em algum sentido, as maquinas
de Turing s~ao iguais em poder a um omputador tpi o. Como podemos defender ou
refutar tal hipotese? Para defend^e-la deveramos tomar uma sequ^en ia de problemas
res entemente mais ompli ados e mostrar omo eles s~ao resolvidos por maquinas de
Turing. Devemos tambem tomar o onjunto de instru ~oes da linguagem de maquina de
algum omputador espe  o e projetar uma maquina de Turing que possa efetuar todas
as instru ~oes no onjunto. Embora isto poderia torrar nossa pa i^en ia, deve ser possvel,
em prin pio, se nossa hipotese for orreta. Alem disso, enquanto todo su esso nessa
dire ~ao fortale eria nossa onvi  ~ao na verdade da hipotese, ela n~ao levaria a uma prova.
A di uldade esta no fato de que n~ao sabemos exatamente o que queremos dizer om \um
omputador tpi o" e n~ao temos meios de tornar essa de ni ~ao pre isa.
Podemos tambem abordar o problema de outra perspe tiva. Podemos tentar en ontrar
algum pro edimento para o qual podemos es rever um programa de omputador, mas
para o qual possamos mostrar que n~ao pode existir nenhuma maquina de Turing. Se
isto fosse possvel teramos uma base para rejeitar a hipotese. Mas ninguem ainda foi
apaz de produzir um ontraexemplo. O fato de que todas as tentativas de ontradizer
a hipotese foram infrutferas deve ser tomada omo uma evid^en ia ir unstan ial de que
tal ontraexemplo n~ao pode ser dado. Tudo indi a que as maquinas de Turing s~ao, em
prin pio, t~ao poderosas quanto qualquer omputador.
Argumentos omo esse levaram a Alan Turing e outros, em torno de 1936, a t~ao
onhe ida Tese de Turing1 . Esta hipotese estabele e que qualquer omputa ~ao que
pode ser efetuada por meios me ^ani os pode ser efetuada por uma maquina de Turing.
 importante ter em mente o que e a tese de Turing. Ela n~ao e algo que possa ser
E
provado. Para fazer isso teramos de de nir pre isamente o termo \meios me ^ani os".
Isto requeriria algum outro modelo abstrato e n~ao nos levaria muito mais longe do que
1 Esta

tese tambem e onhe ida omo \Tese de Chur h" ou \Tese de Chur h-Turing", em homenagem
a Alonzo Chur h quem em 1936, usando um outro formalismo (as fun o~es -de nveis), foi o primeiro a
identi ar o on eito intuitivo de fun a~o efetivamente al ulavel ou omputavel om um on eito formal.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

159

7.3. Tese de Turing

anteriormente. A tese de Turing e vista mais apropriadamente omo uma de ni ~ao do
que onstitui uma omputa ~ao me ^ani a: uma omputa ~ao e me ^ani a se e somente se
ela pode ser efetuada por alguma maquina de Turing.
Se tomarmos essa atitude e en ararmos a tese de Turing, simplesmente, omo uma
de ni ~ao, podemos olo ar a quest~ao de o quanto essa de ni ~ao e su ientemente abrangente. Ela e bastante para ubrir tudo que zemos ate hoje (e on ebivelmente fa tvel
no futuro) om omputadores? Um \sim" inequvo o n~ao e possvel, mas as evid^en ias
em seu favor s~ao muito forte. Alguns argumentos para a eitar a tese de Turing omo a
de ni ~ao de uma omputa ~ao me ^ani a s~ao:
1. Qualquer oisa que pode ser efetuada em qualquer omputador existente tambem
pode ser efetuada por uma maquina de Turing.
2. Ninguem foi apaz ainda de sugerir um problema, soluvel, pelo o que intuitivamente
entendemos por um algoritmo, para o qual um programa de maquina de Turing n~ao
possa ser es rito para ele.
3. Tem sido propostos modelos alternativos de omputa ~ao me ^ani a, mas nenhum
deles s~ao mais poderosos do que o modelo da maquina de Turing.
Esses argumentos s~ao ir unstan iais, e a tese de Turing n~ao pode ser provada usando
eles. Apesar de sua plausibilidade, a tese de Turing e ainda uma hipotese. Mas en arar a
tese de Turing omo, simplesmente, uma de ni ~ao arbitraria deixa de fora um importante
ponto. Em algum sentido, a tese de Turing desempenha o mesmo papel em i^en ia da
omputa ~ao omo fazem as leis basi as da fsi a e da qumi a. A fsi a lassi a, por exemplo, e baseada fortemente nas leis do movimento de Newton. Embora as hamemos de leis,
elas n~ao s~ao logi amente ne essarias. Em ontrapartida elas s~ao modelos plausveis que
expli am o mundo fsi o. A eitamo-las porque as on lus~oes que tiramos delas on ordam
om nossa experi^en ia e nossa observa ~ao. Tais leis n~ao podem ser provadas verdadeiras,
emboras elas poderiam ser invalidadas. Se um experimento resulta na ontradi ~ao de
uma on lus~ao baseadas nestas leis, ome aramos a questionar a validade de tais leis.
Por outro lado, repetidos insu essos de invalidar uma lei fortale e nossa on an a nela.
Esta e a situa ~ao para a tese de Turing. Portanto, temos raz~ao em onsidera-la uma
lei basi a da i^en ia da omputa ~ao. As on lus~oes que tiramos dela on ordam om o
que sabemos a er a dos omputadores reais, e ate aqui, todas as tentativas para invalida-la resultaram em falhas. Existe sempre a possibilidade de que alguem apare a om
outra de ni ~ao que explique alguma situa ~ao sutil n~ao oberta por maquinas de Turing,
mas que ainda aia no es opo de nossa no ~ao intuitiva de omputa ~ao me ^ani a. Em
tal eventualidade, algumas de nossas dis us~oes subsequentes teriam que ser onsideravelmente modi adas. Entretanto, a possibilidade disso a onte er e muito remota. Algumas
dis uss~oes mais aprofundadas sobre a validade da tese de Chur h-Turing, onsiderando
argumentos a favor e em ontra, podem ser en ontradas em [Tho73, Sob87, Bir96.
Tendo a eito a tese de Turing, estamos numa posi ~ao para dar uma de ni ~ao pre isa
de algoritmo.

160

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 7. Maquinas de Turing


De ni ~ao 7.3.1 Um algoritmo para uma fun ~ao f : D

e uma maquina de Turing


M , para a qual dado qualquer entrada d 2 D na sua ta, ela p
ara om a resposta orreta
f (d) 2 R na ta. Espe i amente podemos exigir que
q0 d

` M f

( )

f2

q f d ; q

F;

para todo

D:

Identi ar um algoritmo om uma maquina de Turing nos permite provar rigorosamente argumentos omo \existe um algoritmo  " ou \n~ao existe nenhum algoritmo  ".
Entretanto, para onstruir expli itamente um algoritmo, mesmo para problemas relativamente simples, pode ser bastante trabalhoso. Para evitar tal trabalho podemos apelar
para a tese de Turing e alegar que qualquer oisa que podemos fazer om qualquer omputador pode tambem ser feito por uma maquina de Turing. Consequentemente, podemos
substituir as maquinas de Turing por um programa em JAVA, por exemplo, na de ni ~ao
7.3.1. Isto fa ilita a exibi ~ao do algoritmo onsideravelmente. Realmente, omo ja zemos anteriormente, daremos um passo a frente e a eitaremos as des ri ~oes verbais ou
diagramas de blo o omo algoritmos na suposi ~ao de que es reveramos um programa de
maquina de Turing para eles se para isso fossemos desa ados. Isto simpli a enormemente
a dis uss~ao, mas e obvio que algo rti o a em aberto. Enquanto um \programa em
JAVA" e bem de nido, a \des ri ~ao verbal lara" n~ao o e, e estamos em perigo de alegar
a exist^en ia de um algoritmo n~ao existente. Mas esse perigo e ompensado pelo fato de
podermos manter a dis uss~ao simples e intuitivamente lara, e podermos dar des ri ~oes
on isas para pro essos omplexos. Quem tiver qualquer duvida da validade desse argumento pode es lare ^e-lo es revendo um programa adequado em alguma linguagem de
programa ~ao.

7.4 Ligeiras Varia o~es da Maquina de Turing Padr~ao


Nossa de ni ~ao de maquina de Turing padr~ao e algo arbitraria no sentido de que existem de ni ~oes alternativas que serviriam igualmente bem. As on lus~oes que podemos
tirar sobre o poder de uma maquina de Turing s~ao independentes da estrutura espe  a
es olhida para ela.
Se a eitarmos a tese de Turing, ompli a ~oes da maquina de Turing padr~ao dadas
por dispositivos de armazenamento mais omplexos n~ao ter~ao nenhum efeito no poder
do aut^omato. Qualquer omputa ~ao que pode ser feita por tais novos arranjos aira sob
a ategoria de uma omputa ~ao me ^ani a e portanto pode ser feita pela maquina de
Turing padr~ao. Existem muitas varia ~oes sobre o modelo basi o dado na de ni ~ao 7.1.1.
Todas essas varia ~oes n~ao aumentam o poder da omputa ~ao. Se um modelo n~ao padr~ao
re onhe e uma linguagem ou omputa uma fun ~ao existe um modelo padr~ao que tambem
re onhe e essa linguagem ou omputa essa fun ~ao. A seguir apresentaremos rapidamente
algumas das possveis varia ~oes do modelo padr~ao.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

161

7.4. Ligeiras Varia ~oes da Maquina de Turing Padr~ao

Figura 7.8: Fita ilimitada somente a direita.

7.4.1 Maquinas de Turing om uma Op ~ao de Perman^en ia


Em nossa de ni ~ao de maquinas de Turing padr~ao, o abe ote deve se mover para a direita
 vezes e onveniente forne er uma ter eira op ~ao, mantendo o abe ote
ou esquerda. As
no mesmo lugar apos rees rever o onteudo da elula. Portanto de nimos uma maquina
de Turing om op ~ao de perman^en ia tro ando o , da de ni ~ao 7.1.1, por

:Q

! Q   fE; D; P g

om a interpreta ~ao de que P signi a que o abe ote permane e no mesmo lugar. Claramente, toda maquina de Turing padr~ao e uma maquina de Turing om op ~ao de perman^en ia e pela tese de Turing, a reversa tambem e valida. Assim, esta op ~ao n~ao
aumenta o poder do aut^omato, isto e,

A lasse das maquinas de Turing om op ~ao de perman^en ia e equivalente a lasse


das maquinas de Turing padr~ao.

Simula ~ao e uma te ni a omum para mostrar a equival^en ia de aut^omatos. Dizemos
que um aut^omato simula outro se ele efetua as opera ~oes efetuadas por esse outro. Ou
seja, ^ele se omporta omo se fosse outro.

7.4.2 Maquinas de Turing om uma Fita Semi-in nita


Muitos autores n~ao onsideram o modelo da de ni ~ao 7.1.1 omo padr~ao, mas usam um
outro om uma ta que e ilimitada somente numa dire ~ao. Podemos visualizar isto omo
uma ta que tem um limite a esquerda (veja gura 7.8). Esta maquina de Turing e por
outro lado id^enti a ao nosso modelo padr~ao, ex eto que n~ao e permitido o movimento a
esquerda quando o abe ote esta na fronteira.
N~ao e di il v^er que esta restri ~ao n~ao afeta o poder da maquina, pois, se pre issarmos de mais algum espa o a esquerda da ta, basta realizar um dislo amento de um
quadradinho para a direita a todo o onteudo da ta.

162

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 7. Maquinas de Turing


Fita de entrada (de leitura somente)

Unidade
de
Controle

Fita de saida

Figura 7.9: Representa ~ao esquemati a de uma maquina de Turing o -line.

7.4.3 Maquinas de Turing O -line


A de ni ~ao geral de um aut^omato ontem uma ta de entrada assim omo uma memoria
temporaria. Na de ni ~ao 7.1.1 des artamos a ta de entrada por raz~oes de simpli idade,
alegando que isso n~ao faz diferen a no on eito de maquinas de Turing.
Se olo armos a ta de entrada de volta no desenho, obtemos o que e onhe ido omo
maquinas de Turing o -line. Em tal maquina, ada movimento e governado pelo
estado interno, o que e orrentemente lido da ta de entrada, o que e visto pelo abe ote
de leitura-es rita. Uma representa ~ao esquemati a de uma maquina de Turing o -line e
mostrada na gura 7.9.

7.4.4 Maquinas de Turing om Multiplas Fitas


Uma maquina de Turing om multiplas tas e aquela om varias tas, ada uma om seu
abe ote de leitura-es rita ontrolados independentemente, omo ilustra a gura 7.10.
Tipi amente de nimos uma maquina n- tas por M = hQ; ; ; ; q0 ; 2; F i, onde Q; ,
, q0 , e F s~ao omo na de ni ~ao 7.1.1, mas onde

:Q

! Q  n  fL; Rgn

espe i a o que a onte e sobre todas as tas. Por exemplo, se n = 2, om uma on gura ~ao orrente mostrada na gura 7.10 ent~ao
(q0 ; a; e)

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

= (q1 ; x; y; L; D)

163

7.4. Ligeiras Varia ~oes da Maquina de Turing Padr~ao


d

b c

Unidade
de
Controle

Figura 7.10: Representa ~ao esquemati a de uma maquina de Turing om duas tas.

1,-1 1,1 1,2


-1,1

Figura 7.11: Esquema de endere o bidimensional.


e interpretado omo segue. A regra de transi ~ao pode ser apli ada somente se a maquina
esta no estado q0 e o primeiro abe ote v^e um a e o segundo um e. O smbolo na primeira
ta sera ent~ao tro ado por x e seu abe ote se movera para a esquerda. Ao mesmo
tempo, o smbolo na segunda ta e rees rito omo y e o abe ote se move para a direita.
A unidade de ontrole muda do estado q0 para o estado q1 .

7.4.5

Maquinas de Turing Multidimensional

Uma maquina de Turing multidimensional e aquela na qual a ta pode ser estendida in nitamente em mais de uma dimens~ao. Um diagrama de maquina de Turing bidimensional
e mostrada na gura 7.11.
A de ni ~ao formal de uma maquina de Turing bidimensional envolve uma fun ~ao de
transi ~ao da forma

:Q

! Q   fL; R; U; Dg;

onde U e D espe i am movimentos do abe ote para uma elula para a ima e uma para
abaixo, respe tivamente.

164

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 7. Maquinas de Turing


7.4.6

M
aquinas de Turing N~
ao determin
sti as

Embora a hipotese de Turing seja plausvel quando se altera a estrutura da ta, o mesmo n~ao se pode dizer de n~ao determinismo. Isto porque n~ao determinismo envolve um
elemento de es olha e portanto tem algo de n~ao me ani ista. Assim, o apelo a tese de Turing n~ao e apropriado. Devemos olhar o n~ao determinismo om mais detalhe se quisermos
argumentar que ele n~ao a res enta nada ao poder de uma maquina de Turing.

De ni ~ao 7.4.1 Uma maquina de Turing n~ao determinsti a e um aut^omato omo
dado pela de ni ~ao 7.1.1, ex eto que

:Q

e agora uma fun ~ao

! }f in(Q   fL; Rg):

Como sempre, quando esta envolvido n~ao determinismo o onjunto de valores de e


um onjunto de transi ~oes possveis, ada um dos quais, pode ser es olhido pela maquina.

Exemplo 7.4.2 Se uma maquina tem transi ~oes espe i adas por
(q0 ; a)

= f(q1 ; b; D); (q2 ; ; E )g

ela e n~ao determinsti a. O movimento


q0 aaa

` bq1 aa

q0 aaa

` q2 2 aa

s~ao ambos possveis.

Como n~ao esta laro qual o papel que o n~ao determinismo desempenha em omputa ~ao
de fun ~oes, os aut^omatos n~ao determinsti os s~ao usualmente vistos omo re onhe edores.
Uma maquina de Turing n~ao-determinsti a diz-se a eitar w se existe qualquer sequ^en ia
possvel de movimentos tal que

q0 w  x1 qf x2 ;

om qf 2 F . Uma maquina de Turing n~ao-determinsti a pode ter movimentos disponveis


que levam a um estado n~ao- nal ou a um la o in nito. Mas, omo sempre a onte e om
n~ao determinismo, essas alternativas s~ao irrelevantes.

A lasse das maquinas de Turing determinsti as e a lasse das maquinas de Turing


n~ao-determinsti as s~ao equivalentes.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

165

7.5. Maquina de Turing Universal

7.5 Maquina de Turing Universal


Considere o seguinte argumento ontra a tese de Turing: \uma maquina de Turing, omo
apresentado na de ni ~ao 7.1.1, e um omputador de proposito espe ial. Uma vez que
seja de nida, a m
aquina esta restrita a efetuar um tipo parti ular de omputa ~ao. Os
omputadores digitais, por outro lado, s~ao maquinas de propositos gerais que podem ser
programadas para fazer diferentes tarefas em tempos diferentes. Consequentemente, as
maquinas de Turing n~ao podem ser onsideradas equivalentes aos omputadores digitais
de propositos gerais."
Esta obje ~ao pode ser superada projetando-se uma maquina de Turing reprogramavel,
hamada maquina de Turing universal. Uma maquina de Turing universal MU e um
aut^omato tal que dado omo entrada a des ri ~ao de qualquer maquina de Turing M e uma
adeia w, ele pode simular a omputa ~ao de M sobre w. Para onstruir tal MU primeiro
es olhemos uma maneira padr~ao de des rever maquinas de Turing. Podemos sem perda
de generalidade, assumir que
Q

= fq1 ; q2 ;    ; qn g;

om q1 o estado ini ial, q2 o estado nal, e


= fa1 ; a2 ;    ; g;
onde a1 representa o bran o. Ent~ao, es olhemos uma odi a ~ao no qual q1 e representado
por 1, q2 por 11, e assim por diante. Analogamente, a1 e odi ado omo 1, a2 omo 11,
et . Com os estados ini ial e nal, e o smbolo bran o de nidos por esta onven ~ao,
qualquer maquina de Turing pode ser des rita ompletamente, se usarmos o smbolo
0 omo um separador entre os 1's. A fun ~ao de transi ~ao e odi ada segundo esse
esquema, om argumentos e resultados em alguma sequ^en ia esperada. Por exemplo,
(q1 ; a2 ) = (q2 ; a3 ; E ) pode apare er omo


1011011011101   

Disto segue que qualquer maquina de Turing tem uma odi a ~ao omo uma adeia
sobre f0; 1g+, e que, dado a odi a ~ao de uma maquina de Turing, M , qualquer, podemos
de odi a-la uni amente. Algumas adeias n~ao representar~ao qualquer maquina de Turing
(por exemplo, a adeia 00011), mas isso n~ao e relevante.
Uma maquina de Turing MU , ent~ao, tem um alfabeto de entrada que in lue f0; 1g e
uma estrutura de uma maquina multi ta, omo mostrado na gura 7.12.
Para qualquer entrada M e w, a ta 1 mantera a de ni ~ao odi ada de M . A ta
2 tera o onteudo da ta de M , e a ta 3 os estados internos de M . MU olha primeiro
os onteudos das tas 2 e 3 para determinar a on gura ~ao de M . E ent~ao onsulta a

166

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 7. Maquinas de Turing


Descricao de M

estados internos de M

Conteudo da fita de M

Unidade de
Controle
de M U

Figura 7.12: Representa ~ao esquemati a de uma maquina de Turing universal.


ta 1 para v^er o que M faria om essa on gura ~ao. Finalmente, as tas 2 e 3 ser~ao
modi adas para re etir o resultado do movimento.
E portanto razoavel a onstru ~ao de uma maquina de Turing universal, mas o pro esso
n~ao tem interesse. Preferimos em vez disso apelar para a tese de Turing. A implementa ~ao
pode ser feito usando-se alguma linguagem de programa ~ao.
A observa ~ao de que toda maquina de Turing pode ser representada por uma adeia de
0's e 1's tem impli a ~oes importantes. Por exemplo, ela nos permite asso iar uma ordem
ao onjunto de todas as maquinas de Turing, de tal modo que a ada inteiro positivo
i, podemos asso iar uma u
ni a maquina de Turing M . Ao mostrar omo isso pode ser
feito, introduzimos o on eito de um pro edimento de enumera ~ao. Um pro edimento de
enumera ~ao para um onjunto S e uma maquina de Turing que es revera na sua ta os
elementos de S em alguma sequ^en ia s1 ; s2 ;    de tal maneira que qualquer s 2 S sera
es rito na ta ao abo de um numero nito de etapas.
i

De ni ~ao 7.5.1 Seja S um onjunto de adeias sobre um alfabeto . Um pro edimento de enumera ~ao para S e uma maquina de Turing que pode efetuar a sequ^en ia de

etapas

q0

2 `

qs x1

#s1 ` q

s x2

#s2    ;

onde xi 2
f#g, si 2 S , de tal modo que qualquer s 2 S e produzido num no nito
de etapas. O estado qs e um estado signi ando membro de S , isto e, quando qs entra, a
adeia seguindo # deve estar em S .

Estritamente falando, um pro edimento de enumera ~ao n~ao pode ser hamado um
algoritmo, uma vez que ele n~ao terminara quando S for in nito. Entretando, ele pode ser
onsiderado um pro esso signi ativo, porque produz resultados previstos e bem-de nidos.
Um onjunto in nito diz-se ontavel se seus elementos podem ser postos em uma
orrespond^en ia um a um om os inteiros positivos. Por isso queremos signi ar que os
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

167

7.5. Maquina de Turing Universal

elementos do onjunto podem ser es ritos numa sequ^en ia 1 2 de tal maneira que
qualquer elemento do onjunto tem um ndi e nito. Nem todo onjunto e ontavel, os
reais por exemplo. Mas deve ar laro que qualquer onjunto para o qual existe um
pro edimento de enumera ~ao e ontavel, uma vez que o pro edimento de enumera ~ao
forne e a sequ^en ia requerida. Porem a re pro a n~ao e verdadeira, isto e, existem alguns
onjuntos ontaveis para os quais n~ao existe nenhum pro edimento de enumera ~ao.
s ;s ;

Exemplo 7.5.2 Seja  = fa; b; g. Podemos mostrar que o onjunto + e ontavel se


pudermos a har um pro edimento de enumera ~ao que produz seus elementos em alguma
sequ^en ia. Uma ordem na qual poderiam apare er as adeias em + e a ordem lexi a,
isto e,
a; b; ; aa; ab; a ; ba; bb; b ; a; b; ; aaa; aab;   

um pro edimento de enumera ~ao para esta sequ^en ia de adeias pode ser des rito pelo
seguinte pseudo- odigo
1. Gerar

2. Repitir o seguinte fato ad in nitum


(a) dupli ar o onteudo da ta desde o # mais a direita ate o smbolo em , mais
a direita.
(b) dar o \su essor" da adeia (na ordem lexi a) a direita do

#, mais a direita.

O passo mais dif il neste pseudo- odigo e o 2.(b). Uma maquina de Turing
realize esta ma ro deveria fazer a seguinte omputa ~ao
qS;0

w`

qS;f

que

( )

su w :

Uma tal maquina de Turing deve ir ate o smbolo mais a direita de w, se for \a" ou
\b", subtitui-lo por \b" ou \ ", respe tivamente. Se for \ ", substitui-lo por \a" e ir para
a esquerda, repetindo este omportamento ate a har um \a" e substitui-lo por \b" ou um
\b" e substitui-lo por um \ ". Mas se w = , ent~ao ele vai substituindo os 's por a's ate
a har #, nesse aso vai para a direita e substitui o \a" por um \b", logo vai ate o bran o
mais a direita e olo a um \a". Finalmente, a mquina de Turing debe retornar ate o #
mais a direita.
k

q3

A seguinte maquina de Turing, om op ~ao de perman^en ia, faz isto. O estado nal e

168

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

q0
q1
q2

a
b

#
2
(q0 ; a; D) (q0 ; b; D) (q0 ; ; D)
(q1 ; 2; E )
(q2 ; b; E ) (q2 ; ; E ) (q1 ; a; E )
(q2 ; a; E ) (q2 ; b; E ) (q2 ; ; E ) (q3 ; #; S )

q3

Uma onsequ^en ia importante da dis uss~ao a ima e o seguinte teorema.


Teorema 7.5.3

O onjunto de todas as maquinas de Turing, apesar de in nito, e ontavel.

~ o: Codi amos todas as m


Demonstra
a
aquinas de Turing usando 0 e 1, omo des rito
na onstru ~ao da maquina de Turing universal. Com esta odi a ~ao onstruimos o
seguinte pro edimento de enumera ~ao.

1. Gerar 0
2. Veri ar se a adeia gerada e uma odi a ~ao de uma maquina de Turing. Se assim
for , es reva esta na ta de sada na forma requerida na de ni ~ao 7.5.1. Sen~ao o
ignore.
3. Gerar a proxima adeia em f0; 1g+, na ordem lexi a.
4. Retornar ao passo 2.
Como qualquer maquina de Turing tem uma des ri ~ao nita, qualquer maquina espe  a sera gerado por este pro esso em algum tempo nito.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

169

7.6. Exer 
 ios

7.6

Exer 
 ios

1. Projete uma maquina de Turing om n~ao mais do que tr^es estados que re onhe a
a linguagem L(a(a + b) ). Assuma que  = fa; bg. E possvel fazer isto om uma
maquina de dois estados?
2. Veri ar o que faz a maquina de Turing do exemplo 7.1.10, quando as entradas s~ao
aba e aaabbbb.
3. Existe alguma entrada para a qual a maquina de Turing do exemplo 7.1.10 entra
em la o in nito?
4. Que linguagem e re onhe ida pela maquina de Turing
M

= hfq0; q1 ; q2; q3 g; fa; bg; fa; b; 2g; ; 2; fq3gi, om


q0
q1
q2
q3

a
q1 ; a; D

) (
(
(q3 ; a; D) (

b
q2 ; b; D
q1 ; b; D
q2 ; b; D

)
) (q3; 2; D)
)

5. Construir maquinas de Turing que re onhe am as seguintes linguagens sobre fa; bg.
(a)
(b)
( )
(d)
(e)
(f)
(g)
(h)
(i)

L = L(aba b)
L = fw = j w j e parg
L = fanbm = n  1; n 6= mg
L = fw = Na(w) = Nb(w)g
L = fanbm an+m = n  0; m  1g
L = fanbn anbn = n  1g
L = fanb2n = n  1g
L = fa2n bn = n  1g
L = fw 2 fa; bg = Na(w) < 2Nb(w)g

Para ada problema, alem de es rever o em detalhes, teste alguns exemplos.


6. Projetar uma maquina de Turing que re onhe a a linguagem

L = fww = w 2 fa; bg+g:


170

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

7. Construir uma m
aquina de Turing que a eite o omplemento da linguagem

L=f

n n n = n  0g

a b

8. Construir uma m
aquina de Turing que omputa a fun ~ao
( ) = w R onde

f w

2 f0 1g+
;

9. Construir uma m
aquina de Turing que ompute a fun ~ao su essor no sistema bin
ario.
10. Construir m
aquinas de Turing para omputar as seguintes fun ~oes para x e y inteiros
positivos representados em unario.
(a)
(b)

( ) = 3x

f x

(
(

f x; y

)=

( )

(
(

f x; y

)=

(d)
(

(f)
(g)

f x; y

)=

(
f x; y

(e)

x
y

x > y

, se
, se

x > y

, se y  x
, sen~
ao

) = 3x + 3y

( ) = x mod 5

f x

(
(

f x; y

)=

x
, se
x2+1 , se
2

x
x

e par
e impar

11. Dar uma sequ^en ia de des ri ~oes instant^aneas da m


aquina de Turing do exemplo
7.1.13
12. Estabele er uma onve ~ao para representar inteiros positivos e negativos em nota ~ao
unaria. Com a sua onven ~ao esbo e a onstru ~ao de um subtrator para omputar
x
y.
13. Projetar diagramas de blo os para m
aquinas de Turing; usando as m
aquinas de
Turing \adi ionador", \substrator", \ 
opias", e \multipli ador"; para omputar as
seguintes fun ~oes para n 2 N .
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

171

7.6. Exer 
 ios

(a)
(b)
( )
(d)

f (n) = n5
f (n) = 2n
f (n) = n!
f (n) = nn!

14. Projetar uma maquina de Turing om alfabeto de entrada  = fa; bg que ompute
a fun ~ao abe a: + ! + , de nida por abe a(w) = o smbolo mais a esquerda
de w. Por exemplo, abe a(aab) = a.
15. Projetar uma maquina de Turing que ompute a fun ~ao f : N ! f0; 1g, de nida
por
(
0 , se n e par
f (n) =
1 , se n e impar
16. Use um diagrama de blo o para esbo ar a implementa ~ao de uma fun ~ao f de nida
para todo w1; w2; w3 2 f1g+ por
f (w1 ; w2; w3 ) = i

onde i e tal que j w j= max(j w1 j; j w2 j; j w3 j) se nenhum dos w's tem o mesmo


omprimento, e i = 0 aso ontrario.
17. Construir maquinas para omputar as seguintes fun ~oes.
(a) f (x) = x + 1
(b) f (x1 ; x2 ; x3) = x2 + 1
( ) Z (x) = 0
(d) C (x) = n para n = 3 e depois generalize.
(e) P (x1; x2 ; : : : ; x ; : : : ; x ) para i = 3 e n = 5 e depois generalize.
i

18. Construir uma maquina de Turing que ompute a fun ~ao f : f0; 1g ! f0; 1g
de nida por:
f (w) = ww

onde w e a adeia resultante de tro ar todo 0 por 1 e todo 1 por 0.


19. Desenhe uma Maquina de Turing que ompute a fun ~ao f : fa; bg ! fa; bg
de nida por
f () = 
f (wa) = f (w)aa
f (wb) = f (w)bb
172

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 7. M
aquinas de Turing

20. Sejam g1 ; : : : ; gm fun ~oes omputaveis de n-variaveis e h uma fun ~ao omputavel de
m-vari
aveis.
Dar argumentos para mostrar que a fun ~ao de n-variaveis
f
= h (g1 ; : : : ; gm) e omputavel. Lembre-se que se x = (x1 ; : : : ; xn ),
(h (g1 ; : : : ; gm ))(x) = h(g1 (x); : : : ; gm (x)).
21. Neste problema suponha que g e h s~ao fun ~oes sobre os naturais de n e n + 2
variaveis, respe tivamente. Ent~ao g e h podem ser usadas para se de nir uma nova
fun ~ao f de n + 1 variaveis omo segue:

( 0) = g (x)
(
+ 1) = h(x; y; f (x; y ))

f x;

f x; y

Esta nova fun ~ao diz-se de nida de g e h por re urs~


ao primitiva. A vari
avel y e
dita vari
avel de re urs~
ao e f diz-se obtido por re urs~
ao (primitiva) sobre y . A
variavel x e dita os par^ametros da re urs~ao.
Por exemplo, a fun ~ao
h(x; y; z ) = z + 1, pois

f x; y

) =

e obtida por re urs~ao de g (x) =

( 0) = x + 0 = x = g (x)

f x;

e
(

f x; y

+ 1) = x + (y + 1) = (x + y ) + 1 = f (x; y ) + 1 = h(x; y; f (x; y ))

Mostre que (pode ser dado um argumento por diagramas de blo o) se g e h, de nidas
omo a ima, forem omputaveis e f e de nida por re urs~ao primitiva de g e h, ent~ao
f tamb
em e omputavel.
22. Dar uma de ni ~ao formal de uma maquina de Turing om uma ta semi-in nita.
D^e argumentos para mostrar que a lasse das maquinas de Turing om tas semiin nitas e equivalente a lasse das maquinas de Turing padr~ao.
23. Dar uma de ni ~ao formal de um automata a pilha determinsti o om duas pilhas.
D^e argumentos para mostrar que a lasse dos automatas a pilha determinsti os om
duas pilhas e equivalente a lasse das maquinas de Turing om tas semi-in nitas .

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

173

7.6. Exer 
 ios

174

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8
Hierarquia das Linguagens Formais

Nosso objetivo imediato aqui sera examinar as linguagens asso iadas as maquinas de
Turing. Como as maquinas de Turing podem efetuar qualquer espe ie de omputa ~ao
algortmi a, esperamos que a famlia das linguagens asso iadas om elas seja bastante
ampla. Ela in lui n~ao somente as linguagens regulares e livres de ontexto, mas tambem
varias outras (lineares, determinsti as livres de ontexto, et .) n~ao tratadas profundamente aqui. A quest~ao n~ao trivial e se existe alguma linguagem para a qual, n~ao existe
uma maquina de Turing que a a eite. Responderemos essa quest~ao mostrando, primeiro,
que existem mais linguagens do que maquinas de Turing. A prova e urta e elegante,
mas n~ao onstrutiva, e nos forne e pou o entendimento no problema. Por isso, estabele eremos a exist^en ia de linguagens n~ao re onhe veis por maquinas de Turing atraves
de exemplos mais expl itos, que realmente nos permita identi ar tais linguagens. Uma
outra via de investiga ~ao seria examinar a rela ~ao entre maquinas de Turing e ertos tipos
de gramati as estabele endo uma onex~ao entre essas gramati as e aquelas que s~ao regulares e livres de ontexto. Tambem veremos que existe uma lasse intermediaria entre as
linguagens re onhe idas por maquinas de Turing e aquelas re onhe idas por aut^omatos
a pilha n~ao determinsti os. Isto leva a uma hierarquia de gramati as e portanto a um
metodo para lassi ar famlias de linguagens.
Muitas das dis uss~oes aqui, estritamente falando, s~ao validas somente para linguagens
que n~ao in luem a adeia vazia. Esta restri ~ao provem do fato de que as maquinas de
Turing, omo temos de nidos, n~ao podem a eitar a adeia vazia. Para evitar ter de
refazer a de ni ~ao ou ter de adi ionar repetidas observa ~oes, assumimos ta itamente que
as linguagens dis utidas aqui, a menos que expli itamente se diga o ontrario, n~ao ontem
. E laro que podemos, trivialmente, restabele er tudo de modo a in luir a adeia vazia.
As famlias de linguagens vistas aqui foram lassi adas em termos dos modelos omputa ionais que a des revem, n~ao onsiderando o fator da omplexidade ou e i^en ia de
seu algoritmo de pertin^en ia (se e linear ou n~ao, por exemplo). Em teoria da omputa ~ao, ha uma preo upa ~ao maior em introduzir modelos omputa ionais e em estudar
sua poten ialidade, isto e, determinar o que podemos realizar no modelo em vez de omo podemos resolver um problema nesse modelo. Mais na prati a da omputa ~ao, a
175

8.1. Linguagens re ursivas e re ursivamente enumeraveis

e i^en ia dos algoritmos que resolvem os problemas e fundamental, e portanto este fator
tambem deve ser onsiderado numa \teoria da omputa ~ao ". Por esta raz~ao, tambem
vamos analisar a e i^en ia dos algoritmos, em termos de tempo e de espa o. Assim, uma
outra maneira de lassi ar linguagens e usar uma maquina de Turing omo o aut^omato
omum subja ente, mas onsiderar a omplexidade omo fator de distin ~ao. Para isso,
de nimos, na se ~ao 8.6. algumas no ~oes basi as sobre omplexidade omputa ional, o que
nos permite lassi ar linguagens pela omplexidade de seus algoritmos de pertin^en ia.

8.1 Linguagens re ursivas e re ursivamente enumeraveis


Come aremos dando algumas terminologias para as linguagens asso iadas as maquinas
de Turing. Faremos algumas distin ~oes sutis entre linguagens para as quais existe uma
maquina de Turing que a re onhe e e linguagens para as quais existe um algoritmo membro
a membro. Isto porque uma maquina de Turing n~ao ne essariamente para para uma
entrada que n~ao a eita.
De ni ~ao 8.1.1 A linguagem L e re ursivamente enumeravel se existe uma maquina
de Turing,

, que re onhe e

L, isto e,

L = L(M ):

Esta de ni ~ao n~ao diz nada om respeito ao que a onte e om os 62 L, pois, neste
aso pode parar num estado n~ao nal ou ar num la o in nito. No entanto, podemos
exigir mais e requerer que a maquina diga quando ou n~ao uma dada entrada faz parte da
linguagem.
w

De ni ~ao 8.1.2 Uma linguagem L sobre  e re ursiva se existe uma maquina de Turing
que re onhe e L e que para para qualquer
algoritmo membro a membro para L.

2 + .

Noutras palavras, se existe uma

Se uma linguagem e re ursiva, ent~ao existe um pro edimento de enumera ~ao fa ilmente
onstruvel. Suponha que e uma maquina de Turing que determina os elementos de
uma linguagem re ursiva L. Primeiro onstruimos uma outra maquina de Turing, digamos
, que gera todas as adeias em + numa ordem propria, digamos 1 2 . As adeias
assim geradas, se tornam as entradas de , a qual e modi ada de tal modo que ela
es reve sobre sua ta somente se elas s~ao membros de L.
Por outro lado, n~ao e fa il de v^er que tambem existe um pro edimento de enumera ~ao
para toda linguagem re ursivamente enumeravel. N~ao podemos usar o argumento a ima
porque se algum j 62 L, a maquina , quando ini iar om j na ta, pode nun a parar
e portanto nun a obter a adeia em L que segue j na enumera ~ao. Para estar seguro de
M

w ;w ;:::

176

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

w1

w2

w3

w4

primeiro movimento

segundo movimento

terceiro movimento

quarto movimento

Figura 8.1: pro edimento de enumera ~ao das omputa ~oes de uma maquina de Turing
.

que isto n~ao a onte e, a omputa ~ao e efetuada de um modo diferente. Primeiro fazemos
gerar 1 e deixamos exe utar um movimento n^ele. Ent~ao fazemos gerar 2 e
deixamos
exe utar um movimento sobre 2 , seguido pelo segundo movimento sobre
os isto, geramos 3 e fazemos uma etapa em 3 , a segunda etapa em 2 , a ter eira
1 . Ap
em 1 e assim por diante. A ordem omo isso e feito e mostrado na gura 8.1. Disto,
segue que
nun a entrara num la o in nito. Como 2 L e gerado por e a eito por
num numero nito de etapas, toda adeia em L sera produzida por .

M
w

w
M

M
w

M
w
M

 fa il v^er que ada linguagem para o qual um pro edimento de enumera ~ao existe e
E
re ursivamente enumeravel. Para v^er isso ompararemos a adeia de entrada om as
adeias sequen ialmente geradas pelo pro edimento de enumera ~ao. Se 2 L, em algum
momento onseguiremos o asamento e o pro esso parara. Dessa onstata ~ao, junto om
a prova do teorema 7.5.3, podemos on luir que o onjunto de todas as maquinas de
Turing e re ursivamente enumeravel.

As de ni ~oes 8.1.1 e 8.1.2 nos da uma pequena ideia sobre a natureza das linguagens
re ursivas e re ursivamente enumeraveis. Estas de ni ~oes d~ao nomes as duas famlias
naturais de linguagens asso iadas a maquinas de Turing, porem elas n~ao nos dizem nada
da natureza da representa ~ao dessas linguagens nessas famlias. Assim, gostaramos de
ter respostas para as perguntas: \existem linguagens re ursivamente enumeraveis que
n~ao s~ao re ursivas?" e \Existem linguagens, des rivveis de alguma forma, que n~ao s~ao
re ursivamente enumeraveis?".
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

177

8.2. Linguagens que N~ao s~ao Re ursivamente Enumeraveis

8.2 Linguagens que N~ao s~ao Re ursivamente Enumeraveis


Podemos determinar a exist^en ia de linguagens que n~ao s~ao re ursivamente enumeraveis
de varias maneiras. Uma delas e su inta e usa um resultado da matemati a fundamental
e elegante.

Teorema 8.2.1 Seja S um onjunto in nito ontavel. Ent~ao, o onjunto das partes de
S , }(S ), n~
ao e ontavel.
~ o: Seja
Demonstra
a

= fs1 ; s2 ; : : :g uma enumera ~ao qualquer de S . Ent~ao, ada


( ) (i.e. X  S ) pode ser representado por uma sequ^en ia (in nita) de 0's e 1's,
om a posi ~ao i tendo um 1 se e somente se si 2 X . Assim, por exemplo, o onjunto
fs2 ; s3 ; s5 ; s8 g 
e representado pela sequ^en ia 0110100100   , enquanto fs1 ; s3 ; s5 ; s7 ; : : :g e
representado pela sequ^en ia 10101010   . Claramente, qualquer elemento de }(S ) pode
ser representado por uma tal sequ^en ia e qualquer sequ^en ia representa uni amente um
elemento de }(S ). Suponhamos que }(S ) e ontavel, ent~ao, seus elementos podem ser
es ritos numa ordem, digamos X1 ; X2 ; X3 ; : : :. Portanto podemos olo ar estes numa
tabela omo a seguinte
S

X 2 } S

X1

x11 x12 x13 x14   

X2

x21 x22 x23 x24   

X3

x31 x32 x33 x34   

X4

x41 x42 x43 x44   

..
.

..
.

onde ada xij 2 f0; 1g. Como essa tabela ontem todas as sequ^en ias in nitas sobre
f0; 1g, ela deveria onter a seguinte sequ^
en ia
X

= x11 x22 x33 x44   

onde
xii

1
0

se
se

xii
xii

=0
=1

Logo, X = Xk , para algum Xk na tabela. No entanto X kk 6= Xkk , para todo k.


Portanto, X n~ao esta na tabela. Esta ontradi ~ao gera um impasse logi o que a evitaremos
retirando a hipotese de que }(S ) e ontavel.
Este tipo de argumento, pelo fato de envolver elementos diagonais na tabela, e hamado
diagonaliza ~ao. Este metodo, foi usado, originalmente, pelo matemati o G.F. Cantor para
demonstrar a n~ao ontabilidade dos numeros reias.

178

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

Como onsequ^en ia, podemos tirar que existem menos maquinas de Turing que linguagens, e portanto deve existir alguma linguagem que n~ao e re ursivamente enumeravel.
Teorema 8.2.2

enumeravel.

 6= ;, existe uma linguagem que n~ao e re ursivamente

Para qualquer

Pela de ni ~ao de linguagem, dada no primeiro aptulo, uma linguagem e um sub onjunto de  , e portanto o onjunto de todas as linguagens e exatamente
( ), o qual pelo teorema anterior n~ao e ontavel. Mas, pelo teorema 7.5.3, o onjunto
de todas as maquinas de Turing e ontavel, portanto devem existir algumas linguagens
que n~ao s~ao re ursivamente enumeravel.
Esta demonstra ~ao, embora breve e simples, e altamente n~ao satisfatoria, pois e ompletamente n~ao onstrutiva. Ela de lara a exist^en ia da linguagem, mas n~ao nos diz omo
ela e. A seguir veremos omo obter uma tal linguagem de modo mais expl ito.
~ o:
Demonstra
a

Teorema 8.2.3 Existe uma linguagem re ursivamente enumer


avel ujo omplemento n~ao
e re ursivamente enumeravel.

~ o: Seja  = f g, e onsidere o onjunto de todas as m


Demonstra
a
aquinas de Turing om este alfabeto. Como esse onjunto e ontavel, podemos asso iar a ela uma
ordem 1 2 . Cada maquina de Turing, , tem uma linguagem re ursivamente enumeravel, ( ), asso iada. Re ipro amente, para ada linguagem re ursivamente
enumeravel sobre , existe alguma maquina de Turing que a re onhe e.
Agora, onstruiremos uma nova linguagem re ursiva, L, tal que para ada  0, a
adeia esta em L se e somente se 2 ( ). E laro que L esta bem de nida, uma
vez que e baseada na assertiva 2 ( ), e portanto 2 L deve ser verdadeira ou falsa.
Em seguida, onsideramos o omplemento de L, isto e
a

M ;M ;:::

Mi

L Mi

L Mi

L Mi

L=f

= a

62 ( )g
L Mi

(8.1)

que tambem esta bem de nida mas, omo mostraremos, n~ao e re ursivamente enumeravel.
Se for re ursivamente enumeravel, ent~ao deve existir uma maquina de Turing, digamos
, tal que

Mk

L= ( )
Considere a adeia . Ela esta em L ou em L?. Suponha que

(8.2)

L Mk :

impli a que

ak

2 L. Por 8.2 isso

2 ( )

L Mk :

Mas por 8.1 isso tambem impli a que


Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

179

8.2. Linguagens que N~ao s~ao Re ursivamente Enumeraveis


k

Inversamente, se assumirmos que

62 L:

2 L, ent~ao ak 62 L e por 8.2 temos

62 L(Mk ):

Mas por 8.1, obtemos que


k

2 L:

Essa ontradi ~ao n~ao tem sada, e devemos on luir que nossa hipotese de que L e
re ursivamente enumeravel e falsa.
Para ompletar a demonstra ~ao, devemos, ainda, mostrar que L e re ursivamente
enumeravel. Podemos usar para isso o pro edimento de enumera ~ao para maquinas de
Turing. Dado i, primeiro a hamos , ontando o numero de 's. Ent~ao, usamos o
pro edimento de enumera ~ao para maquinas de Turing para a har i. Finalmente, damos
sua des ri ~ao e i para uma maquina de Turing universal, U , que simula a a ~ao de
sobre i. Se i 2 L, a omputa ~ao efetuada por U parara, de modo que L e
re ursivamente enumeravel.
A prova desse teorema exibe expli itamente, atraves de 8.1, uma linguagem bemde nida que n~ao e re ursivamente enumeravel. Isso n~ao quer dizer que existe uma interpreta ~ao intuitiva fa il de L. Seria dif il exibir mais do que alguns membros triviais
dessa linguagem. Entretanto L foi de nida propriamente.
a

Teorema 8.2.4 Se uma linguagem L e seu omplementar L s~ao ambas re ursivamente


enumeraveis, ent~
ao ambas as linguagens s~ao re ursivas.

~ o: Se L e L s~ao ambas re ursivamente enumer


Demonstra
a
aveis, ent~ao existem maquinas
de Turing e que servem omo pro edimentos de enumera ~ao para L e L, respe tivamente. A primeira produzira 1 2 em L, e a segunda b1 b2 em L. Suponha,
agora, que e dado qualquer 2 +. Primeiro deixamos gerar 1 e o omparamos
om . Se eles n~ao oin idem deixamos gerar b1 e o omparamos om . Se pre iso
ontinuamos permitindo gerar 2, e ent~ao gerar b2, e assim por diante ate uma
delas ( ou ) gerar . Como ( ) [ ( ) = [ L = +, tera, mais edo ou mais
tarde, que ser gerado por alguma das maquinas. Se foi obtida atraves de , ent~ao
2 L, aso ontrario 2 L. O pro esso e um algoritmo de pertin^en ia para L e L.
Portanto, ambas s~ao re ursivas.
Observe que se L e re ursiva, ent~ao L tambem e re ursiva, e onsequentemente ambas
s~ao re ursivamente enumeraveis.
Disso podemos on luir que a famlia das linguagens re ursivamente enumeraveis e a
famlia das linguagens re ursivas n~ao s~ao id^enti as. A linguagem L no teorema 8.2.3
M

w ;w ;:::

w ;w ;:::

L M

L M

180

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

esta na primeira famlia mas n~ao na segunda famlia. Logo, omo toda linguagem re ursiva e, trivialmente, re ursivamente enumeravel, podemos on luir que a famlia das
linguagens re ursivas esta ontida, propriamente, na famlia das linguagens re ursivamente enumeraveis.
Teorema 8.2.5

Existe uma linguagem re ursivamente enumeravel que n~ao e re ursiva.

~ o: Considere a linguagem
Demonstra
a

L do teorema

8.2.3. Esta linguagem e, re ursivamente enumeravel, mas seu omplemento n~ao o e. Logo, por de ni ~ao, L n~ao e
re ursiva.
Podemos on luir, ent~ao, que realmente existem linguagens, bem de nidas, para as
quais n~ao se pode onstruir um algoritmo de pertin^en ia.

8.3 Gramati as Irrestritas


Para investigar a onex~ao entre as linguagens re ursivamente enumeraveis e as gramati as,
retornaremos a de ni ~ao geral de uma gramati a. Na de ni ~ao 1.2.4, as regras de produ ~ao poderiam ser de qualquer forma, mas varias restri ~oes foram feitas, depois, para
se obter gramati as espe  as. Se tomarmos a forma geral n~ao impondo restri ~oes, obteremos uma gram
ati a irrestrita. Assim, numa gram
ati a irrestrita, qualquer numero
de variaveis ou terminais podem o orrer em qualquer ordem, dentro de uma produ ~ao.
Existe somente uma ligeira restri ~ao:  n~ao e permitido no lado esquerdo da produ ~ao.
Exemplo 8.3.1

Uma gramati a irrestrita para gerar a linguagem

L = fanb2n an = n  1g
e des rita a seguir.

S ! aAbba
aAb ! aabbbA j ab
bAb ! bbA
bAa ! Bbaa
bB ! Bb
aB ! aA
A adeia aaabbbbbbaaa pode ser derivada dessa gramati a omo segue
S

) aAbba
) aabbBbbaa
) aaabbbbAbbaa
) aaabbbbBbbaaa
) aaaBbbbbbbaaa

) aabbbAba
) aabBbbbaa
) aaabbbbbAbaa
) aaabbbBbbbaaa
) aaaAbbbbbbaaa

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

) aabbbbAa
) aaBbbbbaa
) aaabbbbbbAaa
) aaabbBbbbbaaa
) aaabbbbbbaaa

) aabbbBbaa
) aaabbbAbbbaa
) aaabbbbbBbaaa
) aaabBbbbbbaaa

181

8.3. Gramati as Irrestritas


Exemplo 8.3.2 Uma gramati a irrestrita para gerar a linguagem

L fanbn anbn = n  g
=

e des rita a seguir.

S ! aAbab
aAb ! aabbbA
bAb ! bbA
bAa ! baB
aBa ! aaB
aBb ! Caabb
aCa ! Caa
bC ! Cb
aCb ! aAb

ab

Exemplo 8.3.3 Uma gramati a irrestrita para gerar a linguagem

L fan = n e uma pot^en ia de 2g


=

e des rita a seguir.


S ! ISaaF
Sa ! aaS
aSF ! BaF
aB ! Ba
IB ! IS
Ia ! a

aa

As linguagens dos exemplos a ima, s~


ao todas linguagens re ursivas que n~
ao s~
ao livres
de ontexto. Exemplos de linguagens re ursivamente enumer
avel que n~
ao s~
ao re ursivas
s~
ao dif
 eis de serem des ritos (veja por exemplo o teorema

8.2.3) e no entanto, exis-

tem gram
ati as irrestritas para tais linguagens, elas s~
ao altamente omplexas.

Como

teremos oportunidade de v^
er, as gram
ati as irrestritas s~
ao muito mais poderosas do que
outras formas mais restritas, omo gram
ati as regulares e livres de ontexto.

Realmen-

te, as gram
ati as irrestritas orrespondem 
a maior fam
lia de linguagens que esperamos
re onhe er por meios me ^
ani os. Ou seja, as gram
ati as irrestritas geram exatamente a
fam
lia das linguagens re ursivamente enumer
aveis.

Teorema 8.3.4 Qualquer linguagem gerada por uma gramati a irrestrita e re ursivamente enumeravel.

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade
182

Cap
tulo 8. Hierarquia das Linguagens Formais

~ o: A gramati a de ne um pro edimento de enumera ~ao para toda adeia


Demonstra
a

na linguagem. Por exemplo, podemos listar toda w


S

2 L tal que

w;

isto e, w e derivado em uma etapa. Como o onjunto de produ ~oes da gramati a e nito,
havera um numero nito de tais adeias. Em seguida, listamos todas w
que podem
ser derivadas em duas etapas

2L

) )
x

w;

e assim por diante. Podemos simular essas deriva ~oes numa maquina de Turing, e portanto
temos um pro edimento de enumera ~ao para a linguagem. Portanto, ela e re ursivamente
enumeravel.
Esta parte da orrespond^en ia entre linguagens re ursivamente enumeraveis e gramati as
irrestritas n~ao e surprendente. A gramati a gera adeias por um pro esso algortmi o bem
de nido. Portanto as deriva ~oes podem ser dadas por uma maquina de Turing. Para mostrar a re pro a des revemos omo qualquer maquina de Turing pode ser imitada por uma
gramati a irrestrita. Esta parte n~ao e fa il. A prova e longa e muito te ni a, embora a
ideia subja ente seja bastante simples. Por isso, daremos somente um esbo o da prova.

Para toda linguagem re ursivamente enumeravel, , existe uma gramati a


irrestrita G, tal que
Teorema 8.3.5

~ o: (Esbo o) Se
Demonstra
a

L=

( )

L G :

e re ursivamente enumeravel, ent~ao, por de ni ~ao, existe uma maquina de Turing, M , que a re onhe e. Pretendemos onstruir uma gramati a,
G, tal que L(G) = L(M ). Isto signi a que queremos ter
S

para exatamente aqueles

=

G;

para os quais
q0 w

`M


xq y:

Obteremos isso onstruindo G de tal modo que exista uma orrespond^en ia entre a
sequ^en ia de des ri ~oes instant^aneas de M e as formas senten iais de G. Como M ome a
om w, as deriva ~oes de G devem terminar nesta adeia. De fato, a deriva ~ao sera a
reversa da omputa ~ao de M . Alem disso, omo a deriva ~ao ome a om S , devemos
primeiro derivar dela uma forma senten ial que represente a on gura ~ao de parada xqf y ,
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

183

8.3. Gramati as Irrestritas

da qual, por seu turno, devemos derivar q0 w. O que queremos, ent~ao, e onstruir G, tal
que
S

=) xqf y =) q0 w

se e somente se w 2 L(M ). Existem algumas ompli a ~oes aqui. Uma delas e que,
realmente, queremos S =) w, e devemos nos livrar de q0 . Para isto introduzimos um
smbolo espe ial #, o qual e asso iado om a variavel de estado na des ri ~ao instant^anea,
de tal modo que ela possa ser eliminada na ultima etapa. Uma outra ompli a ~ao pode
provir dos possveis bran os nas des ri ~oes instant^aneas intermediarias. Esses tambem
devem ser eliminados pela gramati a. Quando olo amos todas essas ondi ~oes juntas,
des obrimos que a gramati a G tera de ter varios onjuntos de produ ~oes:
1. Um onjunto que permite todas as deriva ~oes da forma
S

=) #xqf y;

para todos os x e y possveis e todo estado nal qf , om bran os possveis a direita


e a esquerda de #xqf y ,
2. Um onjunto que permite a deriva ~ao
#xqf y =) #q0 w;
sempre que q0 w ` M

xqf y;

3. Um onjunto para se livrar de #q0 e quaisquer possveis bran os.


Exemplo 8.3.6 Seja

= hQ; ;

; ; q0 ;

2; F i uma maquina de Turing om

 Q = fq0 ; q1 g,


 = f0; 1g,

= f0; 1; 2g,

 F

= fq1 g e

 (q0 ; 0) = (q0 ; 0; D ) e (q0 ; 2) = (q1 ; 2; E ).


Esta maquina a eita a linguagem L(00 ). Seguindo as sugest~oes poderemos onstatar
que as exig^en ias ser~
ao satisfeitas pela gramati a G = hV; T; S; P i, om
 V

184

= fS; A; 2; #; q0 ; q1 g,
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

 T = f0; 1g.
O primeiro sub onjunto das produ ~oes de
S
A

! 2S j S 2 j #A,
! 0A j 1A j A 0 j A 1 j

e

q1 :

E fa il v^er que podemos usar essas produ ~oes para gerar qualquer adeia #xq1 y , om
x; y 2 f0; 1g , pre edida e seguida por um n
umero arbitrario de bran os. O segundo
onjunto de produ ~oes e

0q0 ! q00,
q 1 02 ! 0q 0 2,
q 1 12 ! 1q 0 2,
q1 22 ! 2q0 2.
Essas produ ~oes re etem mudan as feitas na des ri ~ao instant^anea efetuadas por .
Por exemplo, a sub adeia q0 0 toma o lugar de 0q0 quando a transi ~ao (q0 ; 0) = (q0 ; 0; D) e
usada. Pou os testes devem nos onven er de que essas regras tornam possvel a deriva ~ao
x =) y , sempre que y ` x.
Finalmente, o ultimo onjunto

#q0 ! ,
2 ! ,
e su iente para se livra de

#q0 e quaisquer bran os.

Olhemos, agora, a omputa ~ao, em


q0

M,

que a eita a adeia

00.

00 ` 0q0 0 ` 00q02 ` 0q102:

Uma deriva ~ao orrespondente, em

G,

dessa adeia e

=) S 2 =) #A2 =) #0A2 =) #0A02 =) #0q1 02 =) #00q02 =)


#0q0 02 =) #q0 002 =) #q0 00 =) 00:

Ignorando a mar a espe ial # e bran os, vemos que parte dessa deriva ~ao e, omo
alegamos, a sequ^en ia de des ri ~oes instant^aneas da maquina de Turing em ordem reversa.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

185

8.4. Linguagens Sensveis ao Contexto


8.4

Linguagens Sens
veis ao Contexto

Podem serem de nidas diversas famlias de linguagens formais mais abrangentes que a
famlia das linguagens livres de ontexto, porem menos geral que a famlia das linguagens
re ursivas. Cada uma destas famlias podem ser vistas omo uma lasse de linguagens geradas por gramati as om tipos de produ ~oes mais gerais que as produ ~oes das gramati as
livres de ontexto, mas om algum tipo de restri ~ao ou, do ponto de vista de aut^omatos,
omo erto tipo de maquinas de Turing que seja mais poderosa que os aut^omatos a pilha
n~ao determinsti os. A mais onhe ida e interessante destas famlias de linguagens s~ao as
linguagens sensveis ao ontexto, as quais s~ao geradas pelas gramati as sensveis ao
ontexto ou, equivalentemente, re onhe idas por aut^omatos limitados linearmente.
8.4.1

Gram
ati as Sens
veis ao Contexto

No aptulo 1, dimos a no ~ao geral de gramati a, e nos aptulos posteriores fomos restringindo a forma das produ ~oes na gramati a ate n~ao se ter nenhuma restri ~ao (gramati as
irrestritas). Uma outra possibilidade de se restringir produ ~oes numa gramati a, de forma
que elas sejam menos permissiva que as produ ~oes das gramati as livres de ontexto, e
por um ontexto.

De ni ~ao 8.4.1 Seja G = hV; T; S; P i uma


sensvel ao ontexto se toda produ ~ao v

j v jj w j

, isto 
e, a forma senten ial

gram
ati a irrestrita.

em

P,


e uma

gramati a

tem a seguinte propriedade:

tem omprimento maior ou igual a adeia

v.

Observe que se eliminamos -produ ~oes de uma gramati a livre de ontexto, a gramati a
resultante sempre sera sensvel ao ontexto. Assim, podemos dizer que toda linguagem
livre de ontexto (que n~ao ontenha ) e sensvel ao ontexto. Por outro lado existem
gramati as que s~ao sensveis ao ontexto mas que n~ao s~ao livres de ontexto. A seguir,
um exemplo de gramati a sensvel ao ontexto que gera uma linguagem que n~ao e livre
de ontexto.

Exemplo 8.4.2

Uma gram
ati a sens
vel ao ontexto

G = hV; T; S; P i,

para gerar a lin-

guagem

L = fanbnan = n  1g

e des rita a seguir.

1.

V = fS; A; B; C g

2.

T = fa; bg

186

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

3. P e o seguinte onjunto de produ ~oes:


S ! aAba j aba
aAb ! aabbB
Bb ! bB
Ba ! Caa j aa
bCa ! CbabC ! Cb
aCb ! aAb

Observe que a gramati a irrestrita do exemplo 8.3.3 e sensvel ao ontexto, mas as


gramati as irrestritas dos exemplos 8.3.1 e 8.3.2 n~ao s~ao sensveis ao ontexto, pois elas
ontem uma produ ~ao (aAb ! ab) a qual o lado direito da produ ~ao e menor que o
lado esquerdo. Porem, isso n~ao signi a que as respe tivas linguagens geradas por essas
gramati as n~ao sejam sensveis ao ontexto. De fato, as linguagens

L1 = fanb2nan = n  1g
e

L2 = fanbnan bn = n  1g
s~ao sensveis ao ontexto.

Uma gramati a sensvel ao ontexto que gera a linguagem L1 e a seguinte:


S ! aAbba j abba
aAb ! aabbbB
Bb ! bB
Ba ! Caa j aa
bCa ! Cba
bC ! Cb
aCb ! aAb

Uma gramati a sensvel ao ontexto que gera a linguagem L2 e a seguinte:


S ! aAbab j abab
aAb ! aabbB
Bb ! bB
Ba ! aC
aCb ! Daabb j aabb
Da ! aD
bDa ! Eba
bE ! Eb
aE ! aA

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

187

8.4. Linguagens Sensveis ao Contexto


Observe que nas gramati as livres de ontexto as produ ~oes tem a seguinte forma:
A
! w, onde A 2 V e w 2 (V [ T ) , a qual signi ava que uma o orr^en ia, numa forma
senten ial, da variavel A pode ser substituida pela adeia w, independente do resto das
omponentes da forma senten ial. As gramati as sensveis ao ontexto t^em uma forma
normal, da seu nome, nas quais esta tro a so sera possvel de realizar quando parte do
que estiver de junto (na direita e na esquerda) da variavel A na forma senten ial for uma
determinada adeia (seu ontexto).

De ni ~ao 8.4.3 Seja G = hV; T ; S; P i uma gramati a sensvel ao ontexto.


forma normal SC se todas as produ ~oes em P t^em a seguinte forma:
x1 Ax2

onde A

V , x1 ; x2

2( [
V

)

e w

2(

G est
a na

! 1
[ )+

x wx2 ;

, ou seja w 
e uma forma senten ial n~
ao

vazia.

Toda gramati a sensvel ao ontexto tem uma gramati a sensvel ao ontexto na forma
normal SC.

Teorema 8.4.4

Se G

V; T ; S; P


e uma gram
ati a sens
vel ao ontexto, ent~
ao existe


L(G ).

b = Vb ; T ; S; Pb

uma gram
ati a sens
vel ao ontexto G

( )=

na forma normal SC tal que L G

ser
~ o: A onstru ~ao de G
Demonstra
a
a dada em duas etapas.
1

Etapa1: Esta etapa e similar a etapa 1 da forma normal de Chomsky. Construir a

partir de G uma gramati a, G1 = hV1 ; T ; S; P1 i, introduzindo, para ada a 2 T , uma


nova variavel Ba e a produ ~ao Ba ! a. Para ada produ ~ao, ujo lado esquerdo ou
direito seja de omprimento maior do que um, substitua ada o orr^en ia de um smbolo
terminal, digamos a, por sua respe tiva variavel asso iada (no aso, Ba ). Fa a o mesmo
om as eventuais produ ~oes ujo lado esquerdo for um smbolo terminal. No m dessa
etapa, temos uma gramati a G1 , ujas produ ~oes t^em a forma
X

om X

eY

2 [
V

(8.3)

Y;

, ou
B1



Bm

! 1
C

om m  n, e Bi ; Cj 2 V1 , para ada i = 1; : : : ; m e
L(G1 ) = L(G) e G1 ontinua sendo sens
vel ao ontexto.

188

(8.4)

Cn ;

 fa il v^er que


= 1; : : : ; n . E

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

Etapa 2:
B1



Construir a partir de G uma nova gram


ati a, G, substituindo ada produ
~
ao

! 1

Bm

Cn em P1 , om m

n que n~
ao esteja na forma normal SC, pode ser

substituida pelo seguinte onjunto de produ


~
oes:

B1 : : : Bm

Z1 B2 : : : Bm

Z1 B2 : : : Bm

Z1 Z2 B3 : : : Bm

.
.
.

Z1 : : : Zm

1 Bm

Z1 : : : Zm

1 Cm : : : Cn

C1 Z2 : : : Zm

Z1 : : : Zm

1 Cm : : : Cn

1 Cm : : : Cn

C1 Z2 : : : Zm

1 Cm

C1 C2 Z3 : : : Zm

: : : Cn

1 Cm

: : : Cn

.
.
.
C1 : : : Cm

2 Zm 1 Cm : : : Cn

onde Z1 ; : : : ; Zm

C1 : : : Cn

ao vari
aveis novas. Assim, laramente, estas novas produ
~
oes satis1 s~

fazem a forma normal SC. Logo, a gram


ati a G, resultante, est
a na forma normal SC e,

laramente, L(G) = L(G1 ) = L(G).

Observe, que uma gram


ati a sens
vel ao ontexto, obtida usando o algoritmo a ima,
tem omo propriedade extra que o lado esquerdo das produ
~
oes s~
ao sempre adeias de
vari
aveis.

Exemplo 8.4.5 Seja a gram


ati a sens
vel ao ontexto do exemplo

Etapa 1:

1. V1 =
2. T =

8.4.2.

Constru
~
ao de G1

f
f g

S; A; B; C; Ba ; Bb

a; b

3. P 
e o seguinte onjunto de produ
~
oes:

Ba Ab
BBb
BBa
Bb C B
Bb C

j a b
! a a b b
! b
! a aj a
a !
b a
! b
b ! a
b

Ba C B

Ba AbBb

B B Ba

B B B B B

B B

CB B

B Ba

CB B

CB

B AB

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
189

8.4. Linguagens Sens


veis ao Contexto

b
Constru ~ao de G

Etapa 2:

1. Vb = fS; A; B; C; Ba ; Bb ; g
2.

3.

= fa; bg

e o seguinte onjunto de produ ~oes:

Ba AbBb

Ba ABb
Z1 ABb
Z1 Z2 Bb

!
!
!

Z3 B

!
!
!

BBa

Z4 C Ba
Z4 Z5 Ba
Z4 Z5 Ba
C Z5 Ba

Bb C

Z6 Bb

Ba Ba Bb Bb

Z1 Z2 Bb Bb

!
!

Ba Z2 Bb Bb
Ba Ba Bb Bb

transformando a regra:BBb

Z 3 Bb

Bb B

Z3 B

C Ba B a

!
!
!
!
!

Ba Ba

Z 4 C Ba

ja est~
ao na forma normal SC
transformando a regra:Bb C Ba

C Bb B a

Z4 Z5 Ba
Z4 Z5 Ba
C Z 5 Ba

C Bb Ba

!
!
!

Z6 C

transformando a regra:Bb C

C Bb

Z6 Bb

Ba C Bb

8.4.2

transformando a regra:Ba ABb

Bb B

Bb C Ba

Z6 C

ja est
a na forma normal SC

Z1 Z2 Bb

Ba Z2 Bb Bb

BBb

Ba Bb Ba

Z1 ABb

Z1 Z2 Bb Bb

Z3 Bb

C Bb

Ba ABb

ja est
a na forma normal SC

Aut^
omatos Limitados Linearmente

Um aut^omato limitado linearmente e, simplesmente, uma maquina de Turing n~ao determinsti a a qual no lugar de ter uma ta poten ialmente in nita sob a qual omputa,
ela e restrita a por ~ao da ta que ontem a entrada mais dois quadrados extras, um em
ada extremo, ontendo mar adores de in io e m de ta, respe tivamente. Assim, um
aut^
omato limitado linearmente (ALL) 
e uma maquina de Turing satisfazendo as
seguintes onsi ~oes:

190

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 8. Hierarquia das Linguagens Formais


1. O alfabeto de entrada ontem dois smbolos espe iais  e $, usados omo mar adores
do in io e m da ta, respe tivamente.
2. N~ao existem movimentos a esquerda de  nem a direita de $
3. Nada pode ser es rito sobre estes smbolos.

De ni ~ao 8.4.6 Um aut^omato limitado linearmente (ALL), e uma oito-tupla


M = hQ; ; ; ; q0 ; ; $; F i, tal que

 hQ; ; ; ; q0; 2; F i e uma maquina de Turing padr~ao (de ni ~ao 7.1.1),
  e $ s~ao smbolos espe iais de , hamados mar ador do in io da ta e mar ador do nal da ta, respe tivamente, e

A fun ~ao de transi ~ao : Q   ! }(Q   fD; E g) tem as seguintes restri ~oes
para todo q 2 Q e a 2  f; $g:

{ (q; )  Q  fg  fDg


{ (q; $)  Q  f$g  fE g
{ (q; a)  Q  ( f$g)  fD; E g
Como todo aut^omato, um ALL re onhe e uma linguagem, mas neste aso a linguagem
re onhe ida sera um sub onjunto de  f; $g em vez de um sub onjunto de , pois os
smbolos  e $ s~ao meros mar adores. Assim, a linguagem re onhe ida por um ALL
M = hQ; ; ; ; q0 ; ; $; F i 
e o onjunto
L(M )

= fw 2 (

f; $g) = q0  w$ ` uqf v para algum qf 2 F g

Exemplo 8.4.7 Um ALL que re onhe e a linguagem


tupla M = hQ; ; ; ; q0 ; ; $; F i, tal que






L = fanbnan = n  1g, e a oito-

= fq0 ; : : : ; q8 g

 = fa; b; ; $; 2g
= fa; b; ; $; 2; x; y; z g
F

= fq8 g

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

191

8.4. Linguagens Sens


veis ao Contexto

 e de nido atraves da seguinte tabela:

a
q0
q1
q2
q3
q4
q5
q6
q7
q8

(q2 ; x; D) (q5 ; x; D)
(q2 ; a; D) (q2 ; b; D)
(q4 ; y; E )
(q4 ; a; E ) (q4 ; b; E )
(q5 ; b; D)

(q1 ; ; D)

(q3 ; $; E )
(q6 ; $; E )

(q7 ; b; E )

(q1 ; x; D)

(q3 ; y; E )

(q8 ; Z; E )

(q1 ; x; D)

(q5 ; y; D) (q6 ; z; E )
(q7 ; z; E )
(q1 ; x; D) (q7 ; y; E )

Observe que os mar adores est~ao no in io da ta de entrada, mas n~ao s~ao onsiderados
omo partes das palavras a eitas ou rejeitadas pelo aut^omato. Por outro lado, ALL's n~ao
podem a essar elulas a esquerda de  nem a direita de $, tornando inuteis os smbolos
em bran os a esquerda e a direita do onteudo ini ial da ta de entrada, usuais em
maquinas de Turing padr~ao. Por esse motivo, 2 n~ao foi onsiderado expli itamente omo
omponente da oito-tupla na de ni ~ao de ALL (embora impli itamente seja onsiderado
ao se requerer que uma erta sete-tupla seja uma maquina de Turing) e, portanto, n~ao
temos ne essidade de supor que existe uma ta em bran o a direita de $ nem a esquerda
de . Logo, podemos onsiderar que a ta de entrada ome a em  e termina em $ e
eliminar ompletamente da de ni ~ao de ALL a o orr^en ia do smbolo bran o (2).

Um ALL que re onhe e a linguagem L1 = fan bn an bn = n  1g e des rito


na seguinte tabela:
Exemplo 8.4.8

a
q0
q1
q2
q3
q4
q5
q6
q7
q8
q9

(q2 ; x; D) (q5 ; x; D)
(q2 ; a; D) (q2 ; b; D)
(q4 ; x; E )
(q4 ; a; E ) (q4 ; b; E )
(q5 ; a; D) (q5 ; b; D)
(q7 ; x; E )
(q7 ; a; E ) (q7 ; b; E )
(q5 ; x; D)

O estado nal deste ALL e o estado

192


(q1 ; ; D)

(q1 ; x; D)
(q3 ; $; E ) (q3 ; x; E )
(q1 ; x; D)
(q6 ; x; E )
(q8 ; x; D)
(q9 ; X; D)

q9 .

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

Seja M = hQ; ; ; ; q0 ; ; $; F i um ALL. Ent~ao existe um ALL


,
,
,
,
,
M = hQ ; ; ; F i tal que L(M ) = L(M ) e
Proposi
~
ao 8.4.9

2 L(M ,) se, e somente se, q0  w$ ` M ,qf  w$

(Argumento) Como a ta e limitada ao tamanho da entrada, nun a


adi ionaremos smbolos extras a ta, o maximo que pode a onte er e substituir os smbolos
da entrada por outros. Se ao zermos isto, tivermos o uidado de substituir ada smbolo
a 2 
f; $g por um smbolo espe ial asso iado a ele, ent~ao ao nal da omputa ~ao,
poderemos re-es rever a entrada original na ta e nos posi ionar ao in io da mesma.

~ o:
Demonstra
a

O ALL do exemplo anterior, pode ser re-es rito nesta forma normal,
da seguinte maneira:

Exemplo 8.4.10

a
q0
q1
q2
q3
q4
q5
q6
q7
q8
q9
q10
q11
q12

(q2 ; x; D) (q5 ; y; D)
(q2 ; a; D) (q2 ; b; D)
(q4 ; y; E )
(q4 ; a; E ) (q4 ; b; E )
(q5 ; a; D) (q5 ; b; D)
(q7 ; x; E )
(q7 ; a; E ) (q7 ; b; E )
(q5 ; y; D)
(q12 ; a; E ) (q12 ; b; E )


(q1 ; ; D)

(q3 ; $; E )

(q1 ; x; D)

(q3 ; y; E )

(q1 ; x; D)
(q6 ; x; E ) (q6 ; y; E )
(q8 ; y; D)

(q9 ; x; D)
(q10 ; $; E ) (q9 ; x; D) (q9 ; y; D)
(q11 ; ; D)
(q10 ; a; E ) (q10 ; b; E )

O estado nal deste ALL e o estado


8.4.3

q12 .

Rela
~
ao entre linguagens re ursivas e linguagens sens
veis
ao ontexto

Como toda gramati a sensvel ao ontexto e uma gramati a irrestrita, ent~ao toda linguagem sensvel ao ontexto e uma linguagem re ursiva enumeravel. Menos evidente e
mostrar que toda linguagem sensvel ao ontexto e re ursiva, pois ALL podem n~ao parar
para toda entrada.
Teorema 8.4.11

Toda linguagem sensvel ao ontexto e re ursiva.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

193

8.4. Linguagens Sens


veis ao Contexto

~ o: (Esbo o) Seja L uma linguagem sensvel ao ontexto e G uma gramati a


Demonstra
a

sensvel ao ontexto, tal que L(G) = L. Analogamente ao teorema 8.3.4, podemos simular
as deriva ~oes de G numa maquina de Turing, de nindo um pro edimento de enumera ~ao
para toda adeia na linguagem. Por exemplo, podemos listar toda w 2 L tal que
S

w;

isto e, w e derivado em uma etapa. Como o onjunto de produ ~oes da gramati a e nito,
havera um numero nito de tais adeias. Em seguida, listamos todas w 2 L que podem
ser derivadas em duas etapas
S

) )
x

w;

e assim por diante. Como as gramati as sensveis ao ontexto t^em a propriedade que
a ada passo o tamanho da adeia gerada aumenta, ent~ao para qualquer u 2 T  , este
pro esso sempre para, ou gerando u, neste aso u 2 L, ou gerando uma forma senten ial
maior que j u j, o qual signi a que a gramati a nun a gerara u e, portanto, u 62 L. Logo,
omo, temos uma maquina de Turing que sempre para e re onhe e L, ent~ao L e re ursiva.
Por outro lado, nem toda linguagem re ursiva e sensvel ao ontexto, para demonstrar
isto pre isaramos des rever uma linguagem e mostrar que ela e, efetivamente, re ursiva
mas n~ao e sensvel ao ontexto. Linguagens re ursivas que n~ao sejam sensveis ao ontexto, e que sejam intuitivas s~ao dif eis de se en ontrarem, embora existam in nitas de
tais linguagens. Uma demonstra ~ao elegante da exist^en ia de uma tal linguagem, pode
ser en ontrada em [Sal73, HU79. No entanto, eles nestas demonstra ~oes onstroem tal
linguagem re ursiva a partir de uma enumera ~ao de um onjunto de maquinas de Turing
que sempre param. Um exemplo mais tangvel de uma tal linguagem, pode ser obtida via
uma odi a ~ao do gra o da fun ~ao de A kermann A : N  N ! N , a qual e de nida
omo
A

(0; y ) = y + 1
( + 1; 0) = A(x; 1)

A x

( + 1; y + 1) = A(x; A(x + 1; y ));

A x

a qual e uma fun ~ao om dupla re urs~ao, foi introduzida por Wilhelm A kermann, no
intuito de demonstrar, onstrutivamente, a exist^en ia de uma fun ~ao re ursiva1 que n~ao e
primitiva re ursiva2 , isto e, uma fun ~ao que seja omputada por uma maquina de Turing
que sempre para, mas que n~ao e omputada por uma maquina limitada linearmente.
1 As

fun o~es re ursivas s~ao a sub- lasse das fun o~es par iais re ursivas, ou analogamente as fun o~es
Turing- omputaveis, que s~ao totais, ou noutras palavras para as quais existe uma maquina de Turing que
a omputa e que sempre p
ara [BL74, Cut80, Smi94, CO98.
2 A lasse das fun
o~es primitivas re ursivas s~ao uma sub lasse propria das fun o~es re ursivas.

194

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

Existem diversas vers~oes da fun ~ao de A kermann, a dada aqui e a mais usual e pode ser
en ontrada em [BL74, Cut80 entre outros, outras de ni ~oes podem ser en ontradas em
[HU79, Bir96.
Uma tal odi a ~ao poderia ser a linguagem LA k

 f0; 1g des rita por

LA k = fw1 0w2 0w3 = ; w1 ; w2 ; w3 2 f1g e A(j w1 j; j w2 j) =j w3 jg;


onde j w j e o tamanho da adeia w.

8.4.4

Equival^
en ia entre ALL's e gram
ati as sens
veis ao ontexto

Mostraremos que a n~ao ser pelo fato que um ALL pode a eitar a palavra vazia, , enquanto
uma gramati a sensvel ao ontexto n~ao, ambos (ALL's e gramati as sensveis ao ontexto)
a eit~ao, exatamente, a mesma lasse de linguagens, ou seja as linguagens sensveis ao
ontexto.

Teorema 8.4.12 Se
que a eita

, isto 
e


e uma linguagem sens
vel ao ontexto, ent~
ao existe um ALL

L(M ) = L.

~ o: (Veja [HU79).
Demonstra
a

Observe que, linguagens sensveis ao ontexto n~ao onsider~ao , pois para uma gramati a
gerar a adeia vazia , pre isaria da produ ~ao S !  a qual fere a propriedade que o
lado esquerdo seja menor que lado direito de uma produ ~ao , e por tanto n~ao seria sensvel
ao ontexto. Por outro lado linguagens a eitas por ALL's n~ao t^em esta restri ~ao . Isto
n~ao e um grande problema, pois se quisesemos onsiderar linguagens om a adeia vazia, bastaria exibilizar a de ni ~ao de gramati a sensvel ao ontexto, impondo que toda
produ ~ao w ! v , tenha j w jj v j ou j v j= 0.
Teorema 8.4.13 Seja

um ALL, ent~
ao

L(M )

fg


e uma linguagem sens
vel ao

ontexto.

~ o: (Veja [HU79).
Demonstra
a

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

195

8.4. Linguagens Sens


veis ao Contexto

8.4.5

Propriedades de fe ho das linguagens sens


veis ao ontexto

As linguagens sensveis ao ontexto s~ao fe hadas sobre a maioria das opera ~oes usuais
sobre linguagens: uni~ao, interse ~ao, on aten ~ao, fe ho positivo e imagem homomorfa.
Proposi
~
ao 8.4.14

1.
2.
3.
4.
5.

Sejam L1

L2 linguagens sensveis ao ontexto. Ent~ao as linguagens:

L1 [ L2,
L1 \ L2,
L1 L2 ,
L+1 = Si=1 Li1
h(L1 ), para qualquer homomor smo h : T1 ! T2

s~ao sensveis ao ontexto.

Sejam G1 = hV1 ; T1 ; S1 ; P1 i e G2 = hV2 ; T2 ; S2 ; P2 i gramati as sensveis


ao ontexto tais que L1 = L(G1 ) e L2 = L(G2 ) e V1 \ V2 = ;.
~ o:
Demonstra
a

1. Analogo ao aso das linguagens regulares e livres de ontexto, a uni~ao das linguagens
L1 e L2 pode ser obtida simplesmente juntando as duas gramati as e adi ionando
uma nova variavel de in io S e as produ ~oes:
S

! S1 j

S2 :

Assim, a nova gramati a


G1

[ G2 = hV1 [ V2 [ fS g; T1 [ T2; S; P1 [ P2 [ fS ! S1; S ! S2 gi;

laramente, e sensvel ao ontexto e gera a linguagem:

[ G2) = L1 [ L2:
Sejam M1 = hQ1 ; 1 ; 1 ; 1 ; q01 ; ; $; F1 i e M2 = hQ2 ; 2 ; 2 ; 2 ; q02 ; ; $; F2i dois ALL's,
tais que L(M1 ) = L1 e L(M2 ) = L2 . Pela proposi ~ao 8.4.9, e possvel onstruir
ALL's M1 , e M2 ,, tais que L(M1 ,) = L(M1 ), L(M2 ,) = L(M2 ), para ada w 2 L(M1 ,)
se, e somente se, q0  w$ ` M , qf  w$, para algum qf 2 F1 , e, analogamente, para
ada w 2 L(M2 ,) se, e somente se, q0  w$ ` M , qf  w$, para algum qf 2 F2 ,. Sem
per a alguma, podemos pensar que Q1 , \ Q2 , = ;. A partir, dessas duas maquinas,
podemos onstruir uma ter era M3 = hQ1 , [ Q2 ,; 1 [ 2 ; 1 [ 2 ; 3 ; q01 ,; ; $; F2 i,
onde 3 : (Q1 , [ Q2 ,)  ( 1 [ 2 ) ! (Q1 , [ Q2 ,)  ( 1 [ 2 )  fD; E g e de nida por
L(G1

2.

196

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

3 (q; a)

1 (q; a)
2 (q; a)

, se
, se

q
q

2 Q1 ,,
2 Q2

Claramente M3 a eitara um w se, e somente se, w e a eito por M1 , e por M2 ,, assim,


L(M3 )

= L(M1 ,) \ L(M2 ,)
= L(M1 ) \ L(M2 )
= L1 \ L2

1 e G 2 as gramati as sensveis ao ontexto na forma normal SC, obtidas a


3. Sejam G
partir de G1 e G2 , respe tivamente. Construa a gramati a sensvel ao ontexto G3
omo
G3

2 [ fS
= hV 1 [ V 2 [ fS g; T1 [ T2 ; P 1 [ P

! S1S2 g; S i:

Claramente, G3 e uma gramati a sensvel ao ontexto na forma normal SC tal


que L(G3 ) = L(G1 ) L(G2 ). Observe, que as restri ~oes olo adas por [HU79 para
onstruir esta gramati a n~ao a onte em aqui, pois nos assumimos que as gramati as
G1 e G2 est~
ao na forma normal SC via o algoritmo apresentado na demonstra ~ao
do teorema 8.4.4, no qual sempre o lado esquerdo de uma produ ~ao e onstituda
so de variaveis.
4. Seja gramati a G = hV1 [ fS g; T1 ; S; P1 [ fS ! S1 S j S1 gi, para algum S 62 V1 .
Trivialmente, G1 e uma gramati a sensvel ao ontexto tal que L(G) = L(G1 )
5. Seja a gramati a G = hV1 ; T2 ; S1 ; P i, onde P e obtido substituindo em ada produ ~ao
w ! v os smbolos terminais por sua imagem homomorfa, isto 
e, se o smbolo
terminal a o orre em w ou em v , ent~ao substituimos ada o orr^en ia de a, por h(a).
Claramente, G ontnua sendo sensvel ao ontexto e L(G) = L(G1 ).

8.5

A Hierarquia de Chomsky

Vimos a famlia das linguagens re ursivamente enumeraveis (LRE ), a famlia das linguagens re ursivas (LRe ), a famlia das linguagens sensveis ao ontexto (LSC ), a famlia das
linguagens livres de ontexto (LLC ) e a famlia das linguagens regulares (LReg ). Uma
maneira de exibir as rela ~oes entre essas famlias e atraves da hierarquia de Chomsky.
Noam Chomsky, um dos fundadores da teoria das linguagens formais, forne eu uma lassi a ~ao ini ial em quatro tipos de linguagens do tipo 0 ao tipo 3. Essa terminologia ini ial
persistiu e se en ontra frequentemente refer^en ias a ela. O tipo 0, o mais abrangente, e
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

197

8.5. A Hierarquia de Chomsky

L RE
L SC
L
L

LC
Reg

Figura 8.2: Hierarquia de Chomsky original.

a famlia das linguagens geradas pelas gramati as irrestritas, isto e, re ursivamente enumeraveis. O tipo 1 onsiste das linguagens sensveis ao ontexto (LSC ) que s~ao geradas
por gramati a sensveis ao ontexto. O tipo 2 onsiste das linguagens livres de ontexto
e o tipo 3 das linguagens regulares. Cada famlia de tipo i e um sub onjunto proprio da
famlia de tipo i 1. O diagrama da gura 8.2 exibe, laramente, essa rela ~ao.
Podemos, tambem, a res entar a essa hierarquia otras famlias de linguagens formais, apresentadas aqui de modo super ial, tais omo: a famlia das linguagens re ursivas (LRe ), a famlia das linguagens lineares, (LLin), isto e as linguagens geradas por
gramati as lineares, e a famlia das linguagens livres de ontexto determinsti as (LLCD ),
isto e, linguagens livres de ontextos re onhe idas por aut^omatos a pilha determinsti os.
Os nveis no diagrama de Venn da gura 8.3 indi am que a respe tiva lasse esta ontida propriamente na outra. Assim, a famlia das linguagens re ursivamente enumeraveis
ontem propriamente a famlia das linguagens re ursivas, um exemplo de uma linguagem re ursivamente enumeravel n~ao re ursiva e a linguagem des rita no teorema 8.2.3; a
famlia das linguagens re ursivas ontem propriamente a famlia das linguagens sensveis
ao ontexto, um exemplo de uma linguagem re ursiva que n~ao e sensvel ao ontexto e a
linguagem LA k ; a famlia das linguagens sensveis ao ontexto ontem propriamente as
linguagens livres de ontexto, um exemplo de uma linguagem sensvel ao ontexto que
n~ao e livre de ontexto e L = fan bn an = n  0g; a famlia das linguagens livres de ontexto ontem propriamente a famlia das linguagens linguagens lineares, por exemplo a
linguagem L = fw 2 fa; bg = Na (w) = Nb (w)g e livre de ontexto mais n~ao e linear;
a famlia das linguagens lineares ontem a famlia das linguagens livres de ontexto deterministi as, um exemplo de uma linguagem linear n~ao livre de ontexto determinsti a
e a linguagem dos palndromos; e nalmente a famlia das linguagens livres de ontexto
determinsti as ontem a famlia das linguagens regulares, um exemplo de uma linguagem
livre de ontexto determinsti a n~ao regular e a linguagem L = fan bn = n  0g.

198

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

L RE
L Rec
L SC
L LC
L Lin
L LCD
L

Reg

Figura 8.3: Hierarquia de Chomsky.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
199

8.6. Complexidade Computa ional

8.6

Complexidade Computa ional

Em nosso estudo dos pro essos algoritmos que onsideramos ate aqui levamos em onta,
somente, a possibilidade ou impossibilidade de omputa ~oes espe  as. N~ao en ontramos
diferen as essen iais entre os varios modelos de maquinas de Turing. Poderemos, sempre,
usar simula ~oes para mudar de um modelo para outro de modo que a de ibilidade e a
omputabilidade n~ao sejam afetados pelos detalhes da maquina de Turing que usamos.
Isso, entretanto, ignora alguns fatos que se tornam relevantes quando s~ao onsiderados
apli a ~oes, tais omo exig^en ias de tempo e espa o de omputa ~oes em diferentes modelos.
Na prati a, estes elementos s~ao muito importantes. Assim, nossos modelos teriam meios de
in orpora-los quando levamos em onsidera ~ao. Isto nos leva a um novo topi o, hamado
teoria da omplexidade. No estudo de omplexidade, nosso interesse prin ipal 
e om
e i^en ia de uma omputa ~ao omo medida para requisitos de re ursos.
A teoria da omplexidade omputa ional e um topi o muito extenso, muitos dos quais
est~ao inteiramente fora do nosso urso. Entretanto, existem alguns resultados que podem
ser estabele idos de modo simples, trazendo alguns es lare imentos sobre a natureza de linguagens e omputa ~oes. Daremos, abaixo, um esbo o de alguns resultados de omplexidade. N~ao faremos a maior parte das provas dif eis, re omendando, [HU79, Pap94, Smi94,
ao leitor interessado. Nossa inten ~ao, aqui, e apresentar a relev^an ia do assunto e mostrar
omo ele se rela iona om o que sabemos sobre linguagens e aut^omatos.
8.6.1

Medida e Complexidade

Na prati a da omputa ~ao, a quest~ao fundamental sobre uma fun ~ao f , n~ao e se f e
omputavel, mas se f e omputavel em termos uteis, isto e, se existe um programa que
ompute f no tempo e espa o que pre issamos ou dispomos. A resposta dependera, essen ialmente, da nossa apa idade para es rever programas e da linguagem de programa ~ao
e o omputador usado. Porem, intuitivamente existe um fator adi ional que pode ser des rito omo a omplexidade intrnse a da fun ~ao f . Duas medidas basi as de omplexidade
s~ao o tempo de omputa ~ao e o espa o usado na omputa ~ao.
Assim, daremos um signi ado pre iso para os on eitos de tempo e espa o e sua
onex~ao om as maquinas de Turing. Para obter isso pensamos da maquina de Turing
omo efetuando um movimento por unidade de tempo. De modo que o tempo gasto
numa omputa ~ao e o numero de movimentos efetuados. Analogamente, o espa o pode
signi ar o numero total de elulas da ta que s~ao usadas durante a omputa ~ao. Agora, em geral, n~ao ha interesse em one er o espa o e o tempo exatos exigidos para uma
uni a omputa ~ao. Com estas no ~oes pre isas de medidas de omplexidade omputa ional, podemos responder perguntas do tipo: Qu~ao intrnse amente omplexa e uma fun ~ao
omputavel f ? e, e possvel desenvolver um programa \melhor" para omputar f ?. Geralmente queremos saber omo a maquina efetua todas as suas omputa ~oes no domnio
e tambem ara terizar omo o espa o e o tempo requeridos dependem do tamanho da

200

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

adeia de entrada, digamos seu omprimento. Dentre todos os problemas de um dado


tamanho pode haver alguma varia ~ao, mas estaremos interessados somente no pior aso,
isto e, o maximo de re ursos requeridos de todos os problemas do mesmo tamanho. Usaremos n para denotar o tamanho do problema. Dizemos, ent~ao, que a omputa ~ao tem
omplexidade de tempo T (n) para signi ar que a omputa
~ao para todo problema de
tamanho n pode ser ompletada em n~ao mais do que T (n) movimentos. Se dizemos que
a omputa ~ao tem omplexidade de espa o S (n), queremos dizer que as omputa ~oes
usam no maximo S (n) elulas da ta. Exatamente o que signi a um movimento ou uma
elula da ta depende da estrutura da maquina de Turing espe  a e sera deixado sem
solu ~ao porque n~ao queremos fazer uma distin ~ao muito re nada. Suponha, por exemplo,
que temos uma maquina de Turing que efetua uma omputa ~ao usando um espa o de
n 
elulas. Se agora, tomamos uma outra maquina de Turing que omprime a ta da
primeira maquina usando n2 espa os de elulas de um tipo mais ompli ado. Como n~ao
dissemos o que e uma elula, a segunda alega ~ao faz tanto sentido quanto a primeira. alem
disso, estamos geralmente interessados somente em omputa ~oes em grandes problemas
que requerem muito re ursos. Consequentemente, pensamos de n omo grande, e uma
omputa ~ao que efetua uma omputa ~ao num tempo n2 n~ao difere, signi ativamente, de
uma que leva um tempo de n2 + 2n. Estamos interessados na ordem de magnitude do
tempo e do espa o requerido e, em geral, n~ao prestamos aten ~ao aqueles asos envolvendo
fatores multipli ativos e termos de mais baixa ordem. No que segue assumiremos que isso
esta entendido. Quando dizemos que uma omputa ~ao toma um tempo T (n) queremos,
realmente, dizer que ela toma O(T (n)). Aqui usamos a O-nota ~ao para dar a ordem de
magnitude do omportamento de uma fun ~ao para n grande, ignorando possveis fatores
multipli ativos. Mais pre isamente, dizemos que a fun ~ao f (n) e de ordem g (n) se e
somente se existe alguma fun ~ao , tal que
( )
g (n)

f n

( ) om nlim
!1 (n) = < 1:

n ;

No exemplo 7.1.10, onstruimos uma maquina de Turing om uma uni a


ta para a linguagem
Exemplo 8.6.1

L=f

n n

a b

= n

 1g

Uma olhada nesse algoritmo mostrara que para w = an bn ele leva, mais ou menos
2n, etapas para asar ada a om o b orrespondente. Portanto a omputa ~ao total toma
tempo n2 .
Mas, om uma maquina de duas tas podemos usar um algoritmo diferente. Primeiro
opiamos todos os a's na segunda ta e ent~ao omparamo-lo om os b's na primeira ta. A
situa ~ao antes e depois da opia e mostrado na gura 8.4. Ambas, a opia e o asamento,
podem ser realizados em O(n) e vemos que uma maquina de duas tas tem omplexidade
de tempo n.

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

201

8.6. Complexidade Computa ional


a

(a) fitas iniciais

fita 1

fita 2

(b) fitas apos copiar os

b fita 1

fita 2

a s

Figura 8.4: Con gura ~ao de uma Maquina de Turing de duas tas que re onhe e a linguagem an bn .
8.6.2

Fam
lias e Classes de Complexidade

Na abordagem da hierarquia de Chomsky para lassi a ~ao de linguagens, asso iamos


famlias de linguagens om a lasses de aut^omatos, onde ada lasse de aut^omatos e
de nida pela natureza de seu dispositivo temporario de armazenamento. Uma outra
maneira de lassi ar as linguagens e usar uma maquina de Turing omo o aut^omato
omum subja ente, mas onsiderar a omplexidade omo fator de distin ~ao. Para isso,
devemos primeiro de nir a omplexidade de uma linguagem.

De ni ~ao 8.6.2 Seja L qualquer linguagem. Dizemos que uma maquina de Turing, M ,
a eita L, em tempo T (n), se para ada w 2 L, om j w j n, e a eito por M em O (T (n))
ou menos movimentos. Similarmente, L e a eito por M em espa o S (n), se M requerer,
no maximo, O (S (n)) elulas para a eitar w .
As famlias de linguagens podem ser de nidas de a ordo om as diversas medidas de
omplexidade. A seguinte s~ao as maiores lasses que onsideraremos. Uma linguagem dizse da lasse DTempo(T (n)) se existe alguma maquina de Turing multi ta determinsti a
que a eita esta em tempo T (n). Similarmente, NTempo(T (n)) e o onjunto de todas as
linguagens a eitas por alguma maquina de Turing n~ao determinsti a em tempo T (n). Nas
maquinas n~ao determinsti as, requeremos que exista ao menos uma possvel omputa ~ao
que possa ser ompletada nesse tempo. Analogamente, DEspa o(S (n)) e o onjunto de
todas as linguagens a eitas por alguma maquina de Turing determinsti a em espa o S (n),
e NEspa o(S (n)) e o analogo n~ao-determinsti o.
A de ni ~ao dessas lasses de omplexidade n~ao s~ao su ientes para nos propor ionar
uma boa ideia da natureza dessas lasses. O restante desta parte e uma explora ~ao dessas
lasses om o intuito de dar um maior entendimento delas e mostrar omo elas est~ao
rela ionadas om as lassi a ~oes previas para linguagens. O primeiro grupo de quest~oes
exprimem a rela ~ao existente entre estas quatro lasses de linguagens. Algumas delas
saem por onsidera ~oes elementares. Como, no mnimo, s~ao ne essarios n movimentos
para l^er ada smbolo de uma entrada de tamanho n, DTempo(T (n)) n~ao e interessante
para T (n) < n. Este onsiste de linguagens para ujos membros dependem somente de

202

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

uma parte da entrada.

No entanto, n~
ao podemos dizer o mesmo para DE spa;
o, pois a

adeia de entrada n~
ao 
e ontada. Por exemplo, DE spa;
o(log n) in lui muitas linguagens
n~
ao triviais.
Como uma m
aquina de Turing determin
sti a 
e um aso espe ial de uma m
aquina de
Turing n~
ao determin
sti a, podemos imediatamente on luir que

DT empo(T (n))

N T empo(T (n))

(8.5)

N E spa;
o(S (n))

(8.6)

DE spa;
o(S (n))

Tamb
em, omo somente podemos ganhar usando re ursos adi ionais,

DT empo(T1 (n))

DT empo(T2 (n))

(8.7)

DE spa;
o(S1 (n))

DE spa;
o(S2 (n));

(8.8)

devem ser verdadeiras para todo T1 (n)

T2 (n) e S1 (n)

S2 (n). Resultados an


alogos s~
ao

verdadeiros para outras lasses de omplexidade. Finalmente, omo ada movimento de


uma m
aquina de Turing usa ao menos uma nova 
elula, temos que

DT empo(f (n))

DE spa;
o(f (n))

(8.9)

para toda fun


~
ao f (n).
Cada uma das rela
~
oes, a ima, embora imediatas, sugerem v
arias quest~
oes. O m
aximo
que poderemos fazer 
e desta ar alguns teoremas, e, ent~
ao mostrar omo eles es lare em as
rela
~
oes entre as v
arias lasses de omplexidade que prov
em de um erto onjunto restrito.
Este onjunto, entretanto, 
e bastante grande e in lui todas as fun
~
oes omuns tais omo
i

n , i = 1; 2; : : : ; 2 ; n! e seus produtos. Por este motivo, ignoraremos as limita


~
oes t
e ni as

que s~
ao ne ess
arias para tornar ompletas as assertivas dos teoremas abaixo.

Teorema 8.6.3

Sejam

S1

S2

duas fun
~
oes tais que

!1

lim

Ent~
ao,

DE spa;
o(S1 )

S1 (n)
S2 (n)

= 0

DE spa;
o(S2 )

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
203

8.6. Complexidade Computa ional

~ o: V^er [HU79.
Demonstra
a
Exemplo 8.6.4 Existe uma linguagem DE spa; o(n) que n~
ao est
a em DE spa; o(

Isto segue imediatamente do fato de que limn!1


Teorema 8.6.5 Sejam

T1

T2

nLog n

).

= 0.

duas fun ~oes tais que

lim
n!1
ent~
ao

pnlog n

( )

( )

T1 n log T1 n

( )

T2 n

= 0;

(8.10)

( )  DT empo(T2 ).

DT empo T1

~ o: V^er [HU79.
Demonstra
a

em

 1, existe uma linguagem em

) que n~ao esta


( k ). Novamente, isto segue imediatamente do teorema 8.6.5, om

Exemplo 8.6.6 Para todo

DT empo n

k+1

DT empo n

lim
n!1

log n

k+1
n

= nlim
!1

k log n
n

= 0:

Esses dois teoremas, junto om os exemplos, mostram que existe uma hierarquia de
famlia de linguagens ontendo um numero in nito de membros distintos. Um ligeiro
res imento na ordem de magnitude da fun ~ao de omplexidade de tempo ou do espa o
de ne uma nova e maior famlia de linguagens.
 a in lus~ao
Um onjunto de quest~oes interessantes vem ao perseguir ( 8.5) e ( 8.9). E
propria. Em geral, omo n~ao determinismo reduz a omplexidade? Um resultado bem
onhe ido rela ionado om isto e hamado teorema de Savit h.
Teorema 8.6.7 (Savit h) Seja S (n)

log n

. Ent~ao N E spa; o(S (n))  DE spa; o(S (n)2 ).

~ o: V^er [HU79.
Demonstra
a

O teorema de Savit h nos diz que, embora uma maquina determinsti a possa pre isar
de mais espa o para uma omputa ~ao do que a orrespondente n~ao-determinsti a, os
re ursos extras requeridos s~ao previsveis e igual a n~ao mais do que o quadrado de S (n).
Quest~oes similares sobre a rela ~ao entre DT empo e N T empo n~ao est~ao ainda totalmente
bem entendidas.

204

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

8.6.3 Classi a ~ao da Complexidade e a Hierarquia de Chomsky


Os resultados estabele idos anteriormente nos permite fazer varias alega ~oes, por exemplo,
que existe uma linguagem em DT empo(nk ) que n~ao esta em DT empo(n3 ). Embora isto
possa ser de interesse teori o, n~ao esta laro que esse resultado tenha qualquer signi ado
prati o. Neste aso, n~ao temos nenhuma ideia de omo devem ser as ara tersti as de
uma linguagem em DT empo(n4 ). Podemos progredir no entendimento dessa materia
se rela ionarmos a lassi a ~ao de omplexidade e a hierarquia de Chomsky. A seguir
veremos alguns exemplos simples.

Toda linguagem regular pode ser re onhe ida por um aut^omato nito
determinsti o, num tempo propor ional ao omprimento da entrada. Portanto
Exemplo 8.6.8

LReg 

( )

DT empo n

Mas, DT empo(n) in lui muito mais do que LReg . Ja estabele emos, no exemplo 8.6.1,
que a linguagem livre de ontexto fan bn = n  0g pode ser re onhe ida no tempo O(n). O
argumento dado pode ser usado mesmo para linguagens mais ompli adas.
A linguagem n~ao livre de ontexto L = fww = w 2 fa; bg g esta em
N T empo(n). Isto sai diretamente, uma vez que podemos re onhe er adeias nesta linguagem pelo algoritmo

Exemplo 8.6.9

1. Copie a entrada da la de entrada para a ta 1. N~ao deterministi amente adivinhe


o meio da adeia.
2. Copie a segunda parte para a ta 2.
3. Compare os smbolos da ta 1 e da ta 2 um a um.
Claramente, todos os passos podem ser efetuados num tempo
N T empo(n).

(j w j). Logo,

L2

Realmente, podemos mostrar que L 2 DT empo(n), forne endo um algoritmo para


en ontrar o meio de uma adeia em tempo O(n). Para isso observamos ada smbolo na
ta 1, mantendo um numero na ta 2, mas ontando somente ada segundo smbolo.
Desde que toda linguagem livre de ontexto pode ser analizada em tempo
O (n ), on luimos que toda linguagem livre de ontexto est
a em DT empo(n3 ). Mas,
omo o exemplo a ima mostra, existem linguagens em DT empo(n3 ) que n~ao s~ao livres de
ontexto. Portanto,
Exemplo 8.6.10

LLC 
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

( 3 ):

DT empo n

205

8.6. Complexidade Computa ional

Se permitirmos n~
ao-determinismo, a analise das linguagens livres de ontexto e mais
simples. Adivinhando a produ ~ao orreta em ada etapa, podemos analizar em tempo propor ional ao omprimento da deriva ~ao. Mas, sempre existira uma deriva ~ao propor ional
a j w j, de modo que
L

LC

( )

 N T empo n :

( ) tal que toda lin-

N~
ao existe uma fun ~ao total Turing Computavel
guagem re ursiva esta em DT empo(f (n)).
Teorema 8.6.11

f n

Considere o alfabeto  = 0 1 , om todas as adeias arranjadas


numa ordem propria 1 2
. Suponhamos, tambem, que temos uma ordem
n
propria para as maquinas de Turing, em 1 2
.
n
Suponha, agora, que a fun ~ao ( ), na assertiva do teorema, existe. Podemos, ent~ao
de nir a linguagem

~ o:
Demonstra
a

f ;

w ;w ;:::;w ;:::

M ;M ;:::;M ;

f n

fw = M

n~ao a eita

em (

f jw j

) etapas

(8.11)

A rmamos que e re ursiva. Para v^er isto, onsidere qualquer


e ompute
( ), assumindo que e total, Turing omputavel. Em seguida a hamos a posi ~ao
de na sequ^en ia 1 2
. Isto tambem e possvel porque a sequ^en ia esta na
n
ordem propria. Quando tivermos , a hamos i e deixamo-la operar sobre para ( )
etapas. Isso nos dira se
ou n~ao, e portanto e re ursiva.
Mas, agora, podemos mostrar que n~ao esta em
( ( )). Suponha que ela
estivesse. Como e re ursiva existe alguma maquina de Turing k , tal que = ( k ).
, ent~ao k a eita k em ( k ) etapas. Isto
k esta em ? se alegarmos que k
a onte e porque
( ( )) e todo
e a eito por k , em tempo ( ).
Mas isso ontradiz ( 8.11).
Inversamente, se assumirmos que k
obteremos uma ontradi ~ao. A inabilidade
para resolver este fato e um resultado tpi o de diagonaliza ~ao e leva-nos a on luir que
a hipotese original, qual seja a exist^en ia de uma ( ) omputavel, deve ser falsa.
L

f jw j

w 2 L

w ;w ;:::;w ;:::
i

w 2 L

DT empo f n

f jwj

2 L

L 2 DT empo f n

f jw

w 2 L

L M

f jwj

62 L

f n

8.6.4

A Classe de Complexidade P e NP

Uma outra maneira de olhar as varias lasses de omplexidades e remover algumas distin ~oes n~ao interessantes, tais omo entre
( k) e
( k 1). Podemos argumentar que a diferen a entre, digamos,
( )e
( 2) n~ao e fundamental,
uma vez que algum dele depende do modelo espe  o de maquina de Turing que temos
(por exemplo, quantas tas), e n~ao e, em prin pio, laro que modelo e o mais apropriado
para um omputador real. Isto nos leva a onsiderar a famosa lasse de omplexidade dos
DT empo n

DT empo n

DT empo n

DT empo n

problemas polinomiais

206

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

[
i1

( i ):

DT empo n

Esta lasse in lui todas as linguagens que s~ao re onhe idas por alguma maquina de
Turing determinsti a em tempo polinomial, sem qualquer preo upa ~ao om o grau do
polin^omio. Como ja vimos LRe e LLC est~ao em P .
Podemos fazer de ni ~oes analogas para as outras medidas de omplexidades introduzindo a lasse N P de todas as linguagens que s~ao re onhe idas por alguma maquina de
Turing n~ao-determinsti a em tempo polinomial, sem qualquer preo upa ~ao om o grau
do polin^omio.
NP

NP

i1

 =

E spa o

( i)

N T empo n

[
i1

 =

E spa o

 ( i )

DE spa o n

i1

 ( i )

N E spa o n

Existem algumas rela ~oes obvias entre essas lasses. Por ausa das restri ~oes de tempo
e espa o de uma maquina de Turing, temos
NP

NP

E spa o:

Do teorema de Savit h segue que


P

 = N P

E spa o

E spa o:

Portanto, temos
P

NP

 = N P

E spa o

E spa o:

O que n~ao sabemos e se essas ontin^en ias s~ao proprias.


O interesse nessas lasses de omplexidade, parti ularmente na lasse P , vem da tentativa de distinguir entre omputa ~oes realsti as e n~ao realsti as. Certas omputa ~oes,
embora teori amente possveis, requerem tanto re ursos que na prati a elas devem ser
rejeitadas omo irrealsti as, para omputadores existentes e ainda para os super omputadores a serem projetados. Tais problemas s~ao as vezes hamados intrataveis, para
indi ar que, embora em prin pio sejam omputaveis, n~ao existe esperan a real de um algoritmo prati o. Para entender isso melhor, os ientistas da omputa ~ao tem tentado p^or
a ideia da intratabilidade numa base formal. Uma tentativa de de nir o termo intratavel
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

207

8.6. Complexidade Computa ional

e feita no que e, geralmente, hamado a tese de Cook-Karp. Na tese de Cook-Karp, um


problema que esta em P e hamado tratavel, um que n~ao esta diz-se intratavel.
A tese de Cook-Karp e uma boa maneira de separar problemas que podemos trabalhar realisti amente daqueles que n~ao podemos? A resposta n~ao esta lara. Obviamente,
qualquer omputa ~ao que n~ao esta em P tem tempo de omplexidade que res e mais
rapido que qualquer polin^omio, e seus requerimentos res er~ao muito rapidamente om o
tamanho do problema. Mesmo para a fun ~ao omo 20 1 , isto sera ex essivo para n grande,
 justi avel, portanto, hamar um problema om essa omplexidadigamos n  100. E
de intratavel. Mas que dizer de problemas que est~ao em DTempo(n100 )?. Enquanto a
tese de Cook-Karp hama tais problemas trataveis, de fato, n~ao se pode seguramente
fazer muito om eles, mesmo para n pequeno. A justi ativa para a tese de Cook-Karp
pare e esta na observa ~ao empri a de que muitos problemas prati os em P est~ao em
DTempo(n), DTempo(n2) ou DTempo(n3), enquanto outros fora dessa lasse pare em
ter omplexidades exponen ial. Dentre os problemas prati os, existe uma distin ~ao lara
entre problemas P e aqueles n~ao em P .
; n

A difer^en ia fundamental entre os problemas P e problemas NP , esta em que a segunda lasse ontem a palavra extra \n~ao determinsti o" o qual indi a uma difer^en a,
aparentemente, intransponvel, no sentido de que um problema em P pode ser resolvido
em tempo polinomial, enquanto os problemas em NP s~ao resolvidos em tempo polinomial, mas por uma maquina de Turing n~ao-determinsti a. O n~ao determismo traz em se a
 de omputa ~ao paralela, pois as diversas possveis es olhas dos movimentos que uma
ideia
maquina de Turing n~ao determinsti a pode realizar, a ada passo, podem ser simuladas,
na omputa ~ao prati a, via o uso de diversos pro essadores em paralelo. Por outro lado,
qualquer tentativa de se transformar as maquinas de Turing n~ao determinsti as em determinsti as, resultaria numa maquina de Turing, para alguns asos, om uma omplexidade
exponen ial.
O estudo da rela ~ao entre as lasses de omplexidades P e NP tem gerado interesse
parti ular entre os ientistas da omputa ~ao. Na raiz disto esta a quest~ao de se

P = NP
ou n~ao.
A resposta n~ao e onhe ida, nem mesmo podemos fazer alguma onje tura razoavel.
Embora ninguem tenha sido apaz de prova-la, existem boas raz~oes para se a reditar que
existem problemas em NP que n~ao est~ao em P e, portanto, n~ao podem ser resolvidos em
tempo polinomial por uma maquina de Turing determinsti a. Muitas das evid^en ias vem
de exemplos negativos. Problemas omo do aixeiro viajente esta em NP . Mas, em que
pese as tentativas, n~ao se tem en ontrado um algoritmo de tempo polinomial para ele.
Esta falha, e outras, nos leva a a reditar que P 6= NP . Mas a evid^en ia para essa ren a
e estritamente ir unstan ial. Este problema e dis utido amplamente em [Kar72.

208

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 8. Hierarquia das Linguagens Formais

8.7

Exer 
 ios

1. Mostre que o seguinte problema e inde idvel. Dada qualquer maquina de Turing
M , a 2 , e w 2 + , determinar quando ou n~ao o smbolo a e ou n~ao es rito na
ta, quando M e apli ado a w.
2. Mostre que n~ao existe nenhum algoritmo para de idir se duas maquinas de Turing
M1 e M2 a eitam a mesma linguagem
3. D^e uma gramati a irrestrita que gere as linguagens

L = fww = w 2 fa; bg g


L = fanbn n = n  0g
L = fw 2 fa; b; g = Na(w) = Nb(w) = N (w)g
L = fam bnam n = n; m  0 e m > ng
L = fanbm nm = n  0g
D^e uma gramati a irrestrita que gere a linguagem LA k (se ~ao
(a)
(b)
( )
(d)
(e)

4.

8.4.3).

5. D^e uma gramati a sensvel ao onetexto que gere as linguagens do exer  io 3 sem
o .
6. Transforme as gramati as sensveis ao ontexto do exer  io anterior a forma normal
SC.
7. Transforme a gramati a sensvel ao ontexto do exemplo

??

a forma normal SC.

8. D^e ALL's que re onhe am as linguagens do exer  io 3.


9. Mostre que L = fwwRw = w 2 fa; bg+ g esta em DT empo(n).
10. En ontre um algoritmo que a eite a linguagem L = fwwR = w 2 fa; bg+ g om uma
omplexidade de tempo O(n).

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

209

8.7. Exer 
 ios

210

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 9
Limites da Computa
~
ao Algor
tmi a:
Problemas Inde id
veis

Tendo estudado o que as maquinas de Turing podem fazer, estudaremos, agora, o que
elas n~ao podem fazer. Embora a tese de Turing nos leve a a reditar que essas limita ~oes
n~ao s~ao muitas, em varias o asi~oes observamos que poderia n~ao existir um algoritmo
para resolver ertos problemas. Agora, expli itaremos o que queremos dizer por isso.
Alguns dos resultados apare eram de uma maneira simples. Se uma linguagem n~ao e
re ursiva, ent~ao por de ni ~ao n~ao existe algoritmo de pertin^en ia para ^ele. Se essas
fossem as quest~oes abordadas, elas n~ao seriam interessantes. As linguagens n~ao re ursivas
t^em pou a utilidade. Mas as quest~oes s~ao mais profundas. Por exemplo, estabele emos
(embora n~ao tenhamos provado ainda) que n~ao existe algoritmo para determinar se uma
gramati a livre de ontexto e ambigua ou n~ao. Esta quest~ao e, laramente, de relev^an ia
prati a, no estudo das linguagens de programa ~ao.
Antes de tudo, de niremos os on eitos de de ibilidade e omputabilidade para
pre isar o que queremos dizer om a a rma ~ao de que algo n~ao pode ser feito por uma
maquina de Turing. Veremos, ent~ao, varios problemas lassi os desse tipo, dentre eles o
bem onhe ido problema da parada para maquinas de Turing. Desse problema segue um
numero de problemas rela ionados para maquinas de Turing e linguagens re ursivamente
enumeraveis.

9.1 Alguns Problemas que N~ao Podem Ser Resolvidos por Maquinas de Turing
O argumento de que o poder das omputa ~oes me ^ani as e limitado n~ao e surpreendente.
Intuitivamente, sabemos que muitas quest~oes vagas e espe ulativas requerem ideias e
ra io nios bem alem da apa idade de qualquer omputador previsvel. O que e mais
interessante para o ientista da omputa ~ao e que existem quest~oes que podem ser lara
211

9.1. Alguns Problemas que N~


ao Podem Ser Resolvidos por M
aquinas de
Turing

e simplesmente estabele idos e tal que aparentemente tem solu ~ao algortmi a, mas que
se sabe n~ao ser soluvel por qualquer omputador.
Computabilidade e de ibilidade

Na de ni ~ao 7.1.12, estabele emos que uma fun ~ao f , num erto domnio, diz-se omputavel se existe o maquina de Turing que omputa o valor de f , para todos os argumentos
no seu domnio. Como fun ~oes mapeam elementos de um onjunto (domnio) em outro
onjunto ( ontradomnio) e maquinas de Turing, por outro lado, transformam adeias
de um alfabeto () em adeias de um alfabeto ( ), devemos en arar  e  , omo odi a ~oes ou representa ~oes do domnio e ontradomnio, respe tivamente. Uma fun ~ao
e n~ao omputavel se tal maquina de Turing n~ao existe. Pode existir uma maquina de
Turing que omputa f em parte de seu domnio, mas, para nos, uma fun ~ao e omputavel
somente se existe uma maquina de Turing que omputa a fun ~ao sobre todo seu domnio.
Disso podemos inferir que quando lassi amos uma fun ~ao omo omputavel ou n~ao
omputavel, devemos ser laros sobre o que e seu domnio.
Por simpli idade, estudaremos uma lasse de problemas espe  a: a dos problemas
, que s~ao problemas de determinar se um elemento de algum universo perten e
ou n~ao a um determinado onjunto. Se existir um algoritmo que re eba um elemento a
e d^e omo resultado um simples \sim" aso a 2 A ou \n~ao", aso a 62 A, dizemos que o
problema de de is~ao para o onjunto A e de idvel. Se tal algoritmo n~ao existir, ent~ao
dizemos que o problema de de is~ao para o onjunto A e inde idvel. Observe que todo
problema de idvel e omputavel, no sentido de que existe um algoritmo que omputa uma
solu ~ao para o problema, mas o ontrario n~ao e orreto, uma vez que a de ibilidade esta
atrelada a lasse de problemas de de is~ao. Um problema de de is~ao pode ser entendido
omo um onjunto de assertivas que s~ao verdadeiras ou falsas, dependendo do objeto
sobre o qual predi am. Por exemplo, onsideremos a assertiva \Para uma gramati a livre
de ontexto, G, a linguagem L(G) e inerentemente ambigua". Para algumas gramati as
livres de ontexto, G, isso e verdadeiro, mas para outras e falso. Porem, para qualquer
gramati a livre de ontexto, G, devemos ter uma ou outra situa ~ao. Como o problema e
de idir se a assertiva e verdadeira para alguma gramati a livre de ontexto, o domnio ou
universo subja ente, e o onjunto de todas as gramati as livres de ontexto. Assim, um
problema e de idvel se existir uma maquina de Turing que da a resposta orreta para
ada assertiva no domnio do problema.

de de is~
ao

Quando estabele emos resultados de de ibilidade ou inde ibilidade, deveremos, sempre, saber qual e o domnio, porque pode afetar a on lus~ao. Um problema pode ser
de idvel sobre algum domnio mas n~ao sobre outro. Espe i amente uma uni a inst^an ia
do problema e sempre de idvel, desde que a resposta e ou verdadeira ou falsa. No primeiro aso a maquina de Turing que sempre responde \verdadeiro" da resposta orreta,
enquanto no segundo aso uma que responde sempre \falso" e apropriada. Isso pode
pare er uma resposta fala iosa, mas enfatiza um ponto importante. O fato de que n~ao

212

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 9. Limites da Computa ~ao Algortmi a: Problemas Inde idveis


sabemos qual a resposta orreta n~ao faz nenhuma diferen a, o que importa e que existe
alguma maquina de Turing que d^e a resposta orreta.

9.2 O Problema da Parada para Maquinas de Turing


Come aremos om alguns problemas om alguma signi ^an ia histori a e ao mesmo tempo
que nos da um ponto de partida para desenvolver outros resultados. O mais onhe ido
desses problemas e o problema da parada, para as maquinas de Turing. Estabele ido
de modo simples, o problema e: dado a des ri ~ao de uma maquina de Turing M e uma

entrada w, quando ini iado na on gura ~ao ini ial q0 w, ela efetua uma omputa ~ao que
para? usando uma maneira abreviada de falar do problema, perguntamos se M apli ada

a w, ou simplesmente (M; w), para ou n~ao para. O domnio desse problema e o onjunto
de todas as maquinas de Turing e todo w, isto e, estamos pro urando uma uni a maquina
de Turing que, dado a des ri ~ao de uma maquina de Turing arbitraria M e w, prev^e se a
omputa ~ao de M apli ado a w parara.
N~ao poderemos a har a resposta simulando a a ~ao de M s^obre w, digamos efetuando
numa maquina de Turing universal, porque n~ao existe limite no omprimento da omputa ~ao. Se M entra num la o in nito, ent~ao n~ao importa quanto tempo esperemos, n~ao
poderemos, jamais, estar seguros de que M , realmente, esta num la o. Pode a onte er,
simplesmente, o aso de uma omputa ~ao muito longa. O que pre isamos e um algoritmo
que possa determinar a resposta orreta para qualquer M e w, ao efetuar uma analise na
des ri ~ao da maquina e a entrada. Mas, omo veremos, tal algoritmo n~ao existe.
Para dis uss~oes posteriores, e onveniente ter uma ideia pre isa do que queremos dizer
om o problema da parada. Por isso, faremos a seguinte de ni ~ao.

De ni ~ao 9.2.1 Suponha que wM des reve uma maquina de Turing, M = hQ; ; ; ; q0 ; 2; F i,
e seja w qualquer elemento de + . Uma solu ~
ao para o problema da parada e uma

maquina de Turing

H,

a qual para qualquer

wM

e w, forne e a omputa ~ao

q0 wM w ` x1 qf x2 ;

se

apli ado a

para, e
q0 wM w ` y1 qn y2 ;

se

apli ado a

n~ao para. Aqui

qf

qn

s~ao ambos estados nais de

Teorema 9.2.2 N~ao existe qualquer maquina de Turing,

H.

que se omporta omo as


exig^en ias da de ni ~ao 9.2.1. O problema da parada e portanto inde idvel.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

H,

213

9.2. O Problema da Parada para Maquinas de Turing

qf

qn

Figura 9.1: Diagrama de blo os para uma suposta maquina de Turing que resolve o
problema da parada.
~ o: Assumiremos o ontr
Demonstra
a
ario, isto e, que existe um algoritmo, e onse-

quentemente uma maquina de Turing H , que resolve o problema da parada. A entrada


para H sera a des ri ~ao ( odi ada de alguma forma) de M , digamos wM , assim omo
a entrada w. A exig^en ia e, ent~ao, que dado qualquer (wM ; w), a maquina de Turing H
parara om um sim ou um n~ao. Conseguiremos isso pedindo que H pare num dos dois
estados nais orrespondentes, digamos, qf e qn . A situa ~ao pode ser visualizada por um
diagrama de blo o omo na gura 9.1.
Esse diagrama tem a intens~ao de indi ar que, se H ome ar no estado q0 , om entrada
(wM ; w) ela parara no estado qf ou qn . Pela exig^en ia da de ni ~ao 9.2.1 devemos pedir
que H opere segundo as seguintes regras:
q0 w

se

Mw

Mw

x1 q x2 ;

apli ado w para, e


q0 w

se

apli ado a

y1 q y2 ;

n~ao para.

Em seguida modi amos H para produzir uma maquina de Turing H 0 , omo da gura
9.2.
Com o novo estado a res entados a H queremos assegurar que existem transi ~oes entre
o estado qf e o novo estado qa , n~ao importa que smbolos est~ao na ta, de tal modo que
a ta se mantem inalterada. A maneira omo e feita e direta. Comparando H e H 0
observamos que, na situa ~ao onde H atinge qf e para, a maquina modi ada H 0 entra
num la o in nito. Formalmente, a a ~ao de H 0 e des rita por

` 1

M w H

q0 w

se

214

apli ada a

para, e
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

qf

qn

Figura 9.2: Diagrama de blo os para uma variante da suposta maquina de Turing que
resolve o problema da parada
q0 w

se

Mw H

y1 q y2 ;

apli ada a n~ao para.


De 0 onstruimos uma outra maquina de Turing . Esta nova maquina toma a
entrada M , a opia, e ent~ao se omporta exatamente om 0. Assim, a a ~ao de e tal
que
M

M  Hb

q0 w

se

apli ada a M para, e

` 1

M wM  Hb

q0 w

M  Hb

q0 w

se

M wM  Hb

q0 w

y1 q y2 ;

apli ado a M n~ao para.


Agora, e uma maquina de Turing, que tera alguma des ri ~ao em + , digamos
b . Essa adeia alem de ser a des ri ~
ao de pode, tambem, ser usada omo entrada.
Podemos, seguramente, perguntar o que a onte eria se fosse apli ada a b . Assim,
identi ando om , obteremos
M

q0 w

se

` Hb 1


apli ada a b para, e


w

q0 w

` Hb


y1 q y2 ;

se apli ada a b n~ao para. Isto e laramente um absurdo. Essa ontradi ~ao resultou
da suposi ~ao de que existe e portanto a de ibilidade do problema da parada, deve ser
falsa.
H

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

215

9.2. O Problema da Parada para Maquinas de Turing

Alguem poderia objetar, da de ni ~ao 9.2.1, que foi exigido da maquina H para resolver
o problema da parada que ome asse e terminasse numa on gura ~ao espe  a. N~ao e
di il v^er, no entanto, que as ondi ~oes es olhidas de modo arbitrario desempenha um
papel muito pequeno no argumento. Essen ialmente, o mesmo argumento poderia ser
usado om quaisquer outras on gura ~oes de in io e m. Ligamos o problema a uma
on gura ~ao espe  a somente para fa ilitar o argumento, sem, no entanto, afetar a
on lus~ao.
E importante ter em mente o que o teorema 9.2.2 nos diz. Ele n~ao proibe a solu ~ao
do problema da parada para asos espe  os. Frequentemente podemos, via uma analise
de M e w, dizer se a maquina de Turing parara ou n~ao. O que o teorema diz e que isso
n~ao pode ser feito sempre. N~ao existe um algoritmo que pode tomar a de is~ao orreta
para todo wM e w.
O argumento para provar o teorema 9.2.2 foi dado porque ^ele e lassi o e de interesse
histori o. A on lus~ao do teorema e derivada, realmente, de resultados anteriores omo o
seguinte argumento mostra.
Teorema 9.2.3

Se o problema da parada fosse de id


vel, ent~
ao toda linguagem re ursiva-

mente enumer
avel seria re ursiva. Consequentemente, o problema da parada 
e inde id
vel.

Para v^er isto, seja L uma linguagem re ursivamente enumeravel sobre


, e seja M uma maquina de Turing que re onhe e L. Seja H a maquina de Turing que
resolve o problema da parada. Construimos o seguinte pro edimento:
~ o:
Demonstra
a

1. Aplique H a wM w. Se H disser \n~ao" (isto e, se parar no estado qn ), ent~ao por


de ni ~ao, w 62 L.
2. Se H disser \sim" (isto e, se parar no estado qf ), ent~ao aplique M a w. Mas, M
deve parar. Portanto ele dira mais edo ou mais tarde se w 2 L ou n~ao.
Isto onstitui um algoritmo de pertin^en ia, tornando L re ursiva. Mas ja sabemos que
existem linguagens re ursivamente enumeraveis que n~ao s~ao re ursivas. A ontradi ~ao nos
diz que o problema da parada e inde idvel.
A simpli idade om que o problema pode ser obtido de teorema 8.2.5 e uma onsequ^en ia do fato de que o problema da parada e o problema de pertin^en ia para linguagens re ursivasmente enumeraveis s~ao \quase" id^enti os. A uni a diferen a e que no
problema da parada n~ao distinguimos entre parar num estado nal e n~ao- nal, enquanto
no problema de pertin^en ia fazemos essa distin ~ao. As provas dos teoremas 8.2.5 e 9.2.2
est~ao proximamente rela ionados, ambos s~ao uma vers~ao da diagonaliza ~ao.
216

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Captulo 9. Limites da Computa ~ao Algortmi a: Problemas Inde idveis


9.3

Redu
~
ao de um Problema Inde id
vel ao Problema da Parada

O argumento usado no teorema 9.2.3 para one tar o problema da parada om o problema
da pertin^en ia, ilustra uma te ni a de redu ~ao muito importante, que pode ser utilizada
para demonstrar a inde ibilidade de outros problemas de de is~ao. Dizemos que um problema A e reduzido a um problema B se a de ibilidade de A a arreta a de ibilidade de B . A
ideia e expressar o problema B em termos do problema A e de problemas onhe idos omo
de idveis. Assim, se soubermos que A e inde idvel, podemos on luir que B tambem e
inde idvel. Inversamente, se soubermos que B e inde idvel ent~ao ne essariamente A e
inde idvel. Vamos v^er alguns exemplos para ilustrar essa ideia.

Exemplo 9.3.1 O problema da entrada em um estado e o seguinte. Dada qualquer


maquina de Turing M = hQ; ; ; ; q0 ; 2; F i e qualquer q 2 Q, w 2 + , de idir se
a maquina entrara ou n~ao no estado q quando M e apli ado a w. Este problema e
inde idvel.
Para reduzir o problema da entrada em um estado ao problema da parada, suponha
que temos um algoritmo A que resolve o problema da entrada de um estado. Poderamos,
ent~ao, usa-lo para resolver o problema da parada. Por exemplo, dado qualquer M e w,
de tal maneira que M para no estado q se e
primeiro modi amos M para obter M
somente se M para. Podemos fazer isso, simplesmente, olhando a fun ~ao de transi ~ao

. Se M p
ara, ^ela somente faz isso porque algum (qi ; a) e inde nido. Para obter M
tro amos isto por
(qi ; a)

= (q; a; D);

; q; w).
onde q e um estado nal. Apli amos o algoritmo da entrada de um estado A a (M
Se A responde sim, isto e, o estado q entrara, ent~ao (M; w) para. Se A diz n~ao, ent~ao
(M; w) n~ao para.
Portanto a hipotese de que o problema da entrada de um estado e de idvel nos da
um algoritmo para o problema da parada. Como o problema da parada e inde idvel, o
problema da entrada de um estado deve ser inde idvel.

Exemplo 9.3.2 O problema da parada da ta em bran o e um outro problema que

pode ser reduzido ao problema da parada. Dado uma maquina de Turing M , determine
se M para ini iando om a ta em bran o ou n~ao. Este problema e inde idvel.

Para provar isso, tome qualquer maquina de Turing M e qualquer w. Primeiro, onstruiremos de M uma nova maquina, Mw , que ini ia om a ta em bran o, es reve w nela,
e ent~ao se posi iona na on gura ~ao q0 w. Apos isso, Mw se omporta exatamente omo
 laro que Mw parara sobre uma ta em bran o se e somente se M para em w.
M. E
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

217

9.3. Redu
~
ao de um Problema Inde id
vel ao Problema da Parada

gera

(M, w )

M w

Mw

A algoritmo da

para

parada para a
fita em branco

no pra

Figura 9.3: Algoritmo para o problema da parada usando um algoritmo de parada para
a ta em bran o.
Suponha, agora, que o problema da parada da ta em bran o seja de idvel. Dado
qualquer (M; w), primeiro onstruimos Mw , ent~ao apli amos o algoritmo da parada da
ta em bran o a ele. A on lus~ao nos diz se M apli ado a w parara. Como isso pode
ser feito para qualquer M e w, o algoritmo para o problema da ta em bran o pode ser
onvertido num algoritmo para o problema da parada. Como este ultimo e inde idvel o
problema da parada para a ta em bran o tambem e.

A onstru ~ao dos argumentos desses dois exemplos ilustra uma abordagem omum
para estabele er resultados de inde ibilidade. Um diagrama de blo o sempre nos ajuda a
visualizar o pro esso. A onstru ~ao no exemplo 9.3.2 e resumida na gura 9.3. Naquele
diagrama, primeiro usamos um algoritmo que transforma (M; w) em Mw . Tal algoritmo
laramente existe. Em seguida usamos o algoritmo para resolver o problema da parada
para a ta em bran o, A, que assumimos existir. Pondo os dois juntos obteremos um
algoritmo para o problema da parada, mas isso e impossvel, on luindo que A n~ao existe.
Um problema de de is~ao e uma fun ~ao om valores em f0; 1g, isto e, verdadeiro ou
falso. Podemos olhar tambem para fun ~oes mais gerais para v^er se s~ao omputaveis.
Redu ~ao ao problema da parada e, tambem, adequado aqui. Devido a tese de Turing, esperamos que fun ~oes en ontradas em irs unst^an ias prati as sejam omputaveis. Assim,
para a har exemplos de fun ~oes n~ao omputaveis deveremos ir um pou o alem. Muitos
exemplos de fun ~oes n~ao omputaveis est~ao asso iadas a tentativa de prev^er o omportamento de uma maquina de Turing.
Seja = f0; 1; 2g. Considere a fun ~ao f (n) ujo valor e o numero
maximo de movimentos que pode ser feito por uma maquina de Turing, de n estados que
para quando ini ia om uma ta em bran o. Esta fun ~ao, omo n~ao poderia deixar de
ser, n~ao e omputavel.

Exemplo 9.3.3

Antes de provarmos a a rmativa, vamos nos onven er de que f (n) e de nida para
todo n. Observe que existe um numero nito de maquinas de Turing om n estados. Isso
a onte e porque Q e s~ao nitos. Portanto, tem omo domnio um onjunto nito de
valores. Isso, por outro lado, impli a que existe somente um numero nito de diferentes
's e onsequentemente um n
umero nito de diferentes maquinas de Turing om n estados.

218

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

M para
em m
etapas
construir

para

U
nao para

M nao
para em
m etapas

M
m=f(|Q|)
F

Figura 9.4: Algoritmo para o problema da parada om a ta em bran o baseado num


algoritmo para omputar f (n).

De todas as maquinas de n estados, existem algumas que sempre param. Por exemplo, aquelas que tem somente estados nais e n~ao efetua, portanto, nenhum movimento.
Algumas das maquinas de n estados n~ao param quando ini iam om uma ta em bran o,
mas essas n~ao entram na de ni ~ao de f . Toda maquina que para exe utara um erto
numero de movimentos. Desses tomamos o maior para forne er f (n).
Tome qualquer maquina de Turing, M , e m um inteiro positivo. E fa il modi ar
de tal maneira que esta ultima sempre parara om uma das duas
M para produzir M
respostas: M apli ada a uma ta em bran o para em n~ao mais do que m movimentos, ou
M apli ada a uma ta em bran o faz mais do que m movimentos. Tudo que temos de fazer
para isso e tomar M , ontar seus movimentos e terminar quando este numero ex eder m.
Assuma, agora, que f (n) e omputavel por alguma maquina de Turing F . Podemos,
e F omo e mostrado na gura 9.4. Primeiro omputamos f (j Q j),
ent~ao, juntar M
onde Q e o onjunto de estados de M . Isto nos diz o numero maximo de movimentos
,
que M pode fazer se parar. O valor obtido e, ent~ao, usado omo m para onstruir M

omo esbo ado. Uma des ri ~ao de M e dado a uma maquina de Turing universal para
exe u ~ao. Isto nos diz se M apli ado a uma ta em bran o para ou n~ao em menos de
f (j Q j) etapas. Se a harmos que M apli ada a uma ta em bran o faz mais do que f (j Q j)
movimentos, ent~ao, devido a de ni ~ao de f , a impli a ~ao e que M nun a para. Portanto,
temos uma solu ~ao para o problema da parada para a ta em bran o. A impossibilidade
da on lus~ao nos leva a a eitar que f n~ao e omputavel.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

219

9.4. Problemas Inde id


veis para Linguagens Re ursivamente Enumer
aveis

9.4

Problemas Inde id


veis para Linguagens Re ursivamente Enumer
aveis

Con luimos que n~ao existe algoritmo de pertin^en ia para linguagens re ursivamente enumeraveis. A falta de um algoritmo para de idir sobre alguma propriedade n~ao e ex e ~ao
para essas linguagens. Como veremos, podemos dizer muito pou o sobre essas linguagens.
As linguagens re ursivamente enumeraveis s~ao t~ao gerais que, essen ialmente, qualquer
quest~ao que zermos sobre elas e inde idveis. A demonstra ~ao de resultados espe  os
signi a, invariavelmente, numa redu ~ao ao problema da parada ou a uma de suas onsequ^en ias imediatas. Vamos dar aqui alguns exemplos para mostrar omo isso e feito e
da derivar uma indi a ~ao para uma situa ~ao geral.
Teorema 9.4.1

Seja

uma gramati a irrestrita. Ent~ao o problema de determinar se


L(G)

=;

ou n~ao e inde idvel.


~ o: Reduziremos esse problema ao problema da pertin^en ia para linguaDemonstra
a

gens re ursivamente enumeraveis. Suponha que e dado uma maquina de Turing, M , e


uma adeia w. Podemos onstruir uma nova maquina de Turing M a partir de M omo
segue. M p~oe uma opia de sua entrada em alguma parte espe ial de sua ta e se omporta omo M omputando na ta em bran o. Se ela entra num estado nal, M veri a
a entrada guardada no in io da omputa ~ao e a a eita se e somente se ela e w. Podemos
fazer isso modi ando de um modo simples, riando para ada w uma maquina, Mw ,
tal que
0

L(Mw )

= L(M ) \ fwg

Usando o teorema 8.3.5, onstruimos uma gramati a Gw orrespondente. Claramente,


 laro, tambem, que L(Gw )
a onstru ~ao levando de M e w a Gw pode, sempre, ser feito. E
e n~ao vazio se e somente se w 2 L(M ).

Suponha, agora, que existe um algoritmo, A, para de idir se L(G) = ; ou n~ao. Se


denota um algoritmo por meio do qual geramos Gw , ent~ao pomos junto T e A omo
mostrado na gura 9.5. Essa gura e uma maquina de Turing que para qualquer M e w
nos diz se w 2 L(M ) ou n~ao. Se tal maquina de Turing existisse teramos um algoritmo de
pertin^en ia para qualquer linguagem re ursivamente enumeravel, em ontradi ~ao om o
resultado estabele ido anteriormente. Con luimos, portanto, que o problema estabele ido
de se \L(G) = ; ou n~ao" n~ao e de idvel.
T

Seja M uma maquina de Turing qualquer. A quest~ao de se L(M ) e nita


ou n~ao e inde idvel.
Teorema 9.4.2

220

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

algoritmo T

M ,w

Gw

construir

L(G

algoritmo

) nao vazio

w C L(M)

testa se

w C L(M)

e vazio

L(G w ) vazio

Figura 9.5: Algoritmo de pertin^en ia para linguagens re ursivamente enumeraveis.

L(M) e finita

algoritmo

gera

M ,w

nao para

de finitude

para

L(M)

nao e finita

Figura 9.6: Uma solu ~ao para o problema da parada baseada num algoritmo que diz se
uma linguagem e nita ou n~ao.
Considere o problema da parada, (
). De onstruiremos uma

outra maquina de Turing, , que faz o seguinte. Primeiro, os estados de parada de
s~ao tro ados de tal modo que se qualquer um e atingido, toda entrada e a eita por .
Isto pode ser onseguido fazendo ada on gura ~ao de parada ir para um estado nal.
Segundo, a maquina original e modi ada de modo que a nova maquina, , primeiro
gera na sua ta, ent~ao efetua as mesmas omputa ~oes que , usando o re entemente
riado e alguns outros espa os n~ao usados. Em outras palavras, os movimentos feitos por
apos ela es rever na ta s~ao os mesmos que teriam sido feitos por se ela tivesse
ome ado na on gura ~ao original 0 . Se para em qualquer on gura ~ao, ent~ao
parara num estado nal.
Portanto, se (
) para, atingira um estado nal para todas as entradas. Se
(
) n~ao para, ent~ao , tambem, n~ao parara e portanto n~ao a eitara nada. Em outras
palavras, ou a eita a linguagem in nita + ou a linguagem nita ;.
Se, agora, assumimos a exist^en ia de um algoritmo, , que nos diz se ( ) e nita
ou n~ao, podemos onstruir uma solu ~ao para o problema da parada omo e mostrado na
gura 9.6. Logo, n~ao existe algoritmo para de idir se ( ) e nito ou n~ao.
~ o:
Demonstra
a

M; w

q w

M; w

M; w

L M

L M

Exemplo 9.4.3 Mostre que para uma m


aquina de Turing arbitr
aria M , om

=f

a; b ,

( ) ontem duas adeias diferentes om o mesmo tamanho" e inde idvel.

o problema \L M

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

221

9.5. O Problema da Correspond^


en ia de Post

Para mostrar isso, usamos exatamente a mesma abordagem do teorema 9.4.2, ex eto
atinge uma on gura ~ao de parada, ela sera modi ada para a eitar as
que quando M
duas adeias a e b. Para isso, a entrada ini ial e guardada e no m da omputa ~ao e
omparada om a e b, a eitando somente essas duas adeias. Portanto, se (M; w) para,

n~ao a eitara nada.
M a eitar
a duas adeias de omprimentos iguais, aso ontrario M
O resto do argumento pro ede omo no teorema 9.4.2.

Exatamente do mesmo modo, podemos olo ar outras quest~oes tais omo \ ( )


ontem qualquer adeia de omprimento 5?" ou \ ( ) e regular?" sem afetar essen ialmente o argumento. Essas quest~oes, assim omo quest~oes similares, s~ao todas inde idveis. Um resultado geral formalizando este fato e onhe ido omo teorema de Ri e.
Seu enun iado e prova pode ser en ontrado em [HU79.
L M

L M

9.5

O Problema da Correspond^
en ia de Post

A inde ibilidade do problema da parada tem diversas onsequ^en ias de interesse prati o,
em parti ular, na area de linguagens livres de ontexto. Mas em muitas situa ~oes e dif il
trabalhar diretamente om o problema da parada. E onveniente estabele er alguns resultados intermediarios que preen ha a dist^an ia que existe entre o problema da parada e
outros problemas. Esses resultados intermediarios segue da inde ibilidade do problema da
parada, mas s~ao mais proximamente rela ionados om os problemas que pretendemos estudar, om isso tornando os argumentos mais fa eis. Um desses resultados intermediarios
e o problema da orrespond^en ia de Post.
O problema da orrespond^en ia de Post pode ser estabele ido omo segue. Dada duas
sequ^en ias de adeias, sobre algum alfabeto , por exemplo
n

w1 ; w2 ; : : : ; wn

v1 ; v2 ; : : : vn

dizemos que existe uma solu ~ao da orrespond^en ia de Post (solu ~ao-CP) para o
par ( ) se existe uma sequ^en ia n~ao vazia de inteiros
tal que
A; B

i; j; : : : ; k

wi wj : : : wk

vi vj : : : vk :

O problema da orrespond^en ia de Post e forne er um algoritmo que nos diga para


qualquer ( ) se existe uma solu ~ao-CP.
A; B

Exemplo 9.5.1 Seja

 = f0 1g e tome
;

w1

222

= 11

w2

omo

= 100

w3

= 111
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

Captulo 9. Limites da Computa ~ao Algortmi a: Problemas Inde idveis


w1
1

w3

w2
1

v2

v1

v3

Figura 9.7: Exemplo de solu ~ao-CP

v1

= 111;

v2

= 001;

v3

= 11:

Para isto existe uma solu ~ao-CP, omo mostrado na gura 9.7.
Se tomarmos
w1

= 00;
v1

= 0;

w2

v2

= 001;
= 11;

w3

v3

= 1000

= 001

n~ao existe qualquer solu ~ao-CP porque qualquer adeia omposta de elementos de
maior do que a adeia orrespondente de B .

sera

Em inst^an ias espe  as podemos ser apazes de mostrar, expli itamente onstruindo,
que o par (A; B ) permite uma solu ~ao-CP, ou poderemos argumentar, omo zemos a ima,
que nenhuma solu ~ao e possvel. Mas em geral, n~ao existe algoritmo para de idir essa
quest~ao sob todas as ir unst^an ias. A orrespond^en ia de Post e portanto inde idvel.
No entanto, o pro esso para demonstrar esse fato e longo. Para ser mais laro,
dividimo-lo em duas partes. Na primeira, introduzimos o problema da orrespond^
en ia
de Post modi ado. Dizemos que o par (A; B ) tem uma solu ~ao do problema da orrespond^en ia de Post modi ado (solu ~ao-CPM) se exite uma sequ^en ia de inteiros i; j; : : : ; k
tal que
w1 wi wj : : : wk

= v1 vi vj : : : vk :

No problema da orrespond^en ia de Post modi ado, os primeiros elementos da sequ^en ia


A e B desempenham um papel espe ial, uma vez que qualquer solu
~ao deve ome ar om
eles. Observe que se existir uma solu ~ao-CPM, ent~ao, existe, tambem, uma solu ~ao-CP,
mas a re pro a n~ao e verdadeira.
O problema da orrespond^en ia de Post modi ado e forne er um algoritmo para
de idir se um par arbitrario (A; B ) admite uma solu ~ao-CPM. Este problema tambem e
inde idvel. Demonstraremos a inde ibilidade do problema da orrespond^en ia de Post
modi ado reduzindo-o a um problema inde idvel onhe ido, o problema da pertin^en ia
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

223

9.5. O Problema da Correspond^


en ia de Post

FS =

F 
e um s
mbolo n~
ao em V

2
2

para todo a

Vi

Vi

para todo Vi

E
yi

wE

T
V

E 
e um s
mbolo n~
ao em V

para todo xi

xi

yi em P

Tabela 9.1: Uma solu


~
ao-CPM gen
eri a para gram
ati as irrestritas.

de linguagens re ursivamente enumer


aveis. Para isso, introduzimos a seguinte onstru
~
ao.
Suponha que nos 
e dado uma gram
ati a irrestrita, G =

Nesta tabela, a adeia F S =

V; T ; S; P , e uma adeia alvo w .

Daqui riamos o par (A; B ), omo pode ser visto na tabela

9.1.


e para ser quebrado omo w1 e a adeia F omo v1 . A

ordem das outras adeias 


e irrelevantes.
Mais adiante alegaremos que w

L(G) se e somente se os onjuntos A e B onstru


dos

dessa maneira tem uma solu


~
ao-CPM. Como isso n~
ao 
e imediatamente 
obvio, vamos
ilustr
a-lo om um exemplo simples.

Exemplo 9.5.2

du ~oes
S
Bb

AC

!
!
!

aABb

Seja G = hfS; A; B; C g; fa; b; g; S; P i uma gramati a irrestrita om pro-

Bbb;

C;
aa :

e tomamos w = aaa . As sequ^en ias A e B obtidas da onstru ~ao sugerida s~ao dadas na
tabela 9.2. A adeia w = aaa esta em L(G) e tem deriva ~ao

S =

aABb =

aAC

aaa :

Na gura 9.8 s~ao mostradas as duas primeiras etapas de uma possvel solu ~ao-CPM
baseada na deriva ~ao a ima. Os inteiros a ima e abaixo da adeia de deriva ~ao mostram
os ndi es para w e v , respe tivamente, usados para riar a adeia.
Examine uidadosamente a gura 9.8 para v^er o que a onte e. Queremos onstruir
uma solu a~o-CPM, portanto devemos ome ar om w1 , isto e, F S =). Esta adeia
ontem S . Portanto para asa-la temos de usar v10 ou v11 . Nesta inst^an ia, usamos v10 .
Esta adeia em w10 leva-nos a uma segunda adeia na deriva ~ao par ial. Olhando mais
varias etapas, vemos que a adeia w1 wi wj : : : e sempre mais omprida do que a adeia
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade
224

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

1
2
3
4
5
6
7
8
9
10
11
12
13
14

w
FS =)
a
b

A
B
C
S
E
aABb
Bbb
C
aa
i

v
F
a
b

A
B
C
S
=) aaa E
S
S
Bb
AC
i

Tabela 9.2: Exemplo de solu ~ao-CPM para uma gramati a irrestrita.

w 10

w1
Etapa 1:

v 1 v 10
w1
Etapa 2:

w14w 2 w 5 w 12

w 10
a

v 1 v10 v14 v2 v 5

v 12

Figura 9.8: Exemplo de solu ~ao-CPM (par ial)

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

225

9.5. O Problema da Correspond^


en ia de Post

w 10

w1
Etapa 3:

v 1 v10 v14 v2 v 5

w14 w 2 w 5 w12w14w 2

v12

v14 v 2

v13

w9

w13
a a

v9

Figura 9.9: Exemplo de solu ~ao-CPM ( ontinua ~ao)

solucaoCPM
construir

G ,w

A e B

A,B

algoritmo

CPM
nenhuma
solucaoCPM

Figura 9.10: Algoritmo de pertin^en ia para uma gramati a irrestrita.

orresspondente v1 vi vj : : : e a primeira esta exatamente uma etapa a frente na deriva ~ao.


A solu a~o-CPM ompleta e mostrada na gura 9.9. A onstru ~ao, junto om o exemplo,
indi am as linhas que se deve seguir para estabele er o proximo resultado.
Seja G = hV; T ; S; P i qualquer gramati a irrestrita, om w qualquer adeia em T . Seja (A; B ) o par orrespondente onstrudo de G e w pelo pro esso exibido
na tabela 9.1. Ent~ao o par (A; B ) permite uma solu ~ao-CPM se e somente se w 2 L(G).
Teorema 9.5.3

~ o: (omitida) Os exemplos d~ao uma ideia da demonstra ~ao.


Demonstra
a
Teorema 9.5.4

O problema da orrespond^en ia de Post modi ado e inde idvel.

~ o: Dada uma gramati a irrestrita G = hV; T ; S; P i e w


Demonstra
a

2 T  , onstruimos

os onjuntos A e B omo sugerido a ima. Pelo teorema 9.5.3, o par (A; B ) tem uma
solu ~ao-CPM se e somente se w 2 L(G).

Suponha, agora, que o problema da orrespond^en ia de Post modi ado e de idvel.


Podemos, ent~ao, onstruir um algoritmo para o problema da pertin^en ia para G omo esta
esbo ado na gura 9.10. Um algoritmo para onstruir A e B de G e w laramente existe,
mas um algoritmo de pertin^en ia para G e w n~ao existe. Devemos, portanto, on luir
que n~ao deve existir um algoritmo para de idir o problema da orrespond^en ia de Post
modi ado.
Teorema 9.5.5

226

O problema da orrespond^en ia de Post e inde idvel.


Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

w C L(G)
w C L(G)

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

Argumentamos que se o problema da orrespond^en ia de Post fosse


de idvel o problema da orrespond^en ia de Post modi ado tambem seria.
Suponha que s~ao dadas as sequ^en ias = 1 2
e = 1 2
, sobre
algum alfabeto . Ent~ao, introduzimos novos smbolos e # e duas novas sequ^en ias
~ o:
Demonstra
a

w ; w ; : : : ; wn

v ; v ; : : : ; vn

y0 ; y1 ; : : : ; yn+1 ;

de nidas omo segue. Para = 1 2


i

yi

z0 ; z1 ; : : : ; zn+1 ;

;:::;n

wi1 [wi2 [    [wim [;

zi

[vi1 [vi2 [    [vir ;


i

onde e denotam a -esima letra de e , respe tivamente, e = , = .


Em palavras, e riado de anexando a ada ara ter de , enquanto e obtida
pre xando a ada ara ter de . Para ompletar a de ni ~ao de e , tomamos
wij

v ij

wi

yi

wi

vi

mi

vi

y0
yn+1
z0
zn+1

j wi j

wi

ri

j vi j

zi

= 1
=#
= 1
= #
[y

Considere, agora, o par ( ), e suponha que ele tem uma solu ~ao-CP. Por ausa da
tro a de e #, tal solu ~ao deve ter 0 no lado esquerdo e +1 no lado direito. Portanto
devemos ter
C; D

[w11 [w12 [ : : : [wj1 [ : : : [wk1 [ : : : [

yn

#=

[v11 [v12 [ : : : [vj1 [ : : : [vk1 [ : : : [

Ignorando os ara teres e #, vemos que isto impli a


[

w1 wj : : : wk

v1 vj : : : vk ;

portanto o par ( ) permite uma solu ~ao-CPM.


Podemos modi ar o argumento para mostrar que se existe uma solu ~ao-CPM para
( ). Logo, existe uma solu ~ao-CP para o par ( ).
Suponha, agora, que o problema da orrespond^en ia de Post e de idvel. Podemos,
ent~ao, onstruir a maquina mostrada na gura 9.11. Esta maquina, laramente, de ide o
problema da orrespond^en ia de Post modi ado. Mas ^este problema e inde idvel, onsequentemente n~ao podemos ter um algoritmo para de idir o problema da orrespond^en ia
de Post.
A; B

A; B

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

C; D

227

9.6. Problemas Inde id


veis para Linguagens Livres de Contexto

solucaoCP
construir

A,B

C,D

solucaoCPM

algoritmo

C e D

CP
nenhuma
solucaoCP

nenhuma
solucaoCPM

Figura 9.11: Algoritmo CPM.


9.6

Problemas Inde id


veis para Linguagens Livres
de Contexto

O problema da orrespond^en ia de Post e uma ferramenta onveniente para estudar


quest~oes inde idveis para linguagens livres de ontexto omo o proximo resultado ilustra.
Teorema 9.6.1 N~
ao existe um algoritmo para de idir se uma dada gram
ati a livre de
ontexto 
e amb
gua ou n~
ao.

Considere duas sequ^en ias arbitrarias


= ( 1 2
n) e
),
sobre
algum
alfabeto
.
Es olha
um
novo
onjunto
de
s

mbolos
n
n de tal modo que

~ o:
Demonstra
a

=(1
distintos

w ;w ;:::;w

v ; v2 ; : : : ; v

a1 ; a2 ; : : : ; a

fa1 ; a2 ; : : : ; an g \  = ;;

e onsidere as linguagens
=f

LA

i j

l k k l

j ig

w w :::w w a a :::a a

e
LB

=f

i j

l k k l

j i g:

v v :::v v a a :::a a

Agora, observe a gramati a livre de ontexto


G

= hf

A ; SB g;  [ fa1 ; a2 ; : : : ; an g; S; P i

S; S

onde o onjunto de produ ~oes


A , onsiste de

e a uni~ao dos dois sub onjuntos: O primeiro onjunto,

228

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

! A,
A ! i

=1 2
o segundo onjunto, B , tem as produ ~oes
! B,
B ! i B i j i i =1 2
Agora, tome
S

A ai

w S

i i

w a ; i

; : : : ; n;

v S

v a ; i

= hf

= hf

; : : : ; n:

A g;  [ fa1 ; a2 ; : : : ; an g; S; PA i

S; S

e
G

B g;  [ fa1 ; a2 ; : : : ; ang; S; PB i:

S; S

Ent~ao, laramente, LA = ( A) e LB = ( B ) e ( ) = LA [ LB .
E fa il v^er que A e B s~ao ambguas. Se uma dada adeia em ( ) termina om i,
ent~ao sua deriva ~ao om a gramati a A deve ter in io om =) i A i. Analogamente,
podemos dizer, num estagio posterior, quais regras tem de ser apli adas. Portanto, se
e ambguo, ela o seria porque existe um para o qual existem duas deriva ~oes.
L G

L G

L G

L G

w S

=)

=)

=)

i A

=)

i B

=)

w S

i j

k k : : : aj ai

w w :::w a

e
S

=)

v S

i j    vk ak    aj ai

v v

w:

Consequentemente, se e ambgua, o problema da orrespond^en ia de Post om o


par ( ) tem uma solu ~ao. Inversamente, se n~ao e ambgua, ent~ao o problema da
orrespond^en ia de Post n~ao pode ter solu ~ao.
Se existe um algoritmo para resolver a ambiguidade, poderamos adapta-lo para resolver o problema da gura 9.12, da orrespond^en ia de Post. Mas, omo n~ao existe
um algoritmo para resolver o problema da orrespond^en ia de Post, on luimos que o
problema da ambiguidade e inde idvel.
G

A; B

Teorema 9.6.2

arbitrarias,

G1

N~
ao existe algoritmo para de idir se para as gramati as livres de ontexto
G2 ,

( ) \ ( 2) 6= ;

L G1

L G

ou n~ao.
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

229

9.6. Problemas Inde id


veis para Linguagens Livres de Contexto

construir

A,B

algoritmo

G e ambigua

solucaoCP

da

ambiguidade

G e nao

nenhuma
solucaoCP

ambigua

Figura 9.12: Algoritmo CP.


~ o: Considere
Demonstra
a

G1 omo a gram
ati a GA e G2 omo a gramati a GB , omo
de nidos na prova do teorema 9.6.1. Suponha que L(GA ) e L(GB ) t^em um elemento em
omum, isto e,


A=

i j

k k : : : aj ai

i j

k k : : : aj ai :

w w :::w a


B=

v v :::v a

Ent~ao o par (A; B ) tem uma solu ~ao-CP. Inversamente, se o par n~ao tem uma solu ~aoCP, ent~ao L(GA ) e L(GB ) n~ao pode ter um elemento omum. Con luimos que L(GA )
L(GB ) =
se e somente se (A; B ) tem uma solu ~ao-CP. Esta redu ~ao prova o teorema.

6 ;

Existe uma variedade de outros resultados onhe idos nessa linha. Alguns desses
podem ser reduzidos ao problema da orrespond^en ia de Post, enquanto outros s~ao mais
fa ilmente resolvidos estabele endo-se, primeiro, alguns resultados intermediarios.
Que existam muitos problemas inde idveis one tados om linguagens livres de ontextos pare e surpreendente a primeira vista e mostra que existem limita ~oes para as
omputa ~oes em area nas quais tentamos uma abordagem algortmi a. Por exemplo, seria interessante que pudessemos dizer se uma linguagem de programa ~ao de nida em BNF
e ambgua ou n~ao, ou se duas diferentes espe i a ~oes de uma linguagem s~ao, realmente,
equivalentes. Mas os resultados que estabele emos nos diz que isso n~ao e possvel. Seria
 bom ter em mente que
uma perda de tempo pro urar um algoritmo para essas tarefas. E
isto n~ao afasta a possibilidade de que haja maneiras de obter respostas para problemas
espe  os. O que o resultado da inde ibilidade nos diz e que n~ao existe algoritmo geral,
e que qualquer solu ~ao que obtivermos devemos usar a estrutura espe  a do problema.

230

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Cap
tulo 9. Limites da Computa
~
ao Algor
tmi a: Problemas Inde id
veis

9.7

Exer 
 ios

1. Mostre que os seguintes problemas s~ao inde idveis:


(a) dada uma maquina de Turing M arbitraria, de idir se a maquina de Turing M
omputa uma fun ~ao ontante ou n~ao.
(b) dada uma maquina de Turing M = hQ; ; ; ; q0 ; 2; F i arbitraria e um ws 2 
arbitrario, de idir se existe ou n~ao uma entrada we 2  tal que a maquina de
Turing M quando ini iada no estado q0 e om we na ta de entrada para num
estado nal om ws na ta.
( ) dadas duas maquinas de Turing M1 e M2 arbitrarias, de idir se M1 e M2
omputam a mesma fun ~ao ou n~ao.
(d) dada uma maquina de Turing M arbitraria, de idir se ela omputa uma fun ~ao
om uma imagem nita ou in nita.
(e) seja um alfabeto e ws 2  . Dada uma maquina de Turing M = hQ; ; ; ; q0 ; 2; F i
arbitraria, de idir se existe ou n~ao uma entrada we 2  tal que a maquina de
Turing M quando ini iada no estado q0 e om we na ta de entrada para num
estado nal om ws na ta. Observe que e ws s~ao xos.
2. Seja M = hQ; ; ; ; q0 ; 2; F i uma maquina de Turing. Em que asos o problema
de de idir se, dado um ws 2  arbitrario, existe ou n~ao uma entrada we 2 
tal que a maquina de Turing M quando ini iada no estado q0 e om we na ta de
entrada para num estado nal om ws na ta, e de idvel?
3. Seja A = f001; 0011; 11; 101g e B = f01; 111; 111; 010g. O par (A; B ) tem uma
solu ~ao-CP? aso positivo, tem uma solu ~ao-CPM?.
4. D^e uma solu ~ao-CP para as seguintes sequ^en ias de adeias sobre fa; bg.
 A = faba; baba; abaa; baab; abg
 B

= fbaaaba; bbab; baba; baa; ag

Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

231

9.7. Exer 
 ios

232

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Bibliogra a
[Bir96 Rodolfo Ertola Biraben. Tese de Chur h: Algumas quest~
oes hist
ori o- on eituais.
Centro de L
ogi a, Epistemologia e Hist
oria da Ci^en ia - UNICAMP, ole ~ao CLE
Vol. 20, Campinas-SP, 1996.
[BL74 Walter S. Brainerd and Lawren e H. Landweber. Theory of Computation. John
Wiley & Sons, New York, 1974.
[CO98 Roberto Lins de Carvalho e Claudia Maria Gar ia Medeiros de Oliveira. Modelos
de omputa ~ao e sistemas formais. 11a Es ola de Computa ~
ao , Rio de Janeiro:
DCC/IM,COPPE/Sistemas, NCE/UFRJ, julho de 1998.
[Cut80 Nigel J. Cutland. Computability: An introdu tion to re ursive fun tion theory.
Cambridge University Press, Cambridge-UK, 1980.
[Lin90 Peter Linz. An Introdu tion to Formal Languages and Automata. D,C. Heath and
Company, Lexington-USA, 1990.
[Har78 M. A. Harrison. Introdu tion to Formal Languages Theory. Reading, Mass.:
Addison-Wesley, 1978.
[HU79 Hop roft and Ullman. Introdu tion to Automato Theory, Languages and Computation. Reading, Mass.: Addison-Wesley, 1979.
[Kar72 R. M. Karp. Redu ibility among ombinatorial problems. In Complexity of Computer Computations, R. Milner and J. That her eds., pp. 85-104, Plenum Press,
New York, 1972.
[Mar91 John C. Martin. Introdu tion to Languages and the Theory of Computation.
M Graw-Hill, In ., New York, 1991.
[Pap94 Christos H. Papadimitriou. Computa ional Complexity. Addison Wesley, USA,
1994 (reprinted with orre tion, 1995).
[Phi92 I. C. C. Phillips. Re ursion Theory. In Handbook of Logi in Computer S ien e, Vol. 1. S. Abramsky, Dov M. Gabbay and T.S.E. Maibaum Eds., Oxford
University Press, New York, 1992.
233

BIBLIOGRAFIA
[Pri97 Carlos Augusto di Pris o.

Una Introdu i
on a la Teor
a de Conjuntos y los Fun-

. Centro de L
ogi a, Epistemologia e Hist
oria da
Ci^en ia - UNICAMP, ole ~ao CLE Vol. 20, Campinas-SP, 1997.

damentos de las Matem


ati as

[Sal73 Arto Salomaa.


1973.

. A ademi Press, In ., Orlando-Florida, USa,

Formal Language

[Smi94 Carl H. Smith. A re ursive


Verlag, New York, 1994.

. Springer-

Introdu tion to the Theory of Computation

[Sob87 Ja ob Zimbarg Sobrinho. Aspe tos da Tese de Chur h-Turing.


versit
aria, n. 6, p
aginas 1-23, 1987.
[Sup60 Patri k Suppes.
1960.

Axiomati Set Theory

Matem
ati a Uni-

. D. Van Nostrand Company, In ., USA,

[Tho73 William J. Doubts Thomas. About some standard arguments for Chur h's Thesis. In: Radu Bodgen and Ilkka Iniluoto (eds), Logi , Language and Probability.
Dorbre ht: D. Reidel, pages 55-65, 1973

234

Introdu a~o a Teoria da Computa a~o:


Linguagens Formais e Computabilidade

Indi e
adeia, 10
omprimento, 10
on atena ~ao , 10
pre xo, 10
reversa, 10
su xo, 10
vazia, 10
aminho, 7
omprimento, 7
i lo, 7
simples, 8
omplexidade
omputa ional, 200
de espa o, 201
de tempo, 201
omputavel, 150
omputa ~ao
maquina de Turing, 145
omputabilidade, 211
on gura ~ao, 17
de morte, 30
de parada, 145
onjunto, 3
ontavel, 167
das partes, 5
nito, 5
in nito, 5
pot^en ia, 5
universo, 3
vazio, 3
onjuntos disjuntos, 5
ontradomnio, 6

DT empo(T (n)), 202


NT empo(T (n)), 202
-fe ho, 29
-produ ~ao, 102
-transi ~ao, 27, 116

arvore, 8
de deriva ~ao , 82
par ial, 83
altura, 8
ordenada, 83
DEspa
o(S (n)), 202
NEspa
o(S (n)), 202
afd, 19
afn, 27
alfabeto, 10
da ta, 140
da pilha, 116
de entrada, 19
algoritmo, 161
de pertin^en ia, 85
analise, 85
de pertin^en ia, 85
de pesquisa exaustiva, 86
arestas, 7
armazenamento temporario, 16
aut^omato, 16
a pilha n~ao determinsti o, 116
nito, 19
determinsti o, 19
n~ao determinsti o, 27
limitado linearmente, 190
re onhe edor, 19

de ibilidade, 211
deriva ~ao mais a direita, 82
deriva ~ao mais a esquerda, 82

ba ktra king, 31
BNF, 90
235

INDICE

des ri ~ao instant^anea, 118, 143


determinsti o, 21
diagonaliza ~ao , 178
diagrama de blo o, 153
domnio, 6
estado
ini ial, 19
estados
de a eita ~ao, 19
de morte, 22
nais, 19
internos, 16, 19
express~ao regular, 45
primitiva, 45
famlia de onjuntos, 5
fe ho estrela, 11
fe ho positivo, 11
ta de entrada, 16
folhas, 8
forma de Ba kus-Naur, 90
forma normal, 106
de Chomsky, 106
de Greiba h, 108
SC, 188
fun ~ao, 5
de A kermann, 194
de transi ~ao, 17, 19
estendida, 20, 29
par ial, 6
re ursiva, 194
primitiva, 194
total, 6
grafo, 7
de depend^en ia, 99, 104
de transi ~ao, 20
dirigido, 7
gramati a, 13
esquerda-direita, 91
irrestrita, 181
linear, 57
a direita, 57

236

a esquerda, 57
regular, 57
ambigua, 91
esquerda-re ursiva, 98
livre de ontexto, 79
sensvel ao ontexto, 186
homomor smo, 66
imagem, 6
homomorfa, 67
lema da bomba, 71, 133
linguagem, 11
omplemento, 12
on atena ~ao , 12
fe ho estrela, 12
fe ho positivo, 12
formal, 9
gerada, 14
inerentemente ambigua, 93
livre de , 102
n~ao ambigua, 93
natural, 9
re ursiva, 176
re ursivamente enumeravel, 176
a eita por um afd, 21
linear, 198
livre de ontexto, 79
livre de ontexto determinsti o, 198
regular, 25
sensvel ao ontexto, 186
maquina de Turing, 139
om ta semi-in nita, 162
om op ~ao de perman^en ia, 162
o -line, 163
padr~ao, 140
universal, 166
om multiplas tas, 163
multidimensional, 164
n~ao determinsti a, 165
o -line, 163
ma roinstru ~ao, 155
movimento, 17
Introdu a~o a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

INDICE
n~ao determinismo, 31

Turing- omputavel, 150

palndromos, 58
par ordenado, 6
problema
da orrespond^en ia de Post, 222
modi ado, 223
da parada, 213
de de is~ao, 212
de idvel, 212
intratavel, 207
polinomial, 206
pro edimento de enumera ~ao , 167
produ ~ao, 13
esquerda-re ursiva, 98
inutil, 98
unitaria, 104
produto artesiano, 6
pseudo- odigo, 155

unidade de ontrole, 16
verti e, 7
lho, 8
pai, 8

rotulo, 8
raiz, 8
redu ~ao de um problema, 217
re exividade, 7
rela ~ao
de equival^en ia, 7
smbolo terminal, 13
senten a, 11, 14
simetria, 7
solu ~ao-CP, 222
solu ~ao-CPM, 223
sub onjunto, 3
proprio, 3
subprograma, 156
teorema
de Ri e, 222
teoria da omplexidade, 200
tese
de Chur h, 159
de Cook-Karp, 208
de Turing, 158
transitividade, 7
trilha, 7
Introdu a~o 
a Teoria da Computa a~o:
Linguagens Formais e Computabilidade

237

Potrebbero piacerti anche