Buscar

Autômatos com Pilha

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

AUTÔMATOS COM PILHA 
Marcelo Guerra 
INTRODUÇÃO 
 Voltaremos nossa atenção das LR para uma 
classe maior de linguagens “Linguagens Livres 
de Contexto”. 
INTRODUÇÃO 
 Extensão do autômato finito não determinístico 
com transições vazias para as linguagens livres 
de contexto. 
 
 Trata-se de um -AFN com a inclusão de uma 
estrutura de dados do tipo pilha. 
 Pode ser aumentada e diminuída somente no topo. 
 Modo de acesso: LIFO. 
 
 Esses autômatos aceitam exatamente as LLC’s. 
 GLCs podem ser convertidas em autômatos com pilha 
e vice-versa. 
 
DEFINIÇÃO DE AUTÔMATO COM PILHA 
 O Autômato com Pilha é análogo ao Autômato 
Finito, incluindo uma pilha como memória 
auxiliar e a facilidade de não-determinismo com 
transições vazias. 
 O autômato de pilha pode “memorizar” uma 
quantidade infinita de informações. 
 O acesso é feito apenas no topo: último a entrar 
primeiro a sair. 
 Nem toda linguagem pode ser reconhecida sem o 
acesso aleatório. 
 
Os Autômatos com pilha reconhecem todas 
as LLC’s, e somente elas. 
DEFINIÇÃO DE AUTÔMATO COM PILHA 
 Assim como algumas linguagens não são regulares 
e são livres de contexto, há linguagens que não são 
livres de contexto. 
 Exemplo: L={0n1n2n|n 1} 
 
REPRESENTAÇÃO 
 Controle de estados 
finitos: 
 Lê as entradas, um 
símbolo de cada vez. 
 Além de ler a entrada, o 
autômato pode ler o 
símbolo do topo da 
pilha para decidir em 
qual estado ele deve 
entrar. 
 Alternativamente, ele 
pode realizar transições 
espontâneas, usando  
como entrada em vez de 
um símbolo de entrada. 
 
 
Controle 
de 
Estados 
Finitos 
Entrada 
Aceitar/
rejeitar 
Pilha 
TRANSIÇÕES 
 Em uma transição, o autômato: 
 
1. Consome um símbolo da entrada. Se  for usado, a 
entrada não é alterada. 
 
2. Assume um novo estado, que pode ser igual ao 
anterior. 
 
3. Substitui o símbolo no topo da pilha por qualquer 
string, que pode: 
 ser , correspondendo à operação de pop. 
 ser o mesmo símbolo anterior, o que não altera a pilha. 
 substituir o símbolo do topo por outro. 
 ser uma string: tem como efeito a possibilidade de alterar o 
símbolo do topo da pilha, e depois inserir um ou mais 
novos símbolos na pilha. 
EXEMPLO 
 Considere a linguagem Lww
r = {wwR|w está em (0 + 1)*} 
 
 A linguagem “w-w-reverso”: palíndromos de comprimento par 
sobre o alfabeto {0,1}. 
 
 Sua gramática é 
1. P   
2. P  0P0 
3. P  1P1 
 
 Podemos projetar um Autômato com Pilha para esta 
linguagem como segue: 
EXEMPLO 
1. Começamos com um estado q0 que representa o 
palpite de que ainda não vimos o meio da string: 
não vimos w, que deve ser seguida de seu 
próprio reverso, wR. 
 Enquanto estamos em q0, lemos os símbolos e os 
armazenamos na pilha. 
 
2. Em qualquer momento, podemos supor que 
lemos o fim de w (o meio da entrada), que estará 
copiada na pilha. 
 A extremidade direita de w no topo, e a esquerda na 
parte inferior da pilha. 
 Esta escolha é interpretada como uma transição 
vazia para o estado q1. 
EXEMPLO 
3. Uma vez em q1, comparamos o símbolo de 
entrada com o símbolo do topo da pilha. 
 Se eles coincidirem, consumimos a entrada, 
extraímos o símbolo do topo e prosseguimos. 
 Caso contrário, o palpite foi errado e w não é 
seguido de wR, essa ramificação da execução 
“morre”. 
 Outras ramificações não determinísticas podem 
evoluir e levar à aceitação. 
 
4. Se esvaziamos a pilha, então, de fato vimos 
alguma entrada w, seguida por wR e aceitamos 
a entrada. 
DEFINIÇÃO FORMAL 
 Um ACP (ou PDA para pushdown automata) P é 
definido por P = (Q, , , , q0, Z0, F), onde: 
 
 Q é um conjunto finito de estados. 
 (sigma) é um conjunto finito de símbolos de entrada. 
 (gama) é o alfabeto da pilha, um conjunto finito de 
símbolos. 
 q0 é o estado inicial. 
 Z0 é o símbolo de início. 
 A pilha é iniciada com este símbolo e nada mais. 
 F é o conjunto de estados de aceitação. 
 
DEFINIÇÃO FORMAL 
  é a função de transição, que toma como 
argumentos uma tripla (q, a, X), onde: 
 
1. q é um estado de Q. 
 
2. a é um símbolo de entrada em  ou a=. 
 
3. X é um símbolo da pilha em . 
 
 A saída de  é um conjunto finito de pares (p, ), 
onde p é o novo estado e  é a string a ser escrita na 
pilha em substituição a X. 
 
EXEMPLO 
 O autômato para a linguagem wwR é dado por: 
 
 P = {{q0, q1, q2}, {0, 1}, { 0, 1, Z0}, , q0 ,Z0, {q2} } 
 
 
 Onde  é definido pelas regras: 
