Autómatos de pilha
Configurações, critérios de aceitação, construções para contagens e palíndromos e equivalência com CFG.
Modelo
PDA: estados finitos mais pilha. Transição escolhe por estado, letra ou ε e topo; substitui o topo por uma sequência. Topo à esquerda: por deixa no topo; por retira .
- : lê , substitui por . Com , não consome mas exige o topo.
- Configuração : estado, entrada restante, pilha. se .
Aceitação
Um PDA aceita quando existe um ramo que consome toda a entrada e cumpre o critério. Encontrar um ramo que chega a um final, ou que esvazia a pilha, antes de consumir tudo não chega.
| Critério | O ramo aceitante termina com |
|---|---|
| Estado final | Entrada consumida e estado em ; a pilha pode conservar símbolos |
| Pilha vazia | Entrada consumida e pilha vazia; o estado não importa |
Os dois critérios têm o mesmo poder para PDA não determinísticos, mas é preciso construir outra máquina para trocar o critério. Mudar o critério na mesma máquina pode mudar a linguagem. Os PDA determinísticos têm menos poder que os não determinísticos.
Contagens e palíndromos
Para , com a contar os pares: empilha por cada , muda de fase no primeiro e retira um por cada . A palavra vazia é aceite pela transição vazia desde o início, sem ler nada. Em a pilha passa por e o ramo aceitante termina com a entrada consumida e exposto. Ver só no topo a meio da palavra não prova nada: sobra marcador, bloqueia e quebra a ordem.
- Intervalo : empilha um ou dois marcadores por ; CFG .
- Palíndromo par : empilha a primeira metade, adivinha o meio por ε, compara retirando. Com separador , o marca a mudança.
Editar estados e transições
Declara os estados, os alfabetos da entrada e da pilha, o início e os finais. Cada transição tem a forma origem entrada topo -> destino substituição. ε na entrada não lê uma letra; ε na substituição retira o topo. Não há transições com a pilha vazia.
O topo da pilha está à esquerda. Aceitar exige consumir toda a entrada. Mudar o critério não converte a máquina.
Palavra aceite.
Percurso aceitante
| Passo | Estado | Por ler | Pilha, topo à esquerda |
|---|---|---|---|
| 0 | q0 | aabb | Z |
| 1 | q0 | abb | AZ |
| 2 | q0 | bb | AAZ |
| 3 | q1 | b | AZ |
| 4 | q1 | ε | Z |
| 5 | qf | ε | Z |
Limites da pesquisa
A pesquisa segue todos os ramos por níveis, até 128 transições por ramo, 96 símbolos na pilha e 5 000 configurações distintas. Um ramo aceitante basta para aceitar. Só se rejeita depois de esgotar as configurações alcançáveis sem encontrar aceitação. Atingir um limite deixa o resultado por decidir, mesmo que os ramos já observados não aceitem. Configurações repetidas são exploradas uma vez.
Conversões
- Troca de critério: para passar de pilha vazia a estado final, põe um fundo novo abaixo da pilha e aceita quando ele fica exposto depois de consumir tudo; no sentido inverso, usa fundo novo e uma fase de limpeza desde os antigos finais. Em ambos os casos, só conta quando a entrada está consumida.
- CFG para PDA: começa com no topo. Cada produção dá uma transição que substitui a variável no topo pelo lado direito , sem ler entrada. Cada terminal dá uma transição que lê quando está no topo e o retira. Empilha o lado direito da direita para a esquerda para manter a ordem.
- PDA para CFG: a variável gera as palavras que levam de a removendo o do topo, sem mexer na pilha que está abaixo de . Se : para todos os estados . Se : .
Uma linguagem é CFL se e só se algum PDA não determinístico a reconhece.
Escolha de fase
Empilhar por e escolher uma fase só de ou só de dá : bloqueia em . Fundir as fases numa só, que aceita ou em cada remoção, dá , que aceita . A contagem não substitui a restrição das letras.