虽然这是对this的重复,但我在谈论设计PDA时。
现在,我知道我错了,因为这是一个广为人知的例子,但我在下面的PDA设计中哪里出错?
我想接受语言{a^n b^n c^n: n>=0}
每次遇到1
时,我会在堆栈中推送两个a
,为b
弹出一个c
并为(q0, a, Z) = (q0, 11Z)
弹出一个(q0, a, 1) = (q0, 111)
并检查我是否有空堆栈。
我将转换函数(minimal)定义为:
(q0, b, 1) = (q1, delta)
(q1, c, 1) = (q2, delta)
(q2, delta, Z) = (q-Final, Z) (epsilon move)
Z is empty stack
{{1}}
{{1}}
这个PDA不接受这样的语言吗?
答案 0 :(得分:1)
您的PDA接受以下语言:
{a^n b^i c^j; n >= 0 and i + j = 2n}
与{a^n b^n c^n: n>=0}
不同,后者是上述语言的一个子集,特别是在i = n
和j = n
时。