Anda di halaman 1dari 44

Computabilidade e Linguagens Formais

Autmatos de pilha

Gabriel David / Cristina Ribeiro


1
Autmatos e autmatos de pilha
Os autmatos de pilha esto para as linguagens sem contexto
como os autmatos esto para as linguagens regulares

1
Linguagens
1*0(1+0)* Start 0 0,1
regulares 1 2

Start
Linguagens E I | E+E | EE | (E) A B
sem contexto I a | b | Ia | Ib | I0 | I1

Autmatos de
Ideia
Autmato de pilha um -NFA com uma pilha de smbolos
Adiciona a possibilidade de memorizar uma quantidade infinita de
informao
S tem acesso ao topo da pilha (LIFO), em vez de poder consultar
qualquer posio de memria, como os computadores genricos
Funcionamento
A parte de controlo l e consome os Controlo de
entrada Aceita/
smbolos da entrada
estados finito rejeita
Transio para novo estado baseada
no estado corrente, smbolo de pilha
entrada e smbolo no topo da pilha
Transio espontnea com
Topo da pilha substitudo por cadeia
Autmatos de
Exemplo do palindroma
Lwwr = {wwR | w em (0+1)*} palindromas de comprimento par
Linguagem sem contexto gerada pela gramtica P | 0P0 | 1P1
Construir um autmato de pilha
Estado inicial q0 significa que ainda no se atingiu o meio de wwR;
vai-se guardando na pilha os smbolos de w
A qualquer altura, adivinha-se que j se chegou ao meio (fim de w)
e faz-se uma transio para q1; a pilha contm w, a comear no
fundo e a acabar no topo; o no determinismo simulado pela
manuteno dos dois estados
Em q1 comparam-se os smbolos de entrada com o topo da pilha; se
no houver correspondncia, a aposta foi errada e este ramo da
computao morre; outro poder ter sucesso
Se a pilha se esvaziar (e a entrada acabar) descobriu-se w e wR
Autmatos de
Definio
Autmato de pilha (PDA) P= (Q, , , , q0, Z0, F)
Q: conjunto finito de estados
: conjunto finito de smbolos de entrada
: alfabeto da pilha finito
: funo de transio (q, a, X) = {(p1,1), } finito
q um estado, a um smbolo de entrada ou , X um smbolo da pilha
p1 o novo estado, 1 a cadeia de smbolos da pilha que substitui X no topo
1= pop do topo da pilha
1= X pilha inalterada
1= YZ X substitudo por Z e push do Y a seguir
q0: estado inicial
Z0: smbolo inicial, contedo inicial da pilha
F: conjunto de estados de aceitao ou finais
Autmatos de
De novo o exemplo
PDA de Lwwr P = ({q0,q1,q2}, {0,1}, {0,1,Z0}, , q0, Z0, {q2})
Z0 usado para marcar o fundo da pilha e permitir no fim da leitura
de wwR passar para o estado de aceitao q2
(q0,0,Z0)= {(q0,0Z0)} e (q0,1,Z0)= {(q0,1Z0)} topo da pilha esquerda
(q0,0,0)= {(q0,00)}, (q0,0,1)= {(q0,01)}, (q0,1,0)= {(q0,10)},
(q0,1,1)= {(q0,11)}
(q0,,Z0)= {(q1,Z0)}, (q0, ,0)= {(q1,0)}, (q0, ,1)= {(q1,1)}
(q1,0,0)= {(q1, )} e (q1,1,1)= {(q1, )}
(q1,,Z0)= {(q2,Z0)}

Autmatos de
Diagrama de transio
0, Z0/0Z0
1, Z0/1Z0
0, 0/00 0, 0/
0, 1/01 1, 1/
1, 0/10
1, 1/11

Start
q0 q1 q2
, Z0/Z0 , Z0/Z0
, 0/0
, 1/1
Ns so estados
Start indica o estado inicial
Arcos correspondem s transies
Etiqueta a,X/ de q para p significa que (q,a,X) contm (p,)
O arco indica a entrada e o topo da pilha antes e depois

