- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础知识
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从 NFA 到 DFA 的转换
- DFA 的最小化
- 穆尔机与米利机
- DFA 的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的 Arden 定理
- 将正则表达式转换为有限自动机
- 正则文法的泵引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的封闭性
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的泵引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 从 CFG 构造 PDA
- 下推自动机和语法分析
- 图灵机
- 图灵机基础 (TM)
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性有界自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的 Rice 定理
- Post 对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
下推自动机介绍
PDA 的基本结构
下推自动机是一种以类似我们为正则文法设计 DFA 的方式实现上下文无关文法的方法。DFA 可以记住有限数量的信息,但 PDA 可以记住无限数量的信息。
基本上,下推自动机是 -
"有限状态机" + "一个栈"
下推自动机具有三个组成部分 -
- 输入带,
- 控制单元,以及
- 一个无限大小的栈。
栈指针扫描栈顶符号。
栈执行两个操作 -
压栈 - 在顶部添加一个新符号。
出栈 - 读取并删除顶部符号。
PDA 可能会也可能不会读取输入符号,但它必须在每次转换中读取栈顶。
PDA 可以正式描述为一个 7 元组 (Q, ∑, S, δ, q0, I, F) -
Q 是有限数量的状态
∑ 是输入字母表
S 是栈符号
δ 是转移函数:Q × (∑ ∪ {ε}) × S × Q × S*
q0 是初始状态 (q0 ∈ Q)
I 是初始栈顶符号 (I ∈ S)
F 是一个接受状态集 (F ∈ Q)
下图显示了 PDA 从状态 q1 到状态 q2 的转换,标记为 a,b → c -
这意味着在状态 q1,如果我们遇到一个输入字符串 'a' 并且栈顶符号是 'b',那么我们弹出 'b',将 'c' 推入栈顶并移动到状态 q2。
与 PDA 相关的术语
瞬时描述
PDA 的瞬时描述 (ID) 由一个三元组 (q, w, s) 表示,其中
q 是状态
w 是未消耗的输入
s 是栈内容
旋转门符号
“旋转门”符号用于连接表示 PDA 一次或多次移动的 ID 对。转换过程由旋转门符号“⊢”表示。
考虑一个 PDA (Q, ∑, S, δ, q0, I, F)。转换可以用以下旋转门符号数学表示 -
(p, aw, Tβ) ⊢ (q, w, αb)
这意味着在从状态 p 到状态 q 进行转换时,输入符号 'a' 被消耗,并且栈顶 'T' 被新字符串 'α' 替换。
注意 - 如果我们想要 PDA 的零次或多次移动,我们必须为此使用符号 (⊢*)。
广告