为什么推倒自动机需要一个初始堆栈符号?

时间:2015-04-10 18:32:11

标签: automata-theory

在定义带有PDA的CFG或2型语法的转换时,我们需要初始堆栈符号,主要用Zo表示。 我怀疑是为什么我们需要它,因为最后我们将要清空堆栈....

1 个答案:

答案 0 :(得分:2)

下推自动机需要初始堆栈符号,因为每个移动由当前输入符号和堆栈顶部的符号决定。这导致了如果堆栈为空则无法移动的现实。

是的,堆栈可以简化为堆栈符号。考虑...

L={ (a^n)(b^n) : n >= 0 }

我可以为我读过的每个0按下a,其中 - 顺便说一句 - 第一个将是(q0,a,z),然后当我读到第一个b0 1}}我弹出{{1}}并推回任何东西。我知道我已经完成了,并且当没有输入消耗并且堆栈符号位于堆栈顶部时语言被接受。

注意在上面的过渡函数中,第一个移动由第一个输入和堆栈符号决定。你能看到没有它你怎么永远无法开始?