Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Benedito Melo A
i
oly
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
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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
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
61
3.2.1
3.3
CONTEUDO
3.3.3
3.4.2
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
CONTEUDO
6 Propriedades das Linguagens Livres de Contexto
133
139
iii
CONTEUDO
8
175
8.4.2
8.4.3
8.4.4
8.4.5
8.6.2
8.6.3
8.6.4
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
Lista de Figuras
1.1 O diagrama de um grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
. . . . . . . . . . . . . . . . 23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
. . . . . . . . . . . . . . . . . . . . 29
. . . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . . . . . 35
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
. . . . . . . . . . . . . . . . . . . . . 33
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
. . . . . . . . . . . . . . . . . . 32
. . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
. . . . . . . . . . . . . . . . . . . . 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
3.7
M3
3.8
M4
3.9
M5
re onhe e L(ba). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.10
M6
Vi
a1 a2 : : : am Vj
Vi
a1 a2 : : : am
, respe tivamente.
. 60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.15 afd M2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1 Parte da arvore de deriva
~ao para a produ
~ao A
. . . . . . . . . 83
abAB
. . . 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
. . . . . . . . . . . . . . . 142
vi
LISTA DE FIGURAS
7.6
7.7
7.8
7.9
7.10
7.11
7.12
.
.
.
.
.
.
.
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 Congura
~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
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 renar 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 deni
~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 denir 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.
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.
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
;
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.
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
. Ent~ao
i2I
i = fx = existe
tal que
2 ig
A
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).
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
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
Cap
tulo 1. Introdu
~
ao
Re exividade:
Simetria: se
Transitividade: se
Exemplo 1.1.3
x x
x y
para todo x,
, ent~ao
x y
y x
e y z , ent~ao
x z
se e somente se
(mod 3) = y (mod 3)
1.1.3
Grafos e Arvores
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
v2
v3
Cap
tulo 1. Introdu
~
ao
Raiz
Nivel 0
Folha
Altura=3
Nivel 3
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 unique todos estes
asos, sera ne
essario adotar
uma deni
~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 denidas.
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
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 prexo e u um suxo 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 deni
~ao mais pre
isa de
omprimento de
adeia. Daremos a seguinte deni
~ao re
ursiva.
j
j= 0
j
a j= 1
j
wa j=j w j +1
10
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 denir 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, denimos o fe
ho soma
de uma alfabeto , por + = fg.
Enquanto um alfabeto e um
onjunto nito, e + s~ao sempre innitos, pois e
n~ao vazio e n~ao existe limite no
omprimento das
adeias nesses dois
onjuntos.
Uma linguagem e denida 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 deni
~ao, bastante ampla, de linguagem, estudaremos metodos pelos
quais poderemos denir 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
11
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 innita.
Como as linguagens s~ao
onjuntos, a uni~ao, a interse
~ao e a diferen
a de duas linguagens s~ao imediatamente denidas. O
omplemento de uma linguagem L, sobre o
alfabeto , e denida
om respeito a , isto e, o
omplemento de L e a liguagem, sobre
, denida 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
[L
1
i=0
= L0 [ L1 [ L2 [ L3 [
[
= L
1
i=1
= L1 [ L2 [ L3 [
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 denir
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 deni
~oes dos
onstrutos introduzidos na deni
~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.
Deni
~ao 1.2.4 Uma gramati
a, G, e denida
omo uma quadrupla G = hV; T ; S; P i,
onde
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 denem uma linguagem asso
iada
a gramati
a. Assumiremos que todas as produ
~oes s~ao da forma
x
y;
13
= 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:
=) 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 denida ou gerada pela
gramati
a.
Se
=) 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
Cap
tulo 1. Introdu
~
ao
S
S
! aSb
! :
Ent~
ao,
A adeia
aabb
onde
e dado por
S =) aabb.
e uma senten
a na linguagem gerada por G, enquanto
aaSbb
e uma
Uma gramati
a G dene
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
b ,
n n
S
A
A
! Ab
! aAb
!
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
15
S
A
! 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
16
Cap
tulo 1. Introdu
~
ao
Fita de Entrada
Controle
Estado
Interno
Area de Armazenamento
Unidade de
Saida
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
17
18
Cap
tulo 2
Aut^
omatos Finitos
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).
Deni
~ao 2.1.1 Um Aut^omato nito determinsti
o (afd) e uma quntupla
M
= hQ; ; ; q0 ; F i, onde
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 deni
~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
(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.
0
1
0
q
q
1
0
1
q0 ;
2.2
apli
ando 2)
apli
ando 2) e 0 = 0
apli
ando 1)
apli
ando
apli
ando
Linguagens e afd's
Tendo denido pre
isamente um afd podemos, agora, denir 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,
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 denido, 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
21
a,b
b
0
q
1
a,b
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
( ) = 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
Cap
tulo 2. Aut^
omatos Finitos
q0
q0
q1
q1
q2
q2
q2
q2
q2
=f
g, om prexo
a; b
a,b
a
0
b
1
a
b
q
a,b
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
23
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 denir 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
Exemplo 2.2.6
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
PI
b
PP
b
a
IP
II
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
Deni ~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.
25
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
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
onde
Q;
; qo e F
= hQ; ; ; q0 ; F i
: Q ( [ fg) ! 2Q:
Observe que existem duas diferen
as prin
ipais entre essa deni
~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 dene
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
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
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
q
1
A deni
~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
) = -f e ho(q)
q;
)=
q; wa
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
( )
f e ho qj :
29
q
2
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
) = fq0 ; q2g:
q2 ;
= hQ; ; ; q0 ; F i,
M
M , no
e
sentido dado ante-
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.
30
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)
= ;:
= 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 deni
~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 deni
~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
! 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 deni
~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.
Exemplo 2.5.1
32
Cap
tulo 2. Aut^
omatos Finitos
0
0
0
1
1
1
1
1
0,1
j j
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
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
(fq0 ; q1 g; 1) = ;:
Analogamente,
(fq0 ; q2 g; 1) = N (q0 ; 1) [ N (q2 ; 1)
= ; [ fq1 g
= fq1 g:
34
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) = ;:
(fq2 g; 1)
=;
= fq1 g:
Neste ponto, todo estado tem todas as transi
~oes denidas. 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
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
=h
)= (
; N ; q0 ; FN i.
Dena MD = hQD ; ; D ; q0 ; FD i por
0
= fX j X Qg
D : 2Q ! 2Q
e denida por
QD
)=
D X; a
[ -f e ho(
q X
N (q; a));
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). Identique ^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)):
Cap
tulo 2. Aut^
omatos Finitos
0
1
GD
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
= 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
= N (q2 ; 0) = fq1 g
D (fq2 g; 1)
= N (q2 ; 1) = fq2 g
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
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
Cap
tulo 2. Aut^
omatos Finitos
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.
do algoritmo.
fq2 g.
passo 2 do algoritmo.
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}
40
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.
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
.
a's.
a.
ab.
Por exemplo,
, a, b d, ab d, b dab d, et .
a.
Todas as
adeias
om no m
nimo um a.
Todas as
adeias
om mais do que tr^
es a's.
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
41
2.6. Exer
ios
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
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;
Cap
tulo 2. Aut^
omatos Finitos
14. Seja
L2 .
(q0 ; 00101)
(q1 ; 100).
(q0 ; aa).
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,
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
Cap
tulo 3
Express~
oes e Gram
ati
as Regulares
Segundo nossa deni
~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 deni
~ao re
ursiva para express~ao regular.
f g
f g[f g[f g
45
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.
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.
Deni
~ao 3.1.3 A linguagem L(r), denotada por qualquer express~ao regular r, e denida
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 ),
As quatro ultimas regras (4.(a) ate 4.(d)), dessa deni
~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),
= 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
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
Existe um problema
om as regras de 4.(a) a 4.(d) na deni
~ao 3.1.3. Elas denem
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 deni
~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
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
deni
a~o 3.1.3, junto
om as regras de pre
ed^en
ia des
ritas anteriormente,
omo segue
L(r)
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,
47
3.1. Express~
oes Regulares
L(r) = fw 2 = w
g:
Usaremos o seguinte ra
io
nio: toda
adeia em
L(r)
deve onter
00 em algum lugar,
f0; 1g
(0 + 1).
hegamos
a solu
~
ao
L = fw 2 f0; 1g= w
g:
n~
ao tem nenhum par de zeros
onse
utivos
(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
,
omo a repeti
~
ao das
adeias
r = (1 + 01) (0 + );
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
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
Para mostrar que (a + b) (b + a) devemos mostrar que L((a + b)) = L((a b ) )
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
49
3.2. Conex~
ao entre Express~
oes Regulares e Linguagens Regulares
~ o:
Demonstra
a
(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
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
M(r)
L(r).
M(r )
1
M(r )
2
M(r )
M(r )
1
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
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).
i;j
i;j
52
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
M1
M2
Figura 3.6:
M3
Figura 3.7:
Figura 3.8:
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
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
k 1
k 1 k 1
k 1
= (Ri;k
(Rk;k
) Rk;j ) + Ri;j
k
Da deni
~ao a
ima, Ri;j
e uma express~ao regular.
k
Para mostrar que a deni
~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 deni
~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 deni
~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 ;
Exemplo 3.2.4
1
0
55
i;j
R10 1 = + 1
;
R10 2 = 0
;
R20 1 = 0
;
R20 2 = + 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.
56
!
!
!
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.
!
j
hf g f g
G2 =
abS
a; b ; S; P2
S ba
i, om
P2
denido omo
S =
, 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
! 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 denida 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
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
3.3.1
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 prexo 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.
V0
=) w1 Vi1
=) w1 w2 Vi2
=) w1 w2 : : : wk Vik
=) w1 w2 : : : wk wl = w:
(3.1)
Vi
! a1a2 : : : amVj ;
Vi
Vj ,
(Vi ; a1 a2 : : : am )
= Vj :
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
! a1 a2 : : : am ;
59
= 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
Vi
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
Exemplo 3.3.7 Construir um aut^omato que a
eite a linguagem gerada pela gramati
a
V0
V1
Vf
60
! aV1
! abV0 j
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
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
,
~ o:
Demonstra
a
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
61
2 F.
q0 =
(3.2)
(q0 ; ai aj : : : ak al ) = qf ;
ompletando a prova.
Exemplo 3.3.9
Do grafo de transi
a
~o
G=
, onde
e dado
q0
q1
q2
A
adeia
001100
! 0q 0 j
! 0q 0 j
! 0q 2 j
1q1
1q2
1q1
q0 =
3.3.3
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
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
~ o:
Demonstra
a
da forma
Bw;
ou
w;
R B;
ou
R.
R;
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
LR
, isto
e
30 do
ap
tulo
,
e uma linguagem regular. Logo, pelo teorema
LR
Assim, usando um
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
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,
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? Rerir-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.
64
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
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.
~ o:
Demonstra
a
r1
Uni~
ao e fe
ho estrela:
afd
= hQ; ; ; q0 ; Q
F ;
a
eita L1. Observe que na deni
~ao de um afd, assumimos que era uma fun
~ao total,
ou seja (q0 ; w) esta denida 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
((
b qi ; pj ; a
Fb
Fb
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
65
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
M2
b
a
q
0
M2
: 1 ! 2
e hamada um
a a
:::a
( ) = ( 1) ( 2)
h w
66
h a
h a
( )
: : : h an :
! 2 por
( ) = db
( ) = bd
h a
h b
Se
Teorema 3.4.6 Seja h : ! um homomorsmo. 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 homomorsmos 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 deni
~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
Deni ~ao 3.4.7 Seja L uma linguagem sobre um alfabeto . A linguagem de prexos
LP = f
x = xy
2 L para algum 2 g
y
Isso nos diz que as palavras de LP s~ao os prexos das palavras em L.
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
67
tambem e regular.
~ 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 denidas 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.
,
~ o:
Demonstra
a
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
1.
L e
L1
~ o:
Demonstra
a
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
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
h f g
e regular? A resposta
e n~
ao. Mos-
Suponha que
e regular.
Ent~
ao, existe
um afd
(q0 ; an )
Mas,
omo
a eita
an bn ,
=q
(q0 ; am )
= q,
om
6= n
devemos ter
(q; bn )
= qf
2 F:
(q0 ; am bn )
= ( (q0 ; am ); bn ) = (q; bn ) = qf
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
prexos 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
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.
Seja
wi
= xy iz;
(3.3)
x; y;
de
tal que
(q0 ; x) = qr ,
(qr ; y ) = qr ,
(qr ; z ) = qf ,
om j xy j n + 1 = m e
(q0 ; xz )
(q0 ; xy 3 z )
= qf ;
71
Enun
iamos o lema da bomba somente para linguagens innitas. Linguagens nitas,
embora sempre regulares, n~ao podem ser bombeadas pois o bombeamento automati
amente
ria um
onjunto innito. 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 ;
72
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
3.5
Exer
ios
1 0
(00 + 10)
(01 + 10)
(0 + 10 + 110)( + 1 + 11)
= anbm = n 1; m 1; n m 3 :
f
(a)
(b)
(
)
(d)
(e)
(f)
(g)
(h)
(i)
(j)
(k)
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
(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 )
74
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
a)
b
b)
a
b
b
c)
a
a
b
a
! 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
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 homomorsmos? Justique.
(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
62 L2g
L1 L2 = f(
w;
19. Mostre que as linguagens regulares s~ao fe
hadas sobre a opera
~ao entre linguagens.
Sejam L1 e L2 duas linguagens, dena o operador por
L1 L2 = f 2 L1
w
76
= w
62 L2g [ f 2 L2
w
= w
62 L1 g
Cap
tulo 3. Express~
oes e Gram
ati
as Regulares
20. Mostre que as linguagens sobre = f g, denidas 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
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
77
3.5. Exer
ios
78
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.
Deni ~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
1.2.6, ela
e livre de
ontexto.
Logo o
Exemplo 4.1.2
A gram
ati
a
! aSa j
bSb
produ
~
oes
;
e livre de
ontexto. Uma deriva
~
ao t
pi
a nessa gram
ati
a
e
20 do
ap
tulo 3.
Exemplo 4.1.3
A gram
ati
a
e livre de
ontexto.
Exemplo 4.1.4
!
!
!
abB
aaBb
bbAa
e
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.
Tomemos o
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
n > m
n < m,
produ
o
~es s~
ao:
S
A
B
4.1.1
S2 :
do ra
io
nio usado para os
asos
enxuta que
! S1 j
!
!
!
aSb j A
aA j a
Bb j b
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
L = fa2n bm = n 0; m 0g:
Considere, agora, as duas deriva
~oes seguintes:
81
Deni ~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.
!
!
!
aAB
bBb
A j
Ent~ao
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 deni
~ao que segue torna pre
isa essa no
~ao.
82
! abAB .
Deni
~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.
[ 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.
!
!
!
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.3
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 arma
~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 deni
~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
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
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 deni
~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.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
! SS j
aSb
bSa
86
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.
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 indenidamente 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
Seja
forma
A
onde
A; B
V.
!
ou
!B
Ent~
ao o m
etodo de an
alise de pesquisa exaustiva pode se tornar um
an
alise
e poss
vel.
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.
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
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.
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.
Exemplo 4.2.6
S
A
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
!
!
(A
(AA
j)
89
Aqui a palavra
have \if" e um smbolo terminal. Todos os outros termos s~ao variaveis as quais ainda tem de ser denidas. 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
Deni ~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.
! 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.
! 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
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
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
omo
E ; T ; F; I
! 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.
Deni
~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
L = L1 [ L2;
onde L1 e gerada por
S1
D
C
e
! DC
! aDb j
!
C j
! 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 :
94
Cap
tulo 4. Linguagens Livres de Contexto
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
;
tamb
em para
m
etodo para obter
Gb
tal que
L(Gb )
fg
L(G)
L
G,
fg
vale
existe um
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.
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
Seja
e
onstru
da ao se retirar a produ
~
ao ( 4.1)
A
Ent~
ao
! x1 y1x2 j
x1 y2 x2
j j
x1 yn x2 :
L(Gb ) = L(G).
Suponha que
Se esta
B,
N~
ao perdemos nada em
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
95
=)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:
L G
( b ),
L G
! j
j
!
j
a
aaA
abbA
abB ;
b:
! j
j
!
j
a
aaA
abbA
b,
A nova gramati
a, G
e equivalente a
em
ababbA
abb ;
b:
. A adeia
aaabb
b
, e a
orrespondente deriva
~ao em G
e
=) aaA =) aaabb :
96
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.
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
62
A
V
y1
y2
j j
ym ;
(4.3)
yi
yi Z;
xi
xi Z;
= 1; ; m;
= 1; ; n:
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
w tal que S
)G w
, tamb
em temos
As produ
~
oes da forma ( 4.2) s~
ao
hamadas
)Gb w
esquerda-re ursivas.
. O argumento
Elas s~
ao um
aso
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:
;
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;
gram
ati
a resultante pode ser
onsiderada mais simples do que a original, porque ela n~
ao
tem qualquer produ
~
ao esquerda-re
ursiva.
vari
aveis e produ
~
oes.
4.5.3
! 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.
Deni
~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( [
) . 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
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
GFED
// @ABC
A
@ABC
GFED
B
G1
xDy:
!
!
aS
A;
A formaliza
~
ao desse pro
esso leva
a
onstru
~
ao geral e o teorema
orrespondente.
G =
V; T ; S; P
A gram
ati
a G pode ser gerada de G, usando um algoritmo
onsis-
titu
do de duas partes.
G1 =
L(G) = L(G)
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
(a) Para A
x1 x2
xn ;
xi
2 [
T
V1 e n
adi ione A a V1 .
T) .
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
e todas as produ ~oes asso iadas, temos tudo que pre is-
101
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.
Qualquer produ
~
ao de uma gram
ati
a livre de
ontexto da forma
A
e
hamada uma
-produ ~ao.
!
Qualquer vari
avel
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
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
Ent~
ao existe uma gram
ati
a equivalente,
102
Cap
tulo 4. Linguagens Livres de Contexto
!
, ponha
A em VN .
P
B
onde
A1 ; A2 ; ; An
est~
ao em
VN ,
xi
[T
! A1A2 An;
VN , ponha B
em
VN .
Pb .
da forma
A
onde
VN .
! x1 x2 : : : xm ;
m 1;
P,
olo amos em
Pb
aquelas
produ
~
oes, assim
omo todas aquelas geradas tro
ando as vari
aveis anul
aveis,
om
,
produ
~
ao em
Pb ,
om
xi
Por exemplo, se
,
uma na qual
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.5
As produ ~oes em que ambos os lados s~ao variaveis uni as s~ao indesejaveis.
Deni
~ao 4.5.12 Qualquer produ
~ao numa gramati
a livre de
ontexto da forma,
A
onde A; B
! B;
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
!B
om
A
onde B
! y1 j
y2
j j
yn ;
! y1 j j yn .
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
Cap
tulo 4. Linguagens Livres de Contexto
@ABC
GFED
S
GFED
// @ABC
B
&&
ff
@ABC
GFED
A
! y1 j
A
onde
! y1 j
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
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.
Exemplo 4.5.14
Gb o algoritmo do teorema
! 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:
! Aa;
!a j
b ; B
! bb;
as novas regras
!a j
bb; A
! bb
!a j
b ;
-produ ~oes e
produ
~
oes unit
arias.
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
105
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
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
e a
Deni ~ao 4.6.1 Uma gramati a livre de ontexto esta na forma normal de Chomsky
! 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).
~ o:
Demonstra
a
dade, que
Devido ao teorema
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.
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 :
L(Gb ) = L(G):
Exemplo 4.6.3
Converter a gram
ati
a,
om produ
~oes
! ABa;
! aab;
! A ;
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
S
D1
A
D2
B
Ba
Bb
B
4.6.2
! AD1;
! BBa ;
! Ba D2;
! Ba Bb;
! AB
;
! a;
! b;
!
:
Deni
~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.
nessa
onstru
~
ao
e bastante longo.
Gb ,
62 L G .
(
Ent~ao existe
Etapa 1:
Etapa 2:
Rotular as vari
aveis
Etapa 3:
Usar os teoremas
4.5.1 e
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
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:
An
An
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
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:
!
!
!
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
Cap
tulo 4. Linguagens Livres de Contexto
4.7
Exer
ios
! aSb j
SS
:
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
L = fanbn = n 0g
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.
fa; bg
S
A
B
! AB j aaB;
! a j Aa;
! b:
(a)
(b)
( )
S
S
A
S
Z
L fw 2 fa; bg = Na w
=
) =
Nb w g
(
e livre de
ontexto.
! 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
S
A
B
C
D
! a j aA j B j
! aB j ;
! Aa;
!
CD;
! dd j ddD:
C;
S
A
B
! AaB j aaB;
! aBa j j B;
! bbA j :
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
:
114
! aaS j
SS
aa:
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)
Unidade de
Controle
Estado
Interno
Pilha
Saida
Deni
~ao 5.1.1 Um aut^omato a pilha n~ao determinsti
o (apn) e denido pela
M = hQ; ; ; ; q0 ; z; F i, onde
setupla
Exemplo 5.1.2 Suponha que o
onjunto de regras de transi
~ao de um apn
ontem
(q1 ; a; x)
116
Cap
tulo 5. Aut^
omatos a Pilha
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;
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
ongura
~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
qf
2F
2 g:
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, denamos o apn
M = hfq0 ; q1 ; q2 g; fa; bg; f0; 1g; ; q0 ; o; fq2 gi, onde
e denido pela seguinte tabela:
a
aabb,
(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,
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 prexo 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
denido 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 )
120
= hQ; ;
; ; q0 ; z; F i;
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;
q0
para
q1 ,
e, nalmente,
(q1 ; ; z )
= f(q2 ; )g;
(q0 ; z )
(q0 ; a)
(q0 ; b)
(q1 ; a)
(q1 ; b)
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
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
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
! 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
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 ; 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
L = L(M ):
~ o: Se
Demonstra
a
= hfq0 ; q1 ; q2 g; T; V
123
5.2. Aut^
omatos a Pilha e Linguagens Livre de Contexto
(q0 ; ; z )
= f(q1 ; Sz )g
(5.1)
(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 )
a eita qualquer
= f(q2 ; z )g;
(5.3)
=) 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
! bB1 Bk :
B1
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
Cap
tulo 5. Aut^
omatos a Pilha
Para provar que L(M ) L(G), seja w 2 L(M ). Por deni
~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)
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;
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 ) ;
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
(q0 ; aaab
; z )
(q1 ; b
; BCz )
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 prexo 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
Cap
tulo 5. Aut^
omatos a Pilha
! a:
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
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 ):
(q0 zq2 ).
A adeia
(q0 ; aab; z )
128
aab
e
Cap
tulo 5. Aut^
omatos a Pilha
ontexto.
Se
(qj ; BC ) 2 (qi ; a; A)
in
luimos em P a produ
~ao
(ql Aqj )
! a:
qi ; qj
2 Q, A 2
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
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
= hfq0 ; q1; q2g; fa; bg; fA; B; zg; ; q0; z; fq2 gi; onde
Cap
tulo 5. Aut^
omatos a Pilha
L fan+1b2n = n g:
=
S
A
B
! aABB j aAA;
! aBB j a;
! bBB j A:
S
A
11. No exemplo
! AA j
! SA j
a;
b:
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
Cap
tulo 6
Propriedades das Linguagens Livres
de Contexto
6.1
Lemas da Bomba
ontexto, em geral.
6.1.1
w = uvxyz;
om
133
(6.1)
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
~ 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.
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
, 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
. 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.
L f
=
ww = w
2 f g g
a; b
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
m
m
z }| { z }| { z }| { z }| {
` aa aa
a b
b a
u v x y
a b
z
a
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)
restri
~
oes ( 6.2) e ( 6.3) poderemos obter
adeias an
alogas
a
adeia ( 6.4).
L f
=
j k
a b
= j = k
n~
ao
e livre de
ontexto.
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
teremos m
+ (i
1)k1
Usando um ra
io
nio
an
alogo, obteremos que a es
olha k2 = 0 e k1 > 1, tamb
em falha. Consideremos, portanto,
(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.
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
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.1
tena
~
ao e fe
ho estrela ( ).
~ o:
Demonstra
a
Exer
io.
~ 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.
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)
6.2.2
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.
Cap
tulo 6. Propriedades das Linguagens Livres de Contexto
Teorema 6.2.3
62
Teorema 6.2.4
~ o: Assuma que P n~ao
ontem nenhuma -produ
~ao, nenhuma produ
~ao
Demonstra
a
)
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;
om x1 ; x2 ; x3 ; x4 ; x5
2T
j j
Assim, para obter um algoritmo para determinar quando L(G) e innita, 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)
(
)
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)
5. Mostre que a famlia das linguagens livres de
ontexto e fe
hada sobre homomorsmo.
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
Cap
tulo 7
M
aquinas de Turing
Cabecote de LeituraEscrita
Unidade
Estado
de
Interno
Controle
onde
Q e
140
2; F i,
; ; q0 ;
Cap
tulo 7. M
aquinas de Turing
b c
b c
(a)
(b)
: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, , dene
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
= fa; bg,
= fa; b; 2g,
F
= fq1 g 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
ongura
~ao ini
ial simples.
142
Cap
tulo 7. M
aquinas de Turing
Exemplo 7.1.4
Dena
por
Tome
Q,
(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 (
ongura
~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 innito".
Como podemos dar deni
~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 dene, no maximo, um movimento
para
ada
ongura
~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
ongura
~oes de uma maquina de Turing usamos a ideia de uma des
ri
~ao instant^anea. Qualquer
ongura
~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
a k-1 a k ak+1
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
ongura
~ao a outra sera denotado por `. Portanto, se
(q1 ;
)
= (q2 ; e; D);
um movimento possvel e
abq1
d
abeq2 d:
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
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
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 ):
para algum qj 2 Q e a 2 , para o qual (qj ; a) n~ao e denido. A sequ^en
ia de
ongura
~oes levando a uma
ongura
~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
ongura
~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.2
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.
; ; q0 ;
= fw 2 + = q0 w ` x1 qf x2 para algum qf 2 F; x1 ; x2 2
Ent~ao a lin
Esta deni
~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 denida 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 deni
~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
innito e nun
a parar. Qualquer
adeia para qual M n~ao para, por deni
~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)
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 denida.
146
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
= hQ; ;
; q0 ;
2; F i, onde
Q = fq0 ; q1 ; q2 ; q3 ; q4 g
= fa; bg
= fa; b; x; y; 2g
F
= fq4 g
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, denido
pelo primeiro grupo de transi
~oes. Observe que n~ao e esperado en
ontrar qualquer \b" no
aminho de volta.
(q2 ; y )
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
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 ):
aabb
xq1 abb
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
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
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
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 innito para uma determinada entrada, diremos
que a maquina n~ao esta denida 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 :
! denida por
( ) = wb
f w
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
` M
w1 q w2 ;
e wb = w1 w2 2
149
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
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
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.
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.
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
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
152
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 renamo-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
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 deni
~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;
Cap
tulo 7. M
aquinas de Turing
q 0 (x)0(y ) ` q 0 , se x < y;
C;
E;
E;
q 0 (x)0(y ) ` q (x + y )0
A;
A;f
q 0(x)0(y ) ` q 0:
E;
E;f
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 denimos 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
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
ongura
~ao
de programas, de modo que a
ongura
~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
ongura
~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
Cap
tulo 7. M
aquinas de Turing
regiao separadora
#
Espaco de trabalho
Espaco de trabalho
para A
para
0 1
1
x
1
xy
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
(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.
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
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 deni
~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 denir 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 -denveis), 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
anteriormente. A tese de Turing e vista mais apropriadamente
omo uma deni
~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
deni
~ao, podemos
olo
ar a quest~ao de o quanto essa deni
~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
deni
~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 deni
~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
onan
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 deni
~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 deni
~ao pre
isa
de algoritmo.
160
` 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 deni
~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 desaados. 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 denido, 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.
161
: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,
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.
162
Unidade
de
Controle
Fita de saida
:Q
! Q n fL; Rgn
espe
i
a o que a
onte
e sobre todas as tas. Por exemplo, se n = 2,
om uma
ongura
~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
b c
Unidade
de
Controle
Figura 7.10: Representa ~ao esquemati a de uma maquina de Turing om duas tas.
7.4.5
Uma maquina de Turing multidimensional e aquela na qual a ta pode ser estendida innitamente em mais de uma dimens~ao. Um diagrama de maquina de Turing bidimensional
e mostrada na gura 7.11.
A deni
~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
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.
Deni
~ao 7.4.1 Uma maquina de Turing n~ao determinsti
a e um aut^omato
omo
dado pela deni
~ao 7.1.1, ex
eto que
:Q
Exemplo 7.4.2 Se uma maquina tem transi
~oes espe
i
adas por
(q0 ; a)
` bq1 aa
q0 aaa
` q2 2 aa
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 ;
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
165
= fq1 ; q2 ; ; qn g;
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 multita,
omo mostrado na gura 7.12.
Para qualquer entrada M e w, a ta 1 mantera a deni
~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
ongura
~ao de M . E ent~ao
onsulta a
166
estados internos de M
Conteudo da fita de M
Unidade de
Controle
de M U
Deni ~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 innito. Entretando, ele pode ser
onsiderado um pro
esso signi
ativo, porque produz resultados previstos e bem-denidos.
Um
onjunto innito 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
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 ;
um pro
edimento de enumera
~ao para esta sequ^en
ia de
adeias pode ser des
rito pelo
seguinte pseudo-
odigo
1. Gerar
#, 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
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
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 deni
~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 innito?
4. Que linguagem e re
onhe
ida pela maquina de Turing
M
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
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
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: + ! + , denida 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, denida
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 denida
para todo w1; w2; w3 2 f1g+ por
f (w1 ; w2; w3 ) = i
18. Construir uma maquina de Turing que
ompute a fun
~ao f : f0; 1g ! f0; 1g
denida por:
f (w) = ww
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 denir 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
f x; y
) =
( 0) = x + 0 = x = g (x)
f x;
e
(
f x; y
Mostre que (pode ser dado um argumento por diagramas de blo
o) se g e h, denidas
omo a
ima, forem
omputaveis e f e denida por re
urs~ao primitiva de g e h, ent~ao
f tamb
em e
omputavel.
22. Dar uma deni
~ao formal de uma maquina de Turing
om uma ta semi-innita.
D^e argumentos para mostrar que a
lasse das maquinas de Turing
om tas semiinnitas e equivalente a
lasse das maquinas de Turing padr~ao.
23. Dar uma deni
~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-innitas .
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
173
7.6. Exer
ios
174
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 denidos, n~ao podem a
eitar a
adeia vazia. Para evitar ter de
refazer a deni
~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
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,
denimos, 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.
, que re onhe e
L, isto e,
L = L(M ):
Esta deni
~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 innito. No entanto, podemos
exigir mais e requerer que a maquina diga quando ou n~ao uma dada entrada faz parte da
linguagem.
w
Deni
~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 + .
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
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 innito. 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 deni
~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 deni
~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
Teorema 8.2.1 Seja S um
onjunto innito
ontavel. Ent~ao, o
onjunto das partes de
S , }(S ), n~
ao e
ontavel.
~ o: Seja
Demonstra
a
X 2 } S
X1
X2
X3
X4
..
.
..
.
onde
ada xij 2 f0; 1g. Como essa tabela
ontem todas as sequ^en
ias innitas sobre
f0; 1g, ela deveria
onter a seguinte sequ^
en
ia
X
onde
xii
1
0
se
se
xii
xii
=0
=1
178
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.
Para qualquer
Pela deni
~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
M ;M ;:::
Mi
L Mi
L Mi
L Mi
L=f
= a
62 ( )g
L Mi
(8.1)
que tambem esta bem denida 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 Mk :
179
62 L:
62 L(Mk ):
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 bemdenida 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 denida propriamente.
a
w ;w ;:::
w ;w ;:::
L M
L M
180
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
~ 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 deni
~ao, L n~ao e
re
ursiva.
Podemos
on
luir, ent~ao, que realmente existem linguagens, bem denidas, para as
quais n~ao se pode
onstruir um algoritmo de pertin^en
ia.
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
L fanbn anbn = n g
=
S ! aAbab
aAb ! aabbbA
bAb ! bbA
bAa ! baB
aBa ! aaB
aBb ! Caabb
aCa ! Caa
bC ! Cb
aCb ! aAb
ab
aa
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.
Cap
tulo 8. Hierarquia das Linguagens Formais
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
denido. 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.
~ o: (Esbo
o) Se
Demonstra
a
L=
( )
L G :
e re
ursivamente enumeravel, ent~ao, por deni
~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
=
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
ongura
~ao de parada xqf y ,
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
183
da qual, por seu turno, devemos derivar q0 w. O que queremos, ent~ao, e
onstruir G, tal
que
S
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;
xqf y;
= hQ; ;
; ; q0 ;
Q = fq0 ; q1 g,
= f0; 1g,
= f0; 1; 2g,
F
= fq1 g e
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
M,
00.
G,
dessa adeia e
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
Linguagens Sens
veis ao Contexto
Podem serem denidas 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.
j v jj w j
, isto
e, a forma senten
ial
gram
ati
a irrestrita.
em
P,
e uma
gramati a
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,
guagem
L = fanbnan = n 1g
e des
rita a seguir.
1.
V = fS; A; B; C g
2.
T = fa; bg
186
Cap
tulo 8. Hierarquia das Linguagens Formais
L1 = fanb2nan = n 1g
e
L2 = fanbnan bn = n 1g
s~ao sensveis ao
ontexto.
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
187
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
( )=
ser
~ o: A
onstru
~ao de G
Demonstra
a
a dada em duas etapas.
1
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 ;
Cap
tulo 8. Hierarquia das Linguagens Formais
Etapa 2:
B1
! 1
Bm
Cn em P1 , om m
n que n~
ao esteja na forma normal SC, pode ser
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~
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
b
Constru
~ao de G
Etapa 2:
1. Vb = fS; A; B; C; Ba ; Bb ; g
2.
3.
= fa; bg
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
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 innita 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
hQ; ; ; ; q0; 2; F i e uma maquina de Turing padr~ao (deni
~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:
= fw 2 (
= 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
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 deni
~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 deni
~ao de ALL a o
orr^en
ia do smbolo bran
o (2).
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)
192
(q1 ; ; D)
(q1 ; x; D)
(q3 ; $; E ) (q3 ; x; E )
(q1 ; x; D)
(q6 ; x; E )
(q8 ; x; D)
(q9 ; X; D)
q9 .
Cap
tulo 8. Hierarquia das Linguagens Formais
~ 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 )
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
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
193
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, denindo 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 innitas 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 denida
omo
A
(0; y ) = y + 1
( + 1; 0) = A(x; 1)
A x
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
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 deni
~oes podem ser en
ontradas em
[HU79, Bir96.
Uma tal
odi
a
~ao poderia ser a linguagem LA
k
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 deni
~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.5
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
L1 [ L2,
L1 \ L2,
L1 L2 ,
L+1 = Si=1 Li1
h(L1 ), para qualquer homomorsmo h : T1 ! T2
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 :
[ 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 denida por
L(G1
2.
196
Cap
tulo 8. Hierarquia das Linguagens Formais
3 (q; a)
1 (q; a)
2 (q; a)
, se
, se
q
q
2 Q1 ,,
2 Q2
= L(M1 ,) \ L(M2 ,)
= L(M1 ) \ L(M2 )
= L1 \ L2
2 [ fS
= hV
1 [ V
2 [ fS g; T1 [ T2 ; P
1 [ P
! S1S2 g; S i:
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
L RE
L SC
L
L
LC
Reg
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
Cap
tulo 8. Hierarquia das Linguagens Formais
L RE
L Rec
L SC
L LC
L Lin
L LCD
L
Reg
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
199
8.6
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
Cap
tulo 8. Hierarquia das Linguagens Formais
f n
( )
om nlim
!1
(n) =
< 1:
n ;
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
fita 1
fita 2
b fita 1
fita 2
a s
Figura 8.4: Congura
~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
Deni
~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 denidas 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 multita 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 deni
~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
Cap
tulo 8. Hierarquia das Linguagens Formais
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)
T2 (n) e S1 (n)
DT empo(f (n))
DE spa;
o(f (n))
(8.9)
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
~ 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(
T1
T2
nLog n
).
= 0.
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
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 innito de membros distintos. Um ligeiro
res
imento na ordem de magnitude da fun
~ao de
omplexidade de tempo ou do espa
o
dene 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
~ 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
Cap
tulo 8. Hierarquia das Linguagens Formais
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
(j w j). Logo,
L2
LLC
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
( 3 ):
DT empo n
205
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 :
N~
ao existe uma fun
~ao total Turing Computavel
guagem re
ursiva esta em DT empo(f (n)).
Teorema 8.6.11
f n
~ 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)
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
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 deni
~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:
= N P
E spa o
E spa o:
Portanto, temos
P
NP
= N P
E spa o
E spa o:
207
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
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
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
??
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
209
8.7. Exer
ios
210
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 deni
~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, deniremos os
on
eitos de de
ibilidade e
omputabilidade para
pre
isar o que queremos dizer
om a arma
~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
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 deni
~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
entrada w, quando ini
iado na
ongura
~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 innito, 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 deni
~ao.
Deni
~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,
wM
q0 wM w ` x1 qf x2 ;
se
apli ado a
para, e
q0 wM w ` y1 qn y2 ;
se
apli ado a
qf
qn
H.
H,
213
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-
se
Mw
Mw
x1 q x2 ;
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 innito. 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 ;
M Hb
q0 w
se
` 1
M wM Hb
q0 w
M Hb
q0 w
se
M wM Hb
q0 w
y1 q y2 ;
q0 w
se
` Hb 1
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
Alguem poderia objetar, da deni
~ao 9.2.1, que foi exigido da maquina H para resolver
o problema da parada que
ome
asse e terminasse numa
ongura
~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
ongura
~oes de in
io e m. Ligamos o problema a uma
ongura
~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
mente enumer
avel seria re
ursiva. Consequentemente, o problema da parada
e inde
id
vel.
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.
= (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.
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
ongura
~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 armativa, vamos nos
onven
er de que f (n) e denida 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
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
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 deni
~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 deni
~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
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
=;
L(Mw )
= L(M ) \ fwg
220
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
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
ongura
~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
ongura
~ao original 0 . Se para em qualquer
ongura
~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 innita + 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
=f
a; b ,
o problema \L M
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
221
Para mostrar isso, usamos exatamente a mesma abordagem do teorema 9.4.2, ex
eto
atinge uma
ongura
~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.
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 :
= 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
w3
w2
1
v2
v1
v3
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 :
223
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
9.1.
e para ser quebrado
omo w1 e a
adeia F
omo v1 . A
Exemplo 9.5.2
du
~oes
S
Bb
AC
!
!
!
aABb
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
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
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
225
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
solucaoCPM
construir
G ,w
A e B
A,B
algoritmo
CPM
nenhuma
solucaoCPM
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).
226
w C L(G)
w C L(G)
Cap
tulo 9. Limites da Computa
~
ao Algor
tmi
a: Problemas Inde
id
veis
w ; w ; : : : ; wn
v ; v ; : : : ; vn
y0 ; y1 ; : : : ; yn+1 ;
yi
z0 ; z1 ; : : : ; zn+1 ;
;:::;n
zi
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
yn
#=
w1 wj : : : wk
v1 vj : : : vk ;
A; B
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
C; D
227
solucaoCP
construir
A,B
C,D
solucaoCPM
algoritmo
C e D
CP
nenhuma
solucaoCP
nenhuma
solucaoCPM
~ 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
= hf
A ; SB g; [ fa1 ; a2 ; : : : ; an g; S; P i
S; S
228
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:
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
construir
A,B
algoritmo
G e ambigua
solucaoCP
da
ambiguidade
G e nao
nenhuma
solucaoCP
ambigua
G1
omo a gram
ati
a GA e G2
omo a gramati
a GB ,
omo
denidos 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 denida 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
Cap
tulo 9. Limites da Computa
~
ao Algor
tmi
a: Problemas Inde
id
veis
9.7
Exer
ios
Introdu
a~o
a Teoria da Computa
a~o:
Linguagens Formais e Computabilidade
231
9.7. Exer
ios
232
Bibliograa
[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.
Formal Language
. Springer-
Matem
ati
a Uni-
[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
Indi
e
adeia, 10
omprimento, 10
on
atena
~ao , 10
prexo, 10
reversa, 10
suxo, 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
ongura
~ao, 17
de morte, 30
de parada, 145
onjunto, 3
ontavel, 167
das partes, 5
nito, 5
innito, 5
pot^en
ia, 5
universo, 3
vazio, 3
onjuntos disjuntos, 5
ontradomnio, 6
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
236
a esquerda, 57
regular, 57
ambigua, 91
esquerda-re
ursiva, 98
livre de
ontexto, 79
sensvel ao
ontexto, 186
homomorsmo, 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-innita, 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
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