“无限状态自动机”:由无穷多个有限状态自动机组成的自动机L=∑n=0∞0n1n={0n1n∣n≥0}
下推自动机(Pushdown Automata, PDA)形式定义

PDA为一个七元组P:
P=(Q,Σ,Γ,δ,q0,Z0,F)
- Q:有穷状态集
- Σ:字母表(有穷输入符号集)
- Γ:有穷栈符号集
- δ:状态转移函数,δ:Q×(Σ∪{ε})→2Q×Γ∗
- q0:初始状态,q0∈Q
- Z0:栈底符号,Z0∈Γ−Σ
- F:终结状态集(接受状态集),F⊆Q
定义PDA的动作(状态转移函数详解)
对PDA的当前状态q∈Q、输入字符a∈Σ、当前栈顶符号Z,状态转移函数:
δ(q,a,Z)={(p,β)∣p∈Q,β∈Γ∗}
表示PDA的状态转移为p∈Q、栈顶符号修改为字符串β,且转移过程是非确定的。每一个状态的状态转移图表示为:
- 栈顶的一个符号Z修改为字符串β→弹出栈顶符号后再压入多个符号
- 栈顶的一个符号Z修改为空串ε→只弹出栈顶符号不压入符号
由定义可知,PDA还具有空转移能力:
δ(q,ε,Z)={(p,β)∣p∈Q,β∈Γ∗}
每一个状态的状态转移图表示为:
综合得一次状态转移的状态转移图:
例:语言L=∑n=0∞0n1n={0n1n∣n≥0}的PDA
PDA的瞬时描述
PDA的瞬时描述(Instantaneous Description, ID)定义为:
(q,w,γ)∈Q×Σ∗×Γ∗
表示此时PDA处于状态q,剩余输入串为w,栈内符号串为γ。
ID的转移
若PDAP某一步状态转移(p,β)∈δ(q,a,Z),则这一步PDA的状态将由(q,aw,Zα)变为(p,w,βα),称为ID的转移,记为⊢P:
(p,β)∈δ(q,a,Z)⇔(q,aw,Zα)⊢P(p,w,βα)
进一步,对于瞬时描述I、J、K,可递归定义⊢P∗:
I⊢P∗II⊢PJ∧J⊢P∗K⇒I⊢P∗K
P已知时可省略记为⊢和⊢∗。
PDA的性质
PDA一次状态转移不会用到输入字符之后的部分和栈顶符号之下的部分
(q,x,α)⊢P∗(p,y,β)⇒(q,xw,αγ)⊢P∗(p,yw,βγ)
PDA多次状态转移不会用到输入字符之后的部分(但是可能会用到栈顶符号之下的部分)
(∀w∈Σ∗)(q,xw,αγ)⊢P∗(p,yw,βγ)⇒(q,x,α)⊢P∗(p,y,β)
PDA的语言
对于一个PDAP=(Q,Σ,Γ,δ,q0,Z0,F),定义了两种接收语言的方式。
L(P):以终态方式接收的语言
这种语言中的字符串读取结束时可以让PDA运行到接受状态:
L(P)={w∣(q0,w,Z0)⊢P∗(p,ε,γ),p∈F}
N(P):以空栈方式接收的语言
这种语言中的字符串读取结束时可以让PDA的栈底符号弹出(栈弹空,使PDA无法正常运行):
L(P)={w∣(q0,w,Z0)⊢P∗(p,ε,ε),p∈F}
以空栈方式接收的语言有时可以让PDA的设计更加简单。
终态方式和空栈方式的等价性(未完成)
(∀L)PF