Autmatos de
Descrio instantnea
Computao de um PDA
Evolui de configurao em configurao, em resposta a smbolos de
entrada (ou ) e alterando a pilha
Num DFA: toda a informao no estado; num PDA: estado + pilha
Descrio instantnea (q,w,)
q: estado
w: entrada remanescente (em vez de s um smbolo, convenincia)
: contedo da pilha (topo esquerda)
Passo de um PDA (Q, , , , q0, Z0, F)
Se (q,a,X) contiver (p,), para todas as cadeias w em * e em *
(q, aw, X) P (p,w,)
Usa-se * para zero ou mais passos (computao) Autmatos de
Ainda o exemplo
Entrada w=1111
Descrio instantnea (DI) inicial: (q0, 1111, Z0)
(q0, 1111, Z0) (q1, 1111, Z0) (q2, 1111, Z0)

(q0, 111, 1Z0) (q1, 111, 1Z0)

(q1, 11, Z0) (q2, 11, Z0)

(q0, 11, 11Z0) (q1, 11, 11Z0)

(q0, 1, 111Z0) (q1, 1, 111Z0) (q1, 1, 1Z0)

(q1, , 11Z0) (q1, , Z0) (q2, , Z0)

(q0, , 1111Z0) (q1, , 1111Z0)


Autmatos de
Princpios relativos a DI
Se uma sequncia de DIs (computao) legal para um PDA
P ento a computao que resulta de adicionar uma qualquer
cadeia w entrada em cada DI tambm legal
Se uma computao legal para um PDA P ento a
computao que resulta de adicionar um qualquer conjunto
de smbolos abaixo da pilha em cada DI tambm legal
Teorema 1: Se (q,x,) * (p,y,) ento (q,xw,) * (p,yw,)
Se uma computao legal para um PDA P e uma cauda da
entrada no consumida, ento a computao que resulta de
remover essa cauda da entrada em cada DI tambm legal
Teorema 2: Se (q,xw,) * (p,yw,) ento (q,x,) * (p,y,)
Autmatos de
Comentrios
Dados para os quais P nunca olha no podem afectar a sua
computao
Conceito semelhante prpria noo de linguagem sem
contexto: o que est ao lado no influencia a computao
Teorema 2 no o inverso do 1 porque o que est na pilha
pode influenciar a computao mesmo sem ser descartado
Pode por exemplo ir sendo retirado da pilha um smbolo de cada
vez e no ltimo passo repor tudo

Autmatos de
Linguagens de um PDA
Aceitao por estado final
Seja o PDA P = (Q, , , , q0, Z0, F)
Linguagem de P aceite por estado final
L(P) = {w | (q0,w,Z0) * (q,,)} e q F
Contedo final da pilha irrelevante
Exemplo:
(q0,wwR,Z0) * (q0,wR,wRZ0) (q1,wR,wRZ0) * (q1,,Z0) (q2,,Z0)
Aceitao por pilha vazia
N(P) = {w | (q0,w,Z0) * (q,,)}
Linguagem aceite por pilha vazia, conjunto de entradas w que P consome
esvaziando ao mesmo tempo a pilha (N(P) pilha nula)
Mesmo exemplo: modificao para esvaziar a pilha e obter N(P)=L(P)
(q1,,Z0)= {(q2,Z0)} passa a ser (q1,,Z0)= {(q2,)}
(q0,wwR,Z0) * (q0,wR,wRZ0) (q1,wR,wRZ0) * (q1,,Z0) (q2,,)
Autmatos de
Da pilha vazia ao estado final
Teorema: Se L = N(PN) para um PDA PN = (Q, , , N, q0, Z0)
ento existe um PDA PF tal que L = L(PF)
Dois mtodos de aceitao de uma entrada equivalentes
Embora para um PDA P possa ser L(P) N(P)
Partindo de PN, usa-se um novo X0 como smbolo inicial de PF e
como marcador do fundo da pilha: PF v X0 quando pilha de PN vazia
, X0/
, X0/

Start p q
PN pf
0
, X0/Z0X0 0

, X0/

PF = (Q{p0,pf}, , {X0}, F, p0, X0,{pf}) Autmatos de


Do estado final pilha vazia
, any/

, any/
Start p q
, X0/Z0X0
PF p
0 0

, any/

