Autómatos de pilha

Configurações, critérios de aceitação, construções para contagens e palíndromos e equivalência com CFG.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Modelo

PDA: estados finitos mais pilha. Transição escolhe por estado, letra ou ε e topo; substitui o topo por uma sequência. Topo à esquerda: XX por YZYZ deixa YY no topo; por ε\varepsilon retira XX.

  • a,X/αa,X/\alpha: lê aa, substitui XX por α\alpha. Com a=εa=\varepsilon, não consome mas exige o topo.
  • Configuração (q,w,γ)(q,w,\gamma): estado, entrada restante, pilha. (q,aw,Xβ)⊢(p,w,αβ)(q,aw,X\beta)\vdash(p,w,\alpha\beta) se (p,α)∈δ(q,a,X)(p,\alpha)\in\delta(q,a,X).

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érioO ramo aceitante termina com
Estado finalEntrada consumida e estado em FF; a pilha pode conservar símbolos
Pilha vaziaEntrada 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 {anbn∣n≥0}\{a^nb^n\mid n\ge0\}, com nn a contar os pares: empilha AA por cada aa, muda de fase no primeiro bb e retira um AA por cada bb. A palavra vazia é aceite pela transição vazia desde o início, sem ler nada. Em aabbaabb a pilha passa por Z,AZ,AAZ,AZ,ZZ,AZ,AAZ,AZ,Z e o ramo aceitante termina com a entrada consumida e ZZ exposto. Ver só ZZ no topo a meio da palavra não prova nada: aabaab sobra marcador, abbabb bloqueia e abaaba quebra a ordem.

  • Intervalo n≤m≤2nn\le m\le2n: empilha um ou dois marcadores por aa; CFG S→aSb∣aSbb∣εS\to aSb\mid aSbb\mid\varepsilon.
  • Palíndromo par wwRww^R: empilha a primeira metade, adivinha o meio por ε, compara retirando. Com separador w#wRw\#w^R, 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

PassoEstadoPor lerPilha, topo à esquerda
0q0aabbZ
1q0abbAZ
2q0bbAAZ
3q1bAZ
4q1εZ
5qfε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 SS no topo. Cada produção A→αA\to\alpha dá uma transição ε\varepsilon que substitui a variável AA no topo pelo lado direito α\alpha, sem ler entrada. Cada terminal aa dá uma transição que lê aa quando aa 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 [pXq][pXq] gera as palavras que levam de pp a qq removendo o XX do topo, sem mexer na pilha que está abaixo de XX. Se (r,YZ)∈δ(p,a,X)(r,YZ)\in\delta(p,a,X): [pXt]→a[rYs][sZt][pXt]\to a[rYs][sZt] para todos os estados s,ts,t. Se (r,ε)∈δ(p,a,X)(r,\varepsilon)\in\delta(p,a,X): [pXr]→a[pXr]\to a.

Uma linguagem é CFL se e só se algum PDA não determinístico a reconhece.

Escolha de fase

Empilhar por aa e escolher uma fase só de bb ou só de cc dá {anbn∣n≥1}∪{ancn∣n≥1}\{a^nb^n\mid n\ge1\}\cup\{a^nc^n\mid n\ge1\}: aabcaabc bloqueia em (q,c,AZ)(q,c,AZ). Fundir as fases numa só, que aceita bb ou cc em cada remoção, dá {anu∣n≥1, u∈{b,c}n}\{a^nu\mid n\ge1,\ u\in\{b,c\}^n\}, que aceita aabcaabc. A contagem não substitui a restrição das letras.

Construção completa de PDA para CFG.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.