Escolar Documentos
Profissional Documentos
Cultura Documentos
br/
Teoria da Computao
Cristiano Lehrer
http://www.ybadoo.com.br/
Introduo
A Mquina com Pilhas diferencia-se das Mquinas de Turing e de Post principalmente pelo fato de possuir uma memria de entrada separada das memrias de trabalho e de sada. Essas estruturas auxiliares so do tipo pilha, e cada mquina possui zero ou mais pilhas. Pilhas constituem um tipo de estrutura de dados usado em Cincia da Computao h algum tempo. Entretanto, somente na dcada de 60, o modelo de Mquina com Pilhas foi formalizado e devidamente estudado.
Mquina Finita
Uma Mquina Finita, que corresponde a uma Mquina Sem Pilhas, possui um poder computacional relativamente restrito, pois no tem memria auxiliar para armazenar informaes de trabalho. Por exemplo, no existe Mquina Sem Pilhas capaz de reconhecer um n n duplo balanceamento como em {a b | n 0}. Entretanto, uma classe de mquinas de fundamental importncia no estudo das Linguagens Formais, como em editores de textos e analisadores lxicos.
A Classe das Mquinas com Uma Pilha, embora mais poderosa que a Classe das Mquinas Finitas, ainda possui uma capacidade computacional restrita. Por exemplo, no existe Mquinas com Uma Pilha capaz de reconhecer n n n um triplo balanceamento, como em {a b c | n 0}. Entretanto, tambm uma classe de mquinas de fundamental importncia no estudo das Linguagens Formais, como em compiladores de linguagens do tipo Pascal.
A Classe das Mquinas com Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas de Turing ou de Post.
A Classe das Mquinas com Mais de Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas com Duas Pilhas, ou seja, para qualquer mquina com mais de duas pilhas, possvel construir uma equivalente com, no mximo, duas pilhas que realiza o mesmo processamento.
Componentes
Varivel X
Trata-se de uma varivel de entrada, similar da Mquina de Post, mas usada somente para entrada. Trata-se de variveis do tipo pilha, e so utilizadas como memria de trabalho e de sada. uma sequncia finita de instrues e representado como um diagrama de fluxos (espcie de fluxograma), onde cada vrtice uma instruo. As instrues podem ser de cinco tipos:
Variveis Yi
Programa
Varivel X
A varivel X no possui tamanho nem limites fixos. Os smbolos pertencem ao alfabeto de entrada. Inicialmente, o valor de X a palavra de entrada e seu comprimento igual ao comprimento da palavra corrente armazenada. Caso X no contenha smbolos, a entrada vazia, representada pela palavra vazia {}.
Variveis Yi
As variveis Yi, em nmero varivel, mas finito, tambm no possuem tamanho nem limites fixos, e os smbolos pertencem ao alfabeto de entrada (no existem smbolos auxiliares). Inicialmente, o valor de cada pilha Yi a palavra vazia, e seu comprimento, igual ao comprimento da palavra corrente armazenada. importante observar que, embora os modelos Mquina de Post e Mquina com Pilhas possuam alguma semelhana, existe uma grande diferena na forma de manipular seus dados. Na Mquina de Post, em uma fila, pode-se ler (e remover) smbolos em uma extremidade e armazenar na outra. Assim, os dados circulam. Em uma Mquina com Pilhas, o armazenamento e leitura (e remoo) sempre na mesma extremidade.
Partida
Parada
Existem duas alternativas de instrues de parada em um programa, uma de aceitao (aceita) e outra de rejeio (rejeita).
aceita
rejeita
Desvio ou Teste
Determina o fluxo do programa de acordo com o smbolo mais esquerda da palavra armazenada na varivel X (incio da fila). Tambm deve ser prevista a possibilidade de X conter a palavra vazia. Portanto, um desvio condicional, e trata-se de uma funo total, ou seja, definida para todos os valores do domnio. Assim, se o cardinal de n, ento existem n+1 arestas de desvios condicionais, pois se deve incluir a possibilidade de . X ler(X) denota uma leitura destrutiva, ou seja, que l o smbolo mais esquerda da palavra, retirando da mesma o smbolo lido.
X ler(X) a1 a2 ... an
Desempilha
Determina o fluxo do programa de acordo com o smbolo no topo da pilha Yi. Tambm deve ser prevista a possibilidade de Yi conter a palavra vazia. Portanto, um desvio condicional, e trata-se de uma funo total, ou seja, definida para todos os valores do domnio. Assim, se o cardinal de n, ento existem n+1 arestas de desvios condicionais, pois se deve incluir a possibilidade de . Yi ler(Yi) denota uma leitura destrutiva, ou seja, que l o smbolo do topo de Yi, retirando da estrutura o smbolo lido.
Yi ler(Yi) a1 a2 ... an
Empilha
Empilha um smbolo (pertencente a ) no topo da pilha indicada, ou seja, concatena o smbolo na extremidade da palavra armazenada na varivel Yi.
Yi sYi
Definio
Programa ou diagrama de fluxos, construdos a partir de componentes elementares denominados partida, parada, desvio, empilha e desempilha.
Observaes
Em um diagrama de fluxos, existe somente uma instruo de partida, mas podem existir diversas (zero ou mais) instrues de parada, tanto de aceitao como de rejeio. Uma palavra de entrada aceita ou rejeitada, se a computao, iniciada com a varivel X, contendo a entrada, atingir uma instruo aceita ou rejeita, respectivamente. perfeitamente possvel uma Mquina com Pilhas ficar em loop infinito. Em uma instruo de desvio ou desempilha, se X ou Yi contm a palavra vazia, ento segue o fluxo correspondente. Caso contrrio, l o smbolo mais esquerda de X ou no topo de Yi e o remove, aps a deciso de qual aresta do fluxo indica a prxima instruo.