【发布时间】:2014-02-08 11:34:15
【问题描述】:
给定 L1 和 L2(不规则)上下文无关语言 - L1 U L2 是否可能是规则的?
我知道这是可能的,但我找不到一个例子来证明这一点。希望得到一些帮助。
【问题讨论】:
-
顺便说一句,
L1 U L2表示联合,而不是交集。
标签: regular-language formal-languages context-free-language
给定 L1 和 L2(不规则)上下文无关语言 - L1 U L2 是否可能是规则的?
我知道这是可能的,但我找不到一个例子来证明这一点。希望得到一些帮助。
【问题讨论】:
L1 U L2 表示联合,而不是交集。
标签: regular-language formal-languages context-free-language
鉴于
L<sub>1</sub>和L<sub>2</sub>上下文无关(但不是常规)语言,L<sub>1</sub> ∪ L<sub>2</sub>的联合有可能是常规的吗?
可以!
假设,第一语言 L1 是:
L1 : {
a<sup>n</sup>b<sup>m</sup>|其中n = m}
Language L1 是 CFL 但不是常规语言。 L1 语言的另一种写法是a<sup>n</sup>b<sup>n</sup>。我认为这是在任何正式语言教科书中都可以找到的 CFL 最狡猾的例子之一。
第二语言L2是:
L2 : {
a<sup>n</sup>b<sup>m</sup>|n ≠ m}
L2 再次是 CFL,但不是常规的。 基本上L2是L1的补语。
现在,L1 和 L2 的并集是:
L : {
a<sup>n</sup>b<sup>m</sup>|n和m的值没有限制}
语言L = L<sub>1</sub> ∪ L<sub>2</sub> 是正则语言,L 的正则表达式是a*b*。
所以提示是补码 CFL 的并集是规则的。
注意:Context-free languages are closed under union operation,因此两个 CFL 的并集始终是 CFL(可以是正则的,因为常规语言类是 CFL 类的子集),但它不能是非 CFL,例如中超。
在cmets的基础上添加:
给定
L<sub>1</sub>和L<sub>2</sub>上下文无关(但不是常规)语言,L<sub>1</sub> ∩ L<sub>2</sub>的交集是否可能是常规语言?
可以!
假设,第一语言 L1 是:
L1 : {
a<sup>n</sup>b<sup>m</sup>|其中n = m}
第二语言L2是:
L2 : {
a<sup>n</sup>b<sup>m</sup>|其中n <= 3 or n ≠ m}
语言L = L<sub>1</sub> ∩ L<sub>2</sub> = {ab, aabb, aaabbb} 是a finite set and hence also a regular set。
【讨论】:
{a^nb^m where (n < 3 or m != n)} 是 CFL(但不是常规)并且 L2:{a^nb^m where (n == m)} 现在是 CFL(不是常规),L1 ∩ L2 b> = {ab, aabb, aaabbb} 即a finite set hence Regular too。 ¯\_(ツ)_/¯