1. (q0, 0, Z0) = {(q0, 0Z0) } e (q0, 1, Z0) = {(q0, 1Z0) } 
 (empilha deixando Z0) 
2. (q0, 0, 0) = {(q0, 00) }, (q0, 0, 1) = {(q0, 01)}, 
(q0, 1, 0) = {(q0, 10) } e (q0, 1, 1) = {(q0, 11) } 
 (empilha) 
3. (q0, , Z0) = {(q1, Z0)}, (q0, , 0) = {(q1, 0)} e (q0, , 1) = {(q1, 1)} 
 (mudar de estado sem modificar a pilha) 
4. (q1, 0, 0) = {(q1, )} e (q1, 1, 1) = {(q1, )} 
 (extração) 
5. (q1, , Z0) = {(q2, Z0)} 
 (estado final transição vazia) 
 
P = (Q, , , , q0, Z0, F) 
NOTAÇÃO GRÁFICA 
 O diagrama de transição para PDA’s é formado 
por: 
 
 Nós correspondendo aos estados. 
 
 Uma seta indicando o estado inicial, e estados com 
círculos duplos indicando estados de aceitação. 
 
 Arcos correspondem às transições de ACP. 
 Um arco identificado por a, X/ do estado q para o estado p, 
significa que (q, a, X) contém o par (p, ). 
 
 O símbolo de início da pilha não é indicado, mas 
por convenção, usaremos Z0. 
EXEMPLO 
q0 q1 q2 
 
0, Z0/0Z0 
1, Z0/1Z0 
0, 0/00 
0, 1/01 
1, 0/10 
1, 1 /11 
, Z0/Z0 
 , 0/0 
, 1/1 
 
0, 0/  
1, 1/  
 
, Z0/Z0 
 
Estado Atual 
Entrada 
Topo da pilha 
Como a pilha vai ficar 
EXEMPLO 
q0 q1 q2 
 
0, Z0/0Z0 
1, Z0/1Z0 
0, 0/00 
0, 1/01 
1, 0/10 
1, 1 /11 
, Z0/Z0 
 , 0/0 
, 1/1 
 
0, 0/  
1, 1/  
 
, Z0/Z0 
 
(1) 
(1) 
(2) 
(2) 
(2) 
(2) 
(3) 
(3) 
(3) 
(4) 
(4) 
(5) 
DESCRIÇÕES INSTANTÂNEAS 
 A configuração de um PDA envolve tanto seu 
estado atual quanto o conteúdo da pilha. 
 Também é útil representar como parte da 
configuração a porção restante da entrada. 
 
 Usaremos uma tripla (q, w, ) para representar a 
configuração. 
 q é o estado corrente. 
 w é o restante da entrada. 
  é o conteúdo da pilha. 
 
 O topo da pilha aparece na extremidade esquerda 
de  e a parte inferior aparece à direita. 
DESCRIÇÕES INSTANTÂNEAS 
 O processamento (ou “computação”) realizado pelo 
PDA é denotado através da “dedução” para conectar 
pares de DI’s (Descrições Instantâneas) que 
representam um ou muitos movimentos do PDA. 
 
 Seja P = (Q, , , , q0, Z0, F) um PDA. Definimos ⊦P 
ou simplesmente ⊦ como segue: 
 Suponha que (q, a, X) contém (p, ). Então, para todos 
os strings w em * e β em *: 
 (q, aw, Xβ) ⊦ (p, w, β) 
 
Consumindo a e substituindo X por  no topo da pilha, 
podemos ir do estado q para o estado p. 
DESCRIÇÕES INSTANTÂNEAS 
 Também usamos ⊦* para representar zero ou mais 
movimentos do PDA, ou seja: 
 Base: I ⊦* I para qualquer DI I 
 Indução: I ⊦* J se existe alguma DI K tal que I ⊦ K e K ⊦* J 
 
 Ou seja, I ⊦* J se existe uma seqüência de DI’s 
K1,K2,...,Kn tal que I = K1,J=Kn, e para todo 
i = 1, 2, n, ..., n-1 temos que Ki ⊦ Ki+1 
EXEMPLO 
 Considere o PDA para a linguagem w-w-reversa 
sobre a entrada 1111. 
q0 q1 q2 
 
0, Z0/0Z0
1, Z0/1Z0 
0, 0/00 
0, 1/01 
1, 0/10 
1, 1/11 
, Z0/Z0 
 , 0/0 
, 1/1 
 
0, 0/  
1, 1/  
 
, Z0/Z0 
 
EXEMPLO 
(q0, 1111, z0) 
(q0, 111, 1z0) 
 
(q1, 1111, z0) 
 
(q2, 1111, z0) 
(q0, 11, 11z0) 
 
(q1, 111, 1z0) 
 
(q1, 11, z0) 
 
(q0, 1, 111z0) 
 
(q1, 11, 11z0) 
 
(q2, 11, z0) 
 
(q0, ε, 1111z0) 
 
(q1, 1, 111z0) 
 
(q1, 1, 1z0) 
 
(q1, ε, 1111z0) 
 
(q1, ε, 11z0) 
 
(q1, ε, z0) 
 
(q2, ε, z0) 
 
 Computação da cadeia de entrada 1111. 
3 
3 
3 
3 
2 
1 
2 
2 
5 
5 
1 
4 
5 
4 
5 
2 
EXEMPLO 
 Computação da cadeia de entrada 1111.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando