下推自动机
下推自动机实质上是一种能控制一条输入带和一个栈的有穷自动机, 可以看作带有栈的 ε-NFA. 工作方式类似 ε-NFA, 有一个有穷控制器, 并能够以非确定的方式进行状态转移, 并读 入输入字符; 增加的堆栈, 用来存储无限的信息, 但只能以后进先出的方式使用.
6.1.1 形式定义
定义.
下推自动机 (PDA, Pushdown Automata) P 为七元组:P = (Q,Σ,Γ,δ,q0,Z0,F),
- Q:有穷状态集
- Σ:有穷输入符号集(字母表)
- Γ:有穷栈符号集(栈字母表)
- δ : Q×(Σ∪{ε})×Γ → 2Q×Γ∗, 状态转移函数;
- q0 ∈ Q, 初始状态
- Z0 ∈ Γ−Σ, 栈底符号, PDA 开始时, 栈中包含这个符号的一个实例, 用来表示栈底, 最初的栈底符号之下无任何内容;
- F ⊆ Q, 接收状态集或终态集.
PDA 的动作和状态转移图
6.1.2 瞬时描述和转移符号
定义.
为形式描述 PDA 在一个给定瞬间的格局 (Configuration), 定义 Q×Σ∗×Γ∗ 中三元组
(q,w,γ)
为瞬时描述 (ID, Instantaneous Description), 表示此时 PDA 处于状态 q, 输入带上剩余输入 串 w, 栈中的符号串为 γ.
定义.
在 PDA P 中如果 (p,β) ∈ δ(q,a,Z), 由 (q,aw,Zα) 到 (p,w,βα) 的变化, 称为 ID 的 转移 P, 记为 (q,aw,Zα)
P(p,w,βα) 其中 w ∈ Σ∗, α ∈ Γ∗.
6.2 下推自动机接受的语言
定义. PDA P = (Q,Σ,Γ,δ,q0,Z0,F), 以两种方式接受语言:
续例2. 识别 Lwwr 的 PDA P, 从终态方式接受, 改为空栈方式接受.
6.2.1 从终态方式到空栈方式
6.2.2 从空栈方式到终态方式