这种语言是否有下推自动机(PDA)?

时间:2013-05-10 21:59:13

标签: context-free-grammar formal-languages

语言为:{A n B (2n) C n |其中n> = 0}

我认为它有,因为你可以像这样处理:按A,推B,从堆栈中每次C pop三次,如果没有C且堆栈为空,则返回true,否则返回false。

2 个答案:

答案 0 :(得分:4)

使用抽取引理证明这不是一种无上下文的语言。

考虑s = a p b 2p c p
然后我们在L中考虑vxy|vxy|<=p, |vy|>0和uv i xy i z 我们有可能性

  
      
  1. vxy = a j ,j <= p
  2.   
  3. vxy = a j b k ,j + k <= p
  4.   
  5. vxy = b j ,j&lt; = p
  6.   
  7. vxy = b j c k ,j + k <= p
  8.   
  9. vxy = c j ,j <= p
  10.   

在任何情况下,都没有常量uv s.t.字符串在L中,因为vxy中只能有两个符号,然后我们需要第三个符号的变量才能显示在uv

您建议的自动机在AAAC上失败,返回true。它并不能保证你的B的数量是A的两倍。

答案 1 :(得分:2)

不存在这样的PDA,因为该语言不是无上下文的。这是一个简短的证据。这取决于在反向同态(as mentioned in these slides)下关闭无上下文语言的事实。

鉴于语言L = {A n B 2n C n |在N}中,考虑从

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

这种同态的逆,应用于L,是语言h -1 (L)= {xinΣ* | h(x)∈L}。考虑到h的选择,这是{A n B n C n |在N}中。该语言是非上下文语言的规范示例。然而,CFL在逆同态下是封闭的,因此因为h -1 (L)不是无上下文的,所以L不能是无上下文的。因此,它没有PDA。

希望这有帮助!