Autômato com pilha determinístico
Na teoria dos autômatos, um autômato com pilha determinístico (APD) é uma variante de autômato com pilha . O APD aceita as linguagens livres de contexto determinística, um subconjunto próprio de linguagens livres de contexto.[1]
As transições da máquina são baseadas no estado atual e no símbolo de entrada, e também do símbolo mais alto na pilha. Os símbolos mais inferiores na pilha não estão visíveis e não provocam efeitos imediatos. As ações da máquina incluem colocar símbolo na pilha, retirá-lo da pilha ou substituir o topo da pilha. Um autômato com pilha determinístico tem no máximo uma transição possível para uma mesma combinação de símbolo de entrada, estado e símbolo no topo da pilha. Isto é o que o difere de um autômato com pilha não determinístico.
Definição formal
[editar | editar código-fonte]Um autômato com pilha "M" (não necessariamente determinístico) pode ser definido com uma 7-upla:
onde
- é o conjunto finito de estados
- é o conjunto finito de símbolos de entrada (ou alfabeto de entrada)
- é o conjunto finito de símbolos da pilha (ou alfabeto da pilha)
- é o estado inicial
- é o símbolo inicial da pilha
- , onde é o conjunto de estados de aceitação
- é uma função de transição, onde
- onde representa , "o conjunto de todas as cadeias finitas (incluindo a cadeia vazia ) de elementos de ", representa a cadeia vazia, e é o conjunto das partes de um conjunto .
M é determinístico se satisfaz ambas as condições:
- Para algum , o conjuntos tem no máximo um elemento.
- Para algum , se , então para todo
A configuração instantânea de um Autômato com pilha determinístico é dado por uma tripla, a saber: [q,w,p], onde:
- é o estado atual;
- é a string de entrada
- é a string de pilha (topo -> corpo da pilha)
Há dois critérios de aceitação possíveis: aceitação por "pilha vazia" e aceitação por um "estado final". Os dois não são equivalentes para autômatos com pilha determinísticos (embora sejam para autômatos com pilha não determinísticos). As linguagens aceitas por "pilha vazia" são linguagens que são aceitas pelo "estado final". Não existe nenhuma palavra na linguagem que é prefixo de outra palavra na linguagem.
Linguagem reconhecida por um APD
[editar | editar código-fonte]Seja um APD: , então a linguagem reconhecida por M é:
- .
onde significa que a mudança ocorre em um número arbitrário de passos, e representa o autômato M.
Reconhecedores de linguagem
[editar | editar código-fonte]Se é uma linguagem aceita pelo AP , ela pode ser aceita também por um APD se e somente se existe uma única computação de uma configuração inicial até uma aceitação para todas as cadeias pertencentes a . Se pode ser aceita por um AP, ela é uma linguagem livre de contexto, e se ela pode ser aceita por um APD ela é uma linguagem livre de contexto determinística.
Nem todas as linguagens livres de contexto são determinísticas. Isto faz de um APD um dispositivo mais fraco que um autômato com pilhas. Por exemplo, a linguagem de palíndromos de mesmo comprimento no alfabeto de 0 e 1 tem a gramática livre de contexto S → 0S0 | 1S1 | ε. Uma cadeia arbitrária desta linguagem não pode ser analisada sem ler todos os seus primeiros símbolos, o que significa que um autômato com pilha tem que tentar transições alternativas entre estados para acomodar os diferentes possíveis comprimentos de uma cadeia não totalmente analisada.[2] O problema geral de decidir se uma linguagem livre de contexto pode ser aceita por um APD é indecidível.[3]
Restringir o APD a um único estado reduz a classe de linguagens aceitas pelas linguagens LL(1).[4] No caso de um AP, esta restrição não tem efeito na classe das linguagens aceitas.
Propriedades
[editar | editar código-fonte]Fechamento
[editar | editar código-fonte]Propriedades de fechamento de linguagens livres de contexto determinísticas (aceitas por um APD pelo estado final de aceitação) são drasticamente diferentes das propriedades das linguagens livres de contexto. Como exemplo, elas são (efetivamente) fechadas sob a operação de complemento, mas não são fechadas sob a operação de união. Provar que o complemento de uma linguagem aceita por um AP é também aceita por um autômato com pilha determinístico é bastante complicado. Em princípio, deve-se evitar infinitas computações.
Como consequência da operação de complemento, ela é decidível se um APD aceita todas as palavras sobre seu alfabeto de entrada, testando o seu complemento para a cadeia vazia. Isto não é possível para gramáticas livres de contexto (nem para APs no geral).
Problema de equivalência
[editar | editar código-fonte]Geraud Senizergues provou que o problema de equivalência para autômatos com pilha determinísticos (isto é, dados dois APDs A e B, L(A)=L(B)?) é decidível.[5] Esta prova rendeu-lhe em 2002 um Prêmio Gödel. Para AP não determinísticos, o problema de equivalência é indecidível.[6][7]
Referências
- ↑ Sipser, Michael (2003). Introduction to the theory of computation 10. [print] ed. Boston, Mass.: PWS Publ. ISBN 0-534-94728-X
- ↑ Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Introduction to automata theory, languages, and computation 2. ed ed. Boston Munich: Addison-Wesley
- ↑ Greibach, Sheila A. (1 de outubro de 1966). «The Unsolvability of the Recognition of Linear Context-Free Languages». Journal of the ACM (4): 582–587. ISSN 0004-5411. doi:10.1145/321356.321365. Consultado em 30 de outubro de 2023
- ↑ Kurki-Suonio, R. (1 de setembro de 1969). «Notes on top-down languages». BIT Numerical Mathematics (em inglês). 9 (3): 225-238. ISSN 0006-3835. doi:10.1007/BF01946814
- ↑ Sénizergues, Géraud (1997). Degano, Pierpaolo; Gorrieri, Roberto; Marchetti-Spaccamela, Alberto, eds. «The equivalence problem for deterministic pushdown automata is decidable». Berlin, Heidelberg: Springer. Lecture Notes in Computer Science (em inglês): 671–681. ISBN 978-3-540-69194-5. doi:10.1007/3-540-63165-8_221. Consultado em 30 de outubro de 2023
- ↑ Sénizergues, Géraud (28 de janeiro de 2001). «L(A)=L(B)? decidability results from complete formal systems». Theoretical Computer Science (1): 1–166. ISSN 0304-3975. doi:10.1016/S0304-3975(00)00285-1. Consultado em 30 de outubro de 2023
- ↑ Sénizergues, Géraud (3 de junho de 2002). «L(A)=L(B)? A simplified decidability proof». Theoretical Computer Science. Selected Papers in honour of Maurice Nivat (1): 555–608. ISSN 0304-3975. doi:10.1016/S0304-3975(02)00027-0. Consultado em 30 de outubro de 2023
Leitura complementar
[editar | editar código-fonte]- Hamburger, Henry; Dana Richards (2002). Logic and Language Models for Computer Science. Upper Saddle River, NJ 07458: Prentice Hall. pp. 284–331. ISBN 0-13-065487-6