Autmatos de
Exemplo de converso
Defina um PDA que processe sequncias de i e e,
significando if e else, construo presente em muitas
linguagens de programao, detectando sequncias invlidas
(sequncias que tm mais es que is num prefixo)
Smbolo inicial Z; pilha com Zn significa que n is - n es = n-1
Aceitao por pilha vazia (balano de mais um e que i)
Converso para aceitao por estado final

e, Z/ e, Z/
i, Z/ZZ i, Z/ZZ

Start Start
q p q r
, X0/ZX0 , X0/

pilha vazia Estado final


Autmatos de
Equivalncia entre PDAs e CFGs
Prova-se que as linguagens sem contexto, definidas por
CFG, so as linguagens aceites por pilha vazia por um PDA
e portanto tambm as aceites por estado final por um PDA
Ideia: dada uma CFG G construir um PDA que simula as
derivaes mais esquerda de G
Qualquer forma frsica esquerda no terminal pode ser escrita como
xA, onde A a varivel mais esquerda. A a cauda.
CFG G = (V,T,Q,S)
PDA que aceita L(G) por pilha vazia: P = ({q}, T,VT,,q,S)
Para cada varivel A: (q,,A)={(q,) | A produo em G}
Para cada terminal a: (q,a,a)={(q,)}

Autmatos de
De CFG para PDA
Dada a CFG E I | E+E | EE | (E)
I a | b | Ia | Ib | I0 | I1

Obter um PDA de aceitao por pilha vazia que aceite a mesma


linguagem.
PN = ({q}, {a,b,0,1,(,),+,}, {a,b,0,1,(,),+,,E,I}, , q, E)

(q,,I) = {(q,a), (q,b), (q,Ia), (q,Ib), (q,I0), (q,I1)}


(q,,E) = {(q,I), (q,E+E), (q,EE), (q,(E))}
(q,a,a) = {(q,)}; (q,b,b)={(q,)}, (q,0,0) = {(q,)}; (q,1,1) = {(q,)};
(q,(,() = {(q,)}; (q,),)) = {(q,)}; (q,+,+) = {(q,)}; (q,,) = {(q,)}
S um estado; processamento das variveis espontneo; s os terminais
consomem entrada

Autmatos de
Exerccio
Usando a CFG e o PDA para a linguagem das expresses
a) obtenha uma derivao mais esquerda de a(a+b00)
b) obtenha o trao da respectiva computao no PDA, isto , a sequncia
de Descries Instantneas
a)
E EE IE aE a(E) a(E+E) a(I+E)
a(a+E) a(a+I) a(a+I0) a(a+I00) a(a+b00)
b)
(q, a(a+b00), E) (q, a(a+b00), EE) (q, a(a+b00), IE)
(q, a(a+b00), aE) (q, (a+b00), E) (q, (a+b00), E)
(q, (a+b00), (E)) (q, a+b00), E)) (q, a+b00), E+E))
(q, a+b00), I+E)) (q, a+b00), a+E)) (q, +b00), +E))
(q, b00), E)) (q, b00), I)) (q, b00), I0)) (q, b00), I00))
(q, b00), b00)) (q, 00), 00)) (q, 0), 0)) (q,),)) (q, , )
Autmatos de
De PDA para CFG
Ideia: reconhecer que o evento fundamental num
processamento num PDA o pop final de um smbolo da
pilha enquanto se consome entrada
Acrescentar variveis na linguagem para
Cada eliminao definitiva de um smbolo X da pilha
Cada mudana de estado de p para q ao eliminar X, representada
por um smbolo composto [pXq]
Regra: do PDA P= (Q, , , N, q0, Z0) construir CFG G= (V,
, R, S)
Variveis V: contm S e os smbolos [pXq]

Autmatos de
De PDA para CFG (cont)
Produes R:
Para todos os estados p, G contm S [q0Z0p]
O smbolo [q0Z0p] gera todas as cadeias w que extraem Z0 da pilha
enquanto vo do estado q0 para o estado p, (q0,w,Z0) * (p,,)
Ento S gera todas as cadeias w que esvaziam a pilha
Se (q,a,X) contm o par (r,Y1Y2Yk), k0, a ou a= ento para
todas as listas de estados r1,r2,,rk, G contm
[qXrk] a[rY1r1][r1Y2r2][rk-1Ykrk]
Uma forma de extrair X e ir de q a rk ler a (pode ser ) e usar alguma
entrada para extrair Y1 ao ir de r para r1, etc.

Autmatos de
Exemplo
Converter o PDA PN=({q},{i,e},{Z},N,q,Z) numa gramtica
aceita as cadeias que violam pela 1 vez a regra de que um e deve
corresponder a um i precedente
Soluo:
s um estado q e s um smbolo de pilha Z
Duas variveis: S, smbolo inicial; [qZq], nico smbolo a partir dos
estados e smbolos de PN
Produes:
S [qZq] (se houvesse mais estados p e r teramos S[qZp] e S[qZr])
De N(q,i,Z)={(q,ZZ)} obter [qZq]i[qZq] [qZq] (se houvesse mais
estados p e r teramos [qZp]i[qZr] [rZp])
De N(q,e,Z)={(q,)} obter [qZq]e (Z substitudo por nada)
Chamando A a [qZq] fica SA e A iAA | e

Autmatos de
Propriedades das CFL
Simplificao das CFGs forma normal de Chomsky
Eliminao de smbolos inteis
Smbolo til: S * X * w, w T*
Smbolo gerador: X * w
Qualquer terminal gerador, dele prprio!
Smbolo atingvel: S * X
til = gerador + atingvel
Eliminar primeiro os no geradores e depois os no atingveis
Exemplo
S AB | a S a [B no gerador] Sa
Ab Ab [A no atingvel]

Autmatos de
Eliminao de smbolos inteis
Algoritmo: descobrir os smbolos geradores
os terminais so geradores
A e s tem geradores; ento A gerador
Algoritmo: descobrir os smbolos atingveis
S atingvel
A atingvel, A; ento todos os smbolos em so atingveis

Autmatos de
Eliminao de produes-
Varivel anulvel: A *
Transformao: B CAD passa a B CD | CAD e
impede-se que A produza
Algoritmo: descobrir as variveis anulveis
A C1 C2 Ck, todos os Ci so anulveis; ento A anulvel
Se uma linguagem L tem uma CFG ento L-{} tem uma
CFG sem produes-
Determinar todos os smbolos anulveis
Para cada A X1 X2 Xk se m Xis so anulveis substituir por 2m
produes com todas as combinaes de presenas de Xi.
Excepo: se m=k, no se inclui o caso de todos os Xi ausentes
Produes A so eliminadas
Autmatos de
Exemplo
Gramtica
S AB
A aAA |
B bBB |
A e B so anulveis, logo S tambm
S AB | A | B
A aAA | aA | aA | a
B bBB | bB | b

Autmatos de
Eliminao de produes unitrias
Produo unitria: A B, em que A e B so variveis
Podem ser teis na eliminao de ambiguidade (ex: linguagem das
expresses)
No so imprescindveis; introduzem passos extra nas derivaes
Eliminam-se por expanso
I a | b | Ia | Ib | I0 | I1
F I | (E)
TF|TF
ET|E+T
De E T passar a E F | T F a E I | (E) | T F e
finalmente E a | b | Ia | Ib | I0 | I1 | (E) | T F
Problema no caso de ciclos

Autmatos de
Eliminao de produes unitrias
Algoritmo: descobrir todos os pares unitrios, derivveis
apenas com produes unitrias
(A, A) um par unitrio
(A, B) um par unitrio e B C, C varivel; ento (A, C)
unitrio
Exemplo: (E, E), (T, T), (F, F), (E, T), (E, F), (E, I), (T, F),
(T, I), (F, I)
Eliminao: substituir as produes existentes de forma a
que para cada par unitrio (A, B) se incluam todas as
produes da forma A em que B uma produo
no unitria (incluir A=B)
Autmatos de
Gramtica sem produes unitrias
I a | b | Ia | Ib | I0 | I1 Par Produes
F I | (E) (E, E) EE+T
TF|TF (E, T) ETF
ET|E+T (E, F) E (E)
(E, I) E a | b | Ia | Ib | I0 | I1
(T, T) TTF
(T, F) T (E)
(T, I) T a | b | Ia | Ib | I0 | I1
(F, F) F (E)
(F, I) F a | b | Ia | Ib | I0 | I1
(I, I) I a | b | Ia | Ib | I0 | I1
Autmatos de
Sequncia de simplificao
Se G uma CFG que gera uma linguagem com pelo menos
uma cadeia diferente de , existe uma CFG G1 que no tem
produes-, produes unitrias ou smbolos inteis e
L(G1) O= L(G) {}
Eliminar produes-
Eliminar produes unitrias
Eliminar smbolos inteis

Autmatos de
Forma normal de Chomsky (CNF)
Todas as CFL sem tm uma gramtica na forma normal de
Chomsky: sem smbolos inteis e em que todas as produes
so da forma
A BC (A, B, C variveis) ou
A a (A varivel e a terminal)
Transformao
Comear com uma gramtica sem produes-, produes unitrias
ou smbolos inteis
Deixar as produes A a
Passar todos os corpos de comprimento 2 ou mais para s variveis
Variveis novas D para os terminais d nesses corpos, substituir e D d
Partir corpos de comprimento 3 ou mais em cascatas de produes
s com 2 variveis A B1B2Bk para AB1C1, C1B2C2,
Autmatos de
Gramtica das expresses
Variveis para os terminais em corpos no isolados
Aa Bb Z0 O1
P+ M L( R)
E EPT | TMF | LER | a | b | IA | IB | IZ | IO
T TMF | LER | a | b | IA | IB | IZ | IO
F LER | a | b | IA | IB | IZ | IO
I a | b | IA | IB | IZ | IO
Substituir corpos compridos
E EC1 | TC2 | LC3 | a | b | IA | IB | IZ | IO
T TC2 | LC3 | a | b | IA | IB | IZ | IO
F LC3 | a | b | IA | IB | IZ | IO
C1 PT C2 MF C3 ER
Autmatos de
Lema da bombagem para CFL
Dimenso de uma rvore de anlise
Considerar apenas o caso das CNF: rvores binrias em que as
folhas so terminais sem irmos (produes Aa)
Numa gramtica com rvore de anlise CNF e colheita w terminal,
se o comprimento do maior caminho for n ento |w| 2n-1
Seja L uma CFL. Existe uma constante n tal que, para
qualquer cadeia z em L com |z|n se pode escrever z=uvwxy
|vwx| n a parte do meio no demasiado comprida
vx pelo menos uma no vazia
Para todo i 0, uviwxiy L bombagem dupla, a comear em 0

Autmatos de
Prova
Obter uma gramtica CNF G para L
G contm m variveis. Escolher n=2m. Cadeia z em L |z| n.
Qualquer rvore de anlise com caminho mais longo de
comprimento at m tem colheita at 2m-1=n/2.
z seria demasiado longa; rvore para z tem caminho m+1 ou maior
Na figura, o caminho A0Aka de comprimento k+1, km
H pelo menos m+1 variveis no caminho; logo h pelo menos uma
repetio de variveis (de Ak-m a Ak).
Supe-se Ai=Aj com k-m i < j k

Autmatos de
Continuao da prova
Se cadeia z suficientemente A0
longa, tem que haver repeties
de smbolos
Ai=Aj
Divide-se a rvore:
w a colheita da subrvore de Aj
v e x so tais que vwx a
colheita de Ai (como no h Aj
produes unitrias pelo menos
um de v e x no nulo)
Ak
u e y so as partes de z
a
u v w x y
esquerda e direita de vwx z

Autmatos de
Continuao da prova
S
Como Ai=Aj, pode-se
substituir a subrvore de Ai A
pela de Aj, obtendo o caso
i=0, uwy.
A
substituir a subrvore de Aj
pela de Ai, obtendo o caso u v w x y
i=2, uv2wx2y e repetir para S S
i=3, (bombagem)
|vwx|n porque se pegou A A
num Ai prximo do fundo
w
da rvore, k-im, caminho A
mais longo de Ai at m+1, u y u v x y
colheita at 2m=n A
v w
Autmatos
x de
Lema da bombagem

LR (DFA) CFL (CFG)


