Introdução ao Pushdown Automata
Estrutura Básica do PDA
Um autômato pushdown é uma maneira de implementar uma gramática livre de contexto de uma maneira semelhante à qual projetamos o DFA para uma gramática regular. Um DFA pode lembrar uma quantidade finita de informações, mas um PDA pode lembrar uma quantidade infinita de informações.
Basicamente, um autômato pushdown é -
"Finite state machine" + "a stack"
Um autômato pushdown tem três componentes -
- uma fita de entrada,
- uma unidade de controle, e
- uma pilha com tamanho infinito.
O cabeçote da pilha verifica o símbolo do topo da pilha.
Uma pilha faz duas operações -
Push - um novo símbolo é adicionado no topo.
Pop - o símbolo superior é lido e removido.
Um PDA pode ou não ler um símbolo de entrada, mas tem que ler o topo da pilha em cada transição.
Um PDA pode ser formalmente descrito como um 7-tupla (Q, ∑, S, δ, q 0 , I, F) -
Q é o número finito de estados
∑ é o alfabeto de entrada
S são símbolos de pilha
δ é a função de transição: Q × (∑ ∪ {ε}) × S × Q × S *
q0é o estado inicial (q 0 ∈ Q)
I é o símbolo inicial do topo da pilha (I ∈ S)
F é um conjunto de estados de aceitação (F ∈ Q)
O diagrama a seguir mostra uma transição em um PDA de um estado q 1 para o estado q 2 , rotulado como a, b → c -
Isso significa no estado q1, se encontrarmos uma string de entrada ‘a’ e o símbolo do topo da pilha é ‘b’, então nós estouramos ‘b’, empurrar ‘c’ no topo da pilha e mova para o estado q2.
Terminologias Relacionadas ao PDA
Descrição Instantânea
A descrição instantânea (ID) de um PDA é representada por um tripleto (q, w, s) onde
q é o estado
w é entrada não consumida
s é o conteúdo da pilha
Notação de torniquete
A notação "catraca" é usada para conectar pares de IDs que representam um ou vários movimentos de um PDA. O processo de transição é denotado pelo símbolo da catraca "⊢".
Considere um PDA (Q, ∑, S, δ, q 0 , I, F). Uma transição pode ser representada matematicamente pela seguinte notação de catraca -
(p, aw, Tβ) ⊢ (q, w, αb)
Isso implica que, embora haja uma transição do estado p declarar q, o símbolo de entrada ‘a’ é consumido, e o topo da pilha ‘T’ é substituído por uma nova string ‘α’.
Note - Se quisermos zero ou mais movimentos de um PDA, temos que usar o símbolo (⊢ *) para isso.