Você está na página 1de 15

O que é um Autômato Pushdown?

 Um autômato finito com:

– Fita de leitura
– Pilha (estrutura LIFO “Last In, First Out)

A pilha introduz uma memória ao autômato finito


determinístico usual.

Também chamado autômato de pilha.


Automata e Linguagens Formais - 1
Pushdown
O que é um Autômato Pushdown?
 Formalmente:
M=(Q,,,,q0,Z0,F)
Q = conjunto de estados
=alfabeto de entrada
=alfabeto da pilha
q0  Q = estado inicial
Z0   = símbolo inicial na pilha
=função de transição de Q X ({}) X  em subconjuntos de
Q X *
F=conjunto de estados finais

Automata e Linguagens Formais - 2


Pushdown
A Função de Transição 
Q X ({}) X )  subconjuntos de Q X *

possíveis configurações (estado, string de


estado
símbolo lido na fita símbolos colocados no topo da pilha)
símbolo no topo da resultantes
Exemplo: (qi, a, A) = {[qj, B], [qk, C]}
pilha

Um APD admite transições não-determinísticas!

Automata e Linguagens Formais - 3


Pushdown
Representação por Diagrama de Estados

a A/B
q q
i j

(qi, a, A) = {[qj, B]}


Estado inicial qi, lido símbolo a na fita, símbolo A no topo da pilha.
Estado resultante qj, símbolo (ou string de símbolos) B substitui A no topo
da pilha.

Automata e Linguagens Formais - 4


Pushdown
Representação por Diagrama de Estados: Exemplos

 A/ Nenhum símbolo lido, A no topo da pilha removido.

 qi ,  , A  qi ,  
q
i

 A/A
Nenhum símbolo lido, A no topo da pilha mantido.
q
i
 qi ,  , A  qi , A

Símbolo a lido, símbolo A no topo da pilha


a A/
q q
j substituído por string 
 qi , a , A  q j ,  
i

Automata e Linguagens Formais - 5


Pushdown
Configurações em APDs
 Def. Uma configuração instantânea de um APD é um tripla [qi, w, ], em
que qi é o estado, w é a string não processada e  é o conteúdo da pilha
(símbolo mais à esquerda no topo).
 Def. A função é definida por
q i , w,  q ej , indica
v,   que a


M
configuração
q , v,  
j
pode ser obtida a partir daM
configuração

por uma transição do APD M.


q i , w, 
A notação indica que a configuração pode ser

obtida a partir qda w,  * q j , v, 
i , configuração

 
por zero ou mais transiçõesqdo ,
j , vAPD
M
M. q i , w, 
 Uma computação em um APD é uma seqüência de transições a partir do
estado inicial com a pilha contendo apenas Z0.

Automata e Linguagens Formais - 6


Pushdown
Configurações
M: Q={q , q }
em APDs: Exemplo 1
0 1
(q ,a,A)={[q ,A]}
0 0
={a,b}
(q ,b,A)={[q ,A]}
0 1
={A}
(q ,b,A)={[q ,A]}
Z ={A} aA/ A 1 1
bA/ A
0
bA/ A
q q
 0 1
F={q , q }
0 1

[q , aabb, A] [q , abb, A] [q , bb, A] [q , b, A] [q , , A]



0 0 0 1 1

Computação para a string aabb terminou em um estado final 

string é aceita (por estado final) pelo APD.

Automata e Linguagens Formais - 7


Pushdown
Configurações em APDs: Exemplo 2 (q0,a,Z)={[q0,AZ]}

M: Q={q , q }
0 1 (q ,a,A)={[q ,AA]}
0 0
={a,b}
(q ,b,A)={[q ,]}
0 1
={A}
(q ,b,A)={[q , ]}
1 1
Z ={Z}
0 (q1,  ,Z)={[q1, ]}
aA/AA
bA/ 
bA/ 
F=  q q
 0 1

[q , abb, AZ] [q , bb, AAZ] [q , b, AZ] [q ,  , Z] [q , , ]




0 0 1 1 1

Computação para a string aabb terminou com a pilha vazia  string

é aceita (por pilha vazia) pelo APD.

Automata e Linguagens Formais - 8


Pushdown
Linguagens e APDs
 Def. Uma string w  * é aceita por estado final por um APD M=(Q,,,,
q0,Z0,F) se existir computação [q0, w, Z0] [qi, , ], com qi  F. *


 M
Def. Uma string w  * é aceita por pilha vazia por um APD M=(Q,,,,
q0,Z0,F) se existir computação [q0, w, Z0] [qi, , ].
 Def. A linguagem L(M) é o conjunto de strings aceitas por estado final pelo
*


APD M. M
 Def. A linguagem N(M) é o conjunto de strings aceitas por pilha vazia pelo
APD M.

Obs 1: A natureza não-determinística da função de transição possibilita existência


