2013-05-10 112 views
2

语言是:{A n B (2n) C n |其中n> = 0}这种语言是否有下推自动机(PDA)?

我认为它已经存在了,因为你可以像这样处理它:如果没有C并且堆栈为空,则push A,push B,为堆栈中的每个C弹出三次,返回true ,否则返回false。

+0

你可能会在这里得到更好的答案:http://cstheory.stackexchange.com/ – jpaugh 2013-05-10 22:55:38

+2

@ jpaugh-这可能是更好的cs.stackexchange.com,因为cstheory是研究级CS问题。 – templatetypedef 2013-05-10 23:00:11

回答

3

使用抽象引理来证明这不是一个上下文无关的语言。

考虑S =一p b 2PÇp
然后考虑vxy|vxy|<=p, |vy|>0和UV XY ž以L
我们准备

  1. vxy = a j,j < = P
  2. vxy =一个Ĵ b ķ,J + K < = P
  3. vxy = B Ĵ,J < = P
  4. vxy = B ĴÇķ ,J + K < = p
  5. vxy = C Ĵ,J < = p

在任何情况下,没有常数uv s.t.字符串是L,因为只能在vxy两个符号,然后我们就需要第三个数量可变的展现在了uv

你提出的自动机上AAAC失败,返回true。这并不能保证你的B的数量是A的两倍。

+0

谢谢,我现在明白了,我能想到这样的语言:A^n B^n B^n C^n,然后我们在第一个B的弹出中失去'n'... – 2013-05-13 21:28:47

2

没有这样的PDA存在,因为这种语言没有上下文。这是一个简短的证明。这依赖于上下文无关语言在逆同态下被关闭的事实(as mentioned in these slides)。

鉴于语言L = {A Ñ2n个ÇÑ | n的N},考虑从

  • H(A)所定义的同态H = A
  • H(B)= BB
  • H(C)= C

的逆应用于L的这种同态是语言h -1(L)= {x in Σ * | h(x)∈ L}。查看h的选择,这是语言{A n B n C n | n in N}。这种语言是非上下文无关语言的典型例子。但是,CFL在逆同态下是封闭的,所以因为h不是上下文无关的,所以L不能无上下文。因此,它没有PDA。

希望这会有所帮助!

+0

I'我也想把你的答案标记为最终答案,但是我不能......谢谢你...... – 2013-05-13 21:29:49

相关问题