no caso das LR: o lema da bombagem decorre de o nmero
de estados de um DFA ser finito
para aceitar uma cadeia suficientemente comprida tem que haver
repeties de estados
No caso das CFL: decorre de o nmero de smbolos numa
CFG ser finito
para aceitar uma cadeia suficientemente comprida tem que haver
repeties (duplas) de smbolos
Autmatos de
Provar que uma linguagem no CFL
Seja L = {0k1k2k | k 1}. Mostre que no CFL.
Supondo que L uma CFL, existe uma constante n indicada pelo
lema da bombagem; tome-se z = 0n1n2n que faz parte de L
Fazendo z=uvwxy, sujeito a |vwx| n e v, x no ambos nulos, temos
que vwx no pode conter simultaneamente 0s e 2s
Caso vwx no contm 2s; ento vx tem s 0s e 1s e tem pelo
menos um smbolo. Ento, pelo lema da bombagem, uwy tambm
deveria pertencer linguagem. Mas tem n 2s e menos do que n 0s
ou 1s e portanto no pertence linguagem.
Caso vwx no contm 0s: argumento semelhante.
Obtm-se contradio em ambos os casos; portanto a hiptese
falsa e L no uma CFL

Autmatos de
Problemas na prova
Seja L = {0k1k | k 1}. Mostre que no CFL.
Supondo que L uma CFL, existe uma constante n indicada pelo
lema da bombagem; tome-se z = 0n1n que faz parte de L
Fazendo z=uvwxy, sujeito a |vwx| n e v, x no ambos nulos, pode
acontecer de escolher v= 0k e x=1k
Neste caso uviwxiy pertence sempre a L.
No se obtm a contradio pretendida
No se consegue provar que L no CFL
De facto uma CFL

Autmatos de
Substituio
Seja um alfabeto; para cada um dos seus smbolos a
define-se uma funo (substituio) que associa uma
linguagem La ao smbolo
Cadeias: se w= a1an ento s(w) a linguagem de todas as cadeias
x1xn tais que xi est em s(ai)
Linguagens: s(L) a unio de todos as s(w) tais que w L
Exemplo:
={0,1}, s(0)={anbn | n1}, s(1)={aa,bb}
Se w=01, s(w) = s(0)s(1) = {anbnaa | n1} {anbn+2 | n1}
Se L=L(0*), s(L) = (s(0))* = an1bn1ankbnk, para n1, , nk qq
Teorema: seja L uma CFL e s() uma substituio que associa
a cada smbolo uma CFL; ento s(L) uma CFL.
Autmatos de
Aplicao do teorema da substituio
As CFL so fechadas para:
Unio
Concatenao
Fecho (*) e fecho positivo (+)
Homomorfismo
Reverso
Interseco com uma LR
Interseco com uma CFL no garantida
Homomorfismo inverso

Autmatos de
CFL e interseco
Seja L1 = {0n1n2i | n1, i1} e L2 = {0i1n2n | n1, i1}
L1 e L2 so CFL
S AB S AB
A 0A1 | 01 A 0A | 0
B 2B | 2 B 1B2 | 12
L1 L2 = {0n1n2n | n1}
J est provado que no CFL
Logo as CFL no so fechadas para a interseco

Autmatos de
Complexidade das converses
Converses lineares no comprimento da representao
CFG para PDA
PDA de estado final para PDA de pilha vazia
PDA de pilha vazia para PDA de estado final
Converso O(n3)
PDA para CFG (tamanho da CFG tambm O(n3))
Converso O(n2)
CFG para CNF (tamanho da CNF tambm O(n2))

Autmatos de
Propriedades de deciso das CFL
Teste de linguagem vazia
Verificar se S gerador
Com estrutura de dados adequada, O(n)
Teste de pertena numa CFL
O(n3), usando programao dinmica, preenchimento de tabela

X15 S AB | BC {S,A,C}
{S,A,C}
X14 X25
A BA | a {B} {B}
X13 X24 X35
X12 X23 X34 X45 B CC | b {S,A} {B} {S,C} {S,A}
{B} {A,C} {A,C} {B} {A,C}
X11 X22 X33 X44 X55 C AB | a b a a b a
a1 a2 a3 a4 a5
w=baaba X12: X11X22; X24: X22X34X23X44
Autmatos de
Problemas no decidveis
No h algoritmo para responder a estas perguntas
Uma dada CFG ambgua?
Uma dada CFL inerentemente ambgua?
A interseco de duas CFL vazia?
Duas CFL dadas so a mesma linguagem?
Uma CFL o universo *, em que o seu alfabeto?

Autmatos de

Anda mungkin juga menyukai