语言为:{A n B (2n) C n |其中n> = 0}
我认为它有,因为你可以像这样处理:按A,推B,从堆栈中每次C pop三次,如果没有C且堆栈为空,则返回true,否则返回false。
答案 0 :(得分:4)
使用抽取引理证明这不是一种无上下文的语言。
考虑s = a p b 2p c p
然后我们在L中考虑vxy
,|vxy|<=p, |vy|>0
和uv i xy i z
我们有可能性
- vxy = a j ,j <= p
- vxy = a j b k ,j + k <= p
- vxy = b j ,j&lt; = p
- vxy = b j c k ,j + k <= p
- vxy = c j ,j <= p
醇>
在任何情况下,都没有常量u
和v
s.t.字符串在L中,因为vxy
中只能有两个符号,然后我们需要第三个符号的变量才能显示在u
或v
您建议的自动机在AAAC上失败,返回true。它并不能保证你的B的数量是A的两倍。
答案 1 :(得分:2)
不存在这样的PDA,因为该语言不是无上下文的。这是一个简短的证据。这取决于在反向同态(as mentioned in these slides)下关闭无上下文语言的事实。
鉴于语言L = {A n B 2n C n |在N}中,考虑从
定义的同态h这种同态的逆,应用于L,是语言h -1 (L)= {xinΣ* | h(x)∈L}。考虑到h的选择,这是{A n B n C n |在N}中。该语言是非上下文语言的规范示例。然而,CFL在逆同态下是封闭的,因此因为h -1 (L)不是无上下文的,所以L不能是无上下文的。因此,它没有PDA。
希望这有帮助!