de computações que não terminam. As strings correspondentes são
consideradas não aceitas.
Obs 2: Aceitação como AFN’s: aceita-se string se existir ao menos uma
computação que termine em estado final (ou pilha vazia).

Automata e Linguagens Formais - 9


Pushdown
Linguagens e APDs: Exemplo 1
(q ,0,R)={[q ,BR]} (q a,1,R)={[q ,GR]} R
Um APD que
M: Q={q , q }
aceita
0
por pilha
0
vazia 0
linguagem0
{wcw |w
*
{0, 1} }
0 1
(q ,0,B)={[q ,BB]} (q ,1,B)={[q ,GB]}
={0,1,c} 0 0 0 0

(q ,0,G)={[q ,BG]} (q ,1,G)={[q ,GG]}


={R,B,G} 0 0 0 0

(q ,c,R)={[q ,R]} (q ,,R)={[q ,]}


0 =R
Z
0 1 1 1

F= (q ,c,B)={[q ,B]} (q ,0,B)={[q ,]}


0 1 1 1

[q ,01c10, R] [q (q
,1c10,BR] [q ,c10,GBR] [q ,10,GBR] [q ,0,BR]


,c,G)={[q ,G]} (q ,1,G)={[q ,]}
0 0 0 1 0 1 11 1

[q ,,R] [q ,, ]String aceita!



1 1

Automata e Linguagens Formais - 10


Pushdown
Linguagens e APDs: Exemplo 2
(q ,0,R)={[q ,BR]} (q ,1,R)={[q ,GR]} R
Um APD
M: Q={q , q , q }
0 1 2
que aceita
0 por estado
0 final a linguagem
0 0 {wcw |w
*
{0, 1} }

(q ,0,B)={[q ,BB]} (q ,1,B)={[q ,GB]}


={0,1,c} 0 0 0 0

(q ,0,G)={[q ,BG]} (q ,1,G)={[q ,GG]}


={R,B,G} 0 0 0 0

(q ,c,R)={[q ,R]} (q ,,R)={[q ,R]}


0 =R
Z
0 1 1 2

F={q } (q ,c,B)={[q ,B]} (q ,0,B)={[q ,]}


2 0 1 1 1

[q ,01c10, R] (q ,c,G)={[q


[q ,1c10,BR] [q ,G]} (q ,1,G)={[q
,c10,GBR] ,]}
[q ,10,GBR] [q ,0,BR]


0 0 0 10 1 1 1 1
[q ,,R] [q ,,R] String aceita!


1 2

Automata e Linguagens Formais - 11


Pushdown
Linguagens e APDs: Exemplo
(q ,0,R)={[q ,BR]} (q ,1,R)={[q ,GR]}
3
0 0 0 0 R
Um APD que aceita por pilha vazia a linguagem {ww | w
M: Q={q , q } *
{0, 1} }
0 1 (q ,0,B)={[q ,BB], [q ,]} (q ,1,B)={[q ,GB]}
0 0 1 0 0

={0,1}
(q ,0,G)={[q ,BG]} (q ,1,G)={[q ,GG], [q ,]}
0 0 0 0 1
={R,B,G}
(q ,,R)={[q ,]} (q ,0,B)={[q1,]}
0 1 1
Z
0 =R
(q ,1,G)={[q ,]}
1 1
F=
Exemplo 3: APD não-determinístico - mais de uma transição possível para
(q1,,R)={[q1,]}
algumas configurações instantâneas.

Exemplos 1,2: APDs determinísticos - no máximo uma transição possível para

cada configuração instantânea


Automata e Linguagens Formais - 12
Pushdown
APDs Determinísticos
Formalmente, um APD M=(Q,,,,q0,Z0,F) é
determinístico se:

i)  q,Z (q,,Z) não-vazio  (q,a,Z) vazio,  a


Elimino possibilidade de escolha entre um movimento  e
um movimento dependente de um símbolo a.

ii)  q,a,Z card((q,a,Z)) = 0 ou 1


Para qualquer (q,a,Z) (incluindo-se a=), existe no
máximo uma transição possível.
Automata e Linguagens Formais - 13
Pushdown
Observações Importantes
 Não há equivalência entre APDs (não-
determinísticos) e APDs determinísticos
 Existe equivalência entre APDs que
aceitam linguagens por pilha vazia e
APDs que aceitam linguagens por
estado final.

Automata e Linguagens Formais - 14


Pushdown
APDs e Linguagens Livres de Contexto
Teorema (Chomsky, 1962): L é uma linguagem
livre de contexto sss L é aceita por algum
APD M que aceita por pilha vazia (ou por
estado final).

Análogo ao teorema de Kleene para AFs e


linguagens regulares!

Automata e Linguagens Formais - 15


Pushdown

Você também pode gostar