【发布时间】:2014-02-20 19:51:40
【问题描述】:
给定 L1 上下文无关的非正则语言。 给定 L2 常规语言。
L1 U L2 = 常规语言有可能吗? 另外,L1*L2 = 常规语言有可能吗?
我认为第二个是不可能的。但我不确定。
如果上述陈述之一(或两者)为真,希望看到一个例子。
【问题讨论】:
标签: regular-language finite-automata automata context-free-language
给定 L1 上下文无关的非正则语言。 给定 L2 常规语言。
L1 U L2 = 常规语言有可能吗? 另外,L1*L2 = 常规语言有可能吗?
我认为第二个是不可能的。但我不确定。
如果上述陈述之一(或两者)为真,希望看到一个例子。
【问题讨论】:
标签: regular-language finite-automata automata context-free-language
L1 U L2= 常规语言有可能吗?
是的,可能。
一个简单的例子是:如果 L1 是 L2 的子集,那么L1 U L2 将是正则(=L<sub>2</sub>),例如:L1 : { a<sup>n</sup>b<sup>n</sup> |其中n >= 0 } 和L<sub>2</sub> = (a + b)*
L1 * L2= 常规语言有可能吗?
不,上下文无关和常规的连接将是上下文无关的(因为 L1 模式中的约束在L1 * L2 中仍然存在)。
【讨论】:
L1 U L2= 常规语言有可能吗?
是的,这是可能的。 但是举个例子总是更好的:
L1 = {0*1*}(常规)和L2 = {0^n1^n |n>=0}(无上下文)。
L = L1 U L2 = {0*1*} 是常规语言,但因为每种常规语言都是上下文无关的。所以,我们可以说两者的结合总是产生上下文无关的语言。
L1·L2= 常规语言有可能吗?
常规语言和上下文无关语言的连接总是产生上下文无关语言。再看上面的例子:
L = L1·L2 = {(0*1*)·(0^n1^n) |n>=0}(无上下文)。
如果L1 或L2 之一是Ø,它也可以是常规的,L1·L2 将导致Ø(常规)。但由于所有常规语言都是上下文无关的,Ø 也是上下文无关的。
看看这个:Geeks for Geeks
【讨论】:
是的,上下文无关和常规的连接将是常规的
取L1= a^nb^n,即CFL,取L2 = Ø,即正则。
所以 L1.L2 = (a^nb^n).Ø = Ø 这是常规的
注意:对于两种语言的连接必须是正则的, 必须至少有一种语言才能成为常规语言。
【讨论】: