虽然这是对此的重复,但我是在设计 PDA 方面进行讨论。
现在,我知道我错了,因为这是一个广为人知的例子,但我在下面的 PDA 设计中哪里出错了?
我想接受语言{a^n b^n c^n: n>=0}
1
每次遇到一个a
, 弹出一个 forb
并弹出一个 for时,我都会在堆栈上压入两个,c
并检查我是否有一个空堆栈。我将转换函数(最小)定义为:
(q0, a, Z) = (q0, 11Z)
(q0, a, 1) = (q0, 111)
(q0, b, 1) = (q1, delta)
(q1, c, 1) = (q2, delta)
(q2, delta, Z) = (q-Final, Z) (epsilon move)
Z is empty stack
这个PDA不接受这样的语言吗?