Prof. Yandre Maldonado e Gomes da Costa Autômato com Pilha Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1
Prof. Yandre Maldonado - 2 Autômato com Pilha São os formalismos (máquinas) capazes de reconhecer as Linguagens Livres de Contexto; Maior poder que os Autômatos Finitos, pois possuem um “espaço de armazenamento” extra que é utilizado durante o processamento de uma cadeia; Possui uma pilha que caracteriza uma memória auxiliar onde pode-se inserir e remover informações; Mesmo poder de reconhecimento das GLC’s; Prof. Yandre Maldonado - 2
Prof. Yandre Maldonado - 3 Autômato com Pilha Exemplo de LLC: {anbn | n0} Um AF não é capaz de reconhecer este tipo de linguagem devido à sua incapacidade de “recordar” (memorizar) informação sobre a cadeia analisada; Autômatos com Pilha (AP) possuem uma pilha para armazenar informação, adicionando poder aos AF’s. Prof. Yandre Maldonado - 3
Prof. Yandre Maldonado - 4 Autômato com Pilha Definição: AP é uma sextupla <,,S,S0,,B>, onde: é o alfabeto de entrada do AP; é o alfabeto da pilha; S é o conjunto finito não vazio de estados do AP; S0 é o estado inicial, S0 S; é a função de transição de estados, : S ({}) conjunto de subconjuntos finitos de S * B é o símbolo da base da pilha, B . Prof. Yandre Maldonado - 4
Prof. Yandre Maldonado - 5 Autômato com Pilha Ao contrário da fita de entrada, a pilha pode ser lida e alterada durante um processamento; O autômato verifica o conteúdo do topo da pilha, retira-o e substitui por uma cadeia *. Se = A, e A , então o símbolo do topo é substituído por A e a cabeça de leitura escrita continua posicionada no mesmo lugar; Se = A1A2...Na, n>1 então o símbolo do topo da pilha é retirado, sendo An colocado em seu lugar, An-1 na posição seguinte, e assim por diante. A cabeça é deslocada para a posição ocupada por A1 que é então o novo topo da pilha; Se = então o símbolo do topo da pilha é retirado, fazendo a pilha decrescer. Prof. Yandre Maldonado - 5
Prof. Yandre Maldonado - 6 Autômato com Pilha A função de transição , é função do estado corrente, da letra corrente na fita de entrada e do símbolo no topo da pilha; Além disso, esta função determina não só o próximo estado que o AP assume, mas também como o topo da pilha deve ser substituído; O AP inicia sua operação num estado inicial especial denotado por S0 e com um único símbolo na pilha, denotado por B. Prof. Yandre Maldonado - 6
Prof. Yandre Maldonado - 7 Autômato com Pilha A configuração de um AP é dade por uma tripla <s, x, > onde s é o estado corrente, x é a cadeia da fita que falta ser processada e é o conteúdo da pilha, com o topo no início de ; O AP anda ou move-se de uma configuração para outra através da aplicação de uma função de transição. Prof. Yandre Maldonado - 7
Autômato com Pilha Se o AP está na configuração <s,ay,A> e temos que (s,a,A)=<t,>, então o AP move-se para a configuração <t,y, > e denota-se <s,ay,A> |— <t,y, >. Se o AP move-se de uma configuração <s1,x1,1> para uma configuração <s2,x2,2> por meio de um número finito de movimentos, denotamos <s1,x1,1>|—*<s2,x2,2> Se o valor de para uma determinada configuração for o AP pára. Prof. Yandre Maldonado - 8
Prof. Yandre Maldonado - 9 Autômato com Pilha Note que AP’s não possuem estados finais como os AF’s; Assim, um string x é aceito se, ao chegar ao final da cadeia de entrada, a pilha estiver vazia, independentemente do estado em que o AP se encontra; Prof. Yandre Maldonado - 9
Prof. Yandre Maldonado - 10 Autômato com Pilha Formalmente temos: Dado o AP P = <,,S,S0,,B> e o string x sobre , diz-se que x é aceito por P sse existe s S tal que <S0,x,B>|—*<s,, >. Caso contrário, x é rejeitado. Dado o AP P = <,,S,S0,,B>, a linguagem L(P) definida por P é {x *| sS <S0,x,B> |—*<s,, >} Prof. Yandre Maldonado - 10
Prof. Yandre Maldonado - 11 Autômato com Pilha Exemplo de AP para a LLC {anbn | n0}: (S,a,B) = {<S,A>} (S,a,A) = {<S,AA>} (S,b,A) = {<R,>} (R,b,A) = {<R, >} (S,,B) = {<S, >} S R <a,B>/A <a,A>/AA <,B>/ <b,A>/ Prof. Yandre Maldonado - 11
Prof. Yandre Maldonado - 12 Autômato com Pilha Exemplo de AP para {x{a,b}*| |x|a=|x|b}: (S,a,C) = {<S,AC>} (S,b,C) = {<S,BC>} (S,,C) = {<S,>} (S,a,A) = {<S,AA>} (S,b,A) = {<S,>} (S,a,B) = {<S,>} (S,b,B) = {<S,BB>} S <a,C>/AC <b,C>/BC <,C>/ <a,A>/AA <b,A>/ <a,B>/ <b,B>/BB Prof. Yandre Maldonado - 12