为什么这不是CFG?

时间:2013-01-15 18:23:12

标签: context-free-grammar automata pushdown-automaton

虽然这是对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不接受这样的语言吗?

1 个答案:

答案 0 :(得分:1)

您的PDA接受以下语言:

{a^n b^i c^j; n >= 0 and i + j = 2n}

{a^n b^n c^n: n>=0}不同,后者是上述语言的一个子集,特别是在i = nj = n时。