下推自动机(PDA)与上下文无关文法(CFG)的等价性探究
1. 从CFG构建PDA
1.1 设计思路
我们的目标是构建一个下推自动机(PDA) $P = (make - ndpda\ K\ \Sigma\ S\ F\ \Delta)$,使得 $L(P) = L(G)$。PDA需要从左到右读取输入,这意味着对于 $L(G)$ 中的字符串 $w$,PDA可以模拟 $w$ 的最左推导。
具体操作如下:
- 初始时,PDA将文法 $G$ 的起始符号 $S_G$ 压入栈中。
- 对于每个上下文无关文法(CFG)规则 $A \to x$,PDA将栈顶的 $A$ 弹出,并将 $x$ 压入栈。
- 对于每个输入符号 $a \in \Sigma_G$,PDA从输入带上读取 $a$,并将栈顶的 $a$ 弹出。
基于此设计思路,PDA只需要两个状态:起始状态 $S$ 和最终状态 $Q$。PDA的构造形式为:$(make - ndpda\ ‘(S\ Q)\ \Sigma_G\ V_G \cup \Sigma_G\ ‘S\ ‘(Q)\ \Delta)$。
$\Delta$ 中有三种类型的规则:
1. $((S\ EMP\ (list\ S_G))\ (Q\ EMP))$:通过将 $S_G$ 压入栈并转移到状态 $Q$ 来启动最左推导模拟。
2. $((Q\ EMP\ (list\ ‘A))\ (Q\ (symbol - > fsmlos\ x)))$,对于 $(A \to x) \in R_G$:弹出栈顶的非终结符 $A$,并将文法规则的右部转换为有效的有限状态机(FSM)符号列表后压入栈。
3
PDA与CFG等价性探究
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



