Skip to content

模型Model

下推自动机

Pushdown automaton · PDA

带无界栈存储的有限控制自动机。

形式陈述 ​

非确定性下推自动机(PDA)是在有限状态控制上增加一条栈的模型,可定义为七元组

M=(Q,Σ,Γ,δ,q0,Z0,F),

其中 Q 是有限状态集合,Σ 是输入字母表,Γ 是有限栈字母表,q0∈Q 是初态,Z0∈Γ 是初始栈符号,F⊆Q 是终态集合。转移关系

δ:Q×(Σ∪{ε})×Γ→Pfin(Q×Γ∗)

的值是有限个可选动作组成的集合。配置写成 (q,w,γ),依次记录状态、剩余输入和完整栈;约定栈顶写在最左边;栈条目把顶端写在右侧,两者只是记录方向相反,后进先出语义相同。若 (r,β)∈δ(q,a,X),则一步可把 (q,aw,Xα) 变成 (r,w,βα)。输入位置的 ε 表示不读字符,替换串 β=ε 则表示弹出栈顶,两者用途不同。

标准接受方式可取存在一条读完输入后到达终态的运行,或对 NPDA 取读完输入且栈为空;二者在适当构造下等价。停在终态但输入尚未读完不算接受,某条分支失败也不排除另一条分支成功。

PDA 只有有限控制加一条后进先出、深度无界的栈,不能随机访问栈内部。

直觉

有限自动机只能保留有限摘要,PDA 的栈则能记住无界但严格嵌套的信息。读左括号时压栈,读右括号时弹栈;最近打开的结构必须最先关闭,恰好匹配后进先出。非确定性还允许机器猜测输入的阶段或文法产生式。栈不是一条任意工作带:只能看和修改顶部,因此 PDA 的能力仍弱于图灵机。

PDA 识别 a^n b^n 的栈轨迹
例子与边界

识别 {anbn:n≥0} 的 PDA 在读 a 时每次压入标记 A,首次进入 b 阶段后每读一个 b 弹出一个 A;输入结束且栈回到底符号时接受。取 qp 为压栈阶段、qb 为弹栈阶段,输入 aabb 的关键配置是

(qp,aabb,Z0)⊢(qp,abb,AZ0)⊢(qp,bb,AAZ0)⊢(qb,b,AZ0)⊢(qb,ε,Z0).

再用不读输入的动作进入终态;空输入需另设接受路径。图画的是 aaabbb,比此轨迹多压入并弹出一个 A。若输入是 aab,读完后还剩 A,不能进入接受阶段;若是 aabbb,多出的 b 无法再弹出 A。阶段状态还禁止弹栈后重新读 a,否则只检查总数会误收 abab。平衡括号同样在左括号压栈、右括号检查并弹出匹配类型。

边界语言 {anbncn:n≥0} 需要同时保留两次独立的无界匹配,一条普通栈不足。PDA 也不能在不破坏上层内容的情况下读取栈底附近数据;把栈误作可随机访问数组会高估模型能力。

非确定性在这里也不是“免费的”:DPDA识别的语言严格少于 NPDA 识别的全部上下文无关语言,不能把 DFA 与 NFA 的等价结论直接搬到下推自动机。

推论与应用

在语言表达能力上,非确定性 PDA 与上下文无关文法等价:文法推导可由栈模拟,PDA 的接受计算也可编码为变量与产生式。转换可能显著增大表示,且确定性 PDA 并不覆盖全部上下文无关文法。

CFG–PDA 等价定理把两态空栈机器完整转换为八个三元变量:每个变量只描述首次露出未触动下层栈的运行段,双向归纳证明生成语言保持。它还说明为什么没有终结基例的变量即使有递归规则也不能生成任何字。DPDA限制每个配置的选择,得到严格更小但适合确定解析的语言类。

调用栈、递归下降解析、括号检查和嵌套协议监视都体现 PDA 结构;解析器实现常把文法推导状态与显式栈结合。

参考资料
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Chs. 6–7。
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,§2.2。
  • Old Dominion University CS390, Pushdown Automata, Fall 2024 course notes,§§1.1–1.3,转移、栈方向与配置。
关系图谱14 个相邻概念 · 5 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例

类型化关系