Automata Theory 简明教程

Pushdown Automata Acceptance

可以用两种不同的方式定义 PDA 可接受性。

Final State Acceptability

在最终状态可接受性中,当读取完整个字符串后,如果 PDA 处于最终状态,则 PDA 接受一个字符串。从开始状态,我们可以采取最终停留在最终状态的步骤,而无论栈值是什么。只要我们最终处于最终状态,那么栈值就无关紧要。

对于 PDA (Q, ∑, S, δ, q0, I, F),结束状态 F 集合接受的语言为 −

L(PDA) = {w | (q0, w, I) ⊢* (q, ε, x), q ∈ F}

对于任何输入的栈字符串 x

Empty Stack Acceptability

此处 PDA 在读取完整个字符串后,如果 PDA 清空了栈,则接受一个字符串。

对于 PDA (Q, ∑, S, δ, q0, I, F),空栈接受的语言为 −

L(PDA) = {w | (q0, w, I) ⊢* (q, ε, ε), q ∈ Q}

Example

构造一个接受 L = {0n 1n | n ≥ 0} 的 PDA

Solution

pda for l

本语言接受 L = {ε, 01, 0011, 000111, …​…​…​…​…​…​…​…​…​.. }

在此示例中, ‘a’‘b’ 的数量必须相同。

  1. 最初我们将一个特殊符号 ‘$’ 放入空栈中。

  2. 然后在状态 q2 ,如果我们遇到输入 0 并且顶部为 Null,则将 0 推入栈中。可以重复此操作。如果我们遇到输入 1 并且顶部为 0,则弹出此 0。

  3. 然后在状态 q3 ,如果我们遇到输入 1 并且顶部为 0,则弹出此 0。同样可以重复此操作。如果我们遇到输入 1 并且顶部为 0,则弹出顶部元素。

  4. 如果在栈顶遇到特殊符号 '$',则将其弹出并最终进入可接受状态 q4。

Example

构造一个 PDA 接受 L = { wwR | w = (a+b)* }

Solution

pda for l1

最初我们在空栈中添加一个特殊符号“$”。在状态 q2 中,正在读取 w 。在状态 w 中,每个 0 或 1 在与输入匹配时弹出。如果给出了任何其他输入,则 PDA 将进入死状态。当我们到达该特殊符号“$”时,我们进入接受状态 q3