![](/img/trans.png)
[英]Context free grammar for {a*b*c*} - {a^n b^n c^n | n >=0}
[英]Context-free grammar for L = { b^n c^n a^n , n>=1}
我有一种语言L,它定义为:L = {b ^ nc ^ na ^ n,n> = 1}相应的语法将能够创建诸如以下单词:bca bbccaa bbbcccaaa ...这样的语法如何看起来像? 使两个变量相互依赖相对简单,但是我很难做到三个。 提前致谢!
L = { b^nc^na^n , n>=1}
正如评论中指出的那样,这是一种不是上下文无关的语言的规范示例。 可以使用无上下文语言的抽水引理来显示它。 基本上,考虑一个像b^pc^pa^p
这样的字符串,其中p
是抽运长度,然后显示无论抽运哪个部分,都将失去平衡(基本上,抽运的部分的大小小于p
,因此它无法“跨接”所有三个符号以使其保持同步)。
L = {a^mb^nc^na^(m+n) |m ≥ 0,n ≥ 1}
如评论中所建议,这也不是上下文无关的。 对于上下文无关的语言,也可以使用抽水引理来显示它。 但是,只要有上述证明(或接受),就有一种更简单的方法。 回想一下,常规语言和上下文无关语言的交集必须是上下文无关的。 假设L
是上下文无关的。 那么它必须与常规语言(b+c)(b+c)* a*
相交。 但是,该交集可以表示为b^nc^na^n
(因为m
被强制为零),我们知道这不是上下文无关的矛盾。 因此,我们的假设是错误的,并且L
也不是上下文无关的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.