我相信这种语言不是没有上下文的,因为PDA不可能比较2个0和1的相同长度的块,也记住它的长度供以后使用。
不幸的是,我不知道如何证明它。
我尝试使用泵浦引理无济于事......
我还试图通过矛盾来假设语言是无上下文的,并且使用这样一个事实,即上下文无关语言与常规语言的交集也是无上下文的(通过查找一些神秘的常规语言L),并且令人惊讶(或不) - 我所有的努力都是徒劳的......
任何帮助将不胜感激
答案 0 :(得分:4)
否,语言L = {0 n 1 n 0 k | k!= n} 不是上下文无关语言。另外,Class of Regular Languages is subset of class Context free languages。
您使用PDA
的想法是正确且明显的方式来表明语言不是上下文。
我们无法为语言0 n 1 n 0 k 绘制PDA
,因为在匹配前缀0 n < / sup>到1 n 堆栈变空,然后我们没有存储信息来检查天气后缀0 K 是否等于n
。
提示:正式证明
L = {0 n 1 n 0 k | k!= n}现在L的补体是L '。
L ' = {{0 n 1 n 0 n }这是众所周知的上下文敏感语言(可以证明)。
上下文相关语言的补充本身就是上下文敏感的。
关于抽水引理:
L = {0 n 1 n 0 k | k!= n}是L 1 和L 2 的联合,其中
L 1 = {0 n 1 n 0 k | k> n}和 L 2 = {0 n 1 n 0 k | k&lt; n},L = L 1 U L 2
L 1 和L 2 都是非上下文语言。并且两种非上下文免费语言的联合是非上下文的。(可以通过语法轻松证明)
此外,联合,两个上下文相关语言的连接是上下文相关的。