我试图了解将PDA转换为CFG的这个例子,但我并没有完全正确。我确实有对定理的一般理解,如果 $ p,q \ \ epsilon \ q $ $ x \ varepsilon \ \ Gamma $ for $ [pxq] $ ,我们包含将弹出 x 的派生序列 从堆栈。

我部分理解发生了什么,但我似乎似乎无法理解如何展开产品形成字符串,所以我可以清楚地理解它。在例如示例中获取生产(5)。从我理解它,我们在州P我们想要弹出A和最终,我们应该在州p用空堆栈。正如我们阅读的 0 我们在生产中有零,然后是 $ [paq] [qap] $ ,这是我所处的东西不理解,因为如果我们看看PDA,就没有办法进入 q 在阅读0上。我想知道真的发生了什么。

相关问题是回答这里 但我无法理解如何清除我的混乱。

有帮助吗?

解决方案

你有基本的直觉。 变量 $ [p,a,q] $ 表示来自state $ p $的计算集(字符串)计算> $ p $ to state $ q $ 将弹出最顶部的符号 $ a $ 从堆栈中获得$ 。

theemplyyd语法 $ g $ 和pda $ m $ 的关系你展示的幻灯片。

然后施工后递归。如果pda pops $ a $ 但是按下 $ b_1b_2b3 $ 语法将替换 $ a $ 从 $ p $ 并结束 $ q $ < / span>进入三个单独计算 $ [q_1,b_1,q_2] [q_2,b_1,q_3] [q_3,b_1,q] $ 。这里的中间状态 $ q_2,q_3 $ 未知,并由语法猜测。只知道 $ q_1 $ ,因为它是PDA指令移动到的状态。

您的观察是正确的。这个标准施工可能会引入Triplets $ [p,a,q] $ ,这将是无用的。在您的示例中, $ q $ to $ p $ 中,没有计算,这是一个triplet $ [Q,A,P] $ 从不用于成功推导。这不是制定的。建设只会产生所有可能性,如果一个真正想要,可以删除拒绝无用的变量。

注意。您链接以使用不同的啜饮样式自动机型号!堆叠符号被逐个推动,而不会同时弹出。要添加到混淆答案给出的问题完美地匹配了幻灯片的建筑!

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top