【问题标题】:concatenation & union - regular and context free languages连接和联合 - 常规和上下文无关语言
【发布时间】:2014-02-20 19:51:40
【问题描述】:

给定 L1 上下文无关的非正则语言。 给定 L2 常规语言。

L1 U L2 = 常规语言有可能吗? 另外,L1*L2 = 常规语言有可能吗?

我认为第二个是不可能的。但我不确定。

如果上述陈述之一(或两者)为真,希望看到一个例子。

【问题讨论】:

    标签: regular-language finite-automata automata context-free-language


    【解决方案1】:

    L1 U L2 = 常规语言有可能吗?

    是的,可能。

    一个简单的例子是:如果 L1 是 L2 的子集,那么L1 U L2 将是正则(=L<sub>2</sub>),例如:L1 : { a<sup>n</sup>b<sup>n</sup> |其中n &gt;= 0 } 和L<sub>2</sub> = (a + b)*

    L1 * L2 = 常规语言有可能吗?

    不,上下文无关和常规的连接将是上下文无关的(因为 L1 模式中的约束在L1 * L2 中仍然存在)。

    添加引用:CS 273: Closure Properties for Context-Free Languages

    【讨论】:

    【解决方案2】:

    L1 U L2 = 常规语言有可能吗?

    是的,这是可能的。 但是举个例子总是更好的:

    L1 = {0*1*}(常规)和L2 = {0^n1^n |n&gt;=0}(无上下文)。

    L = L1 U L2 = {0*1*} 是常规语言,但因为每种常规语言都是上下文无关的。所以,我们可以说两者的结合总是产生上下文无关的语言

    L1·L2 = 常规语言有可能吗?

    常规语言和上下文无关语言的连接总是产生上下文无关语言。再看上面的例子:

    L = L1·L2 = {(0*1*)·(0^n1^n) |n&gt;=0}(无上下文)。

    如果L1L2 之一是Ø,它也可以是常规的,L1·L2 将导致Ø(常规)。但由于所有常规语言都是上下文无关的,Ø 也是上下文无关的。

    看看这个:Geeks for Geeks

    【讨论】:

      【解决方案3】:

      是的,上下文无关和常规的连接将是常规的

      取L1= a^nb^n,即CFL,取L2 = Ø,即正则。

      所以 L1.L2 = (a^nb^n).Ø = Ø 这是常规的

      注意:对于两种语言的连接必须是正则的, 必须至少有一种语言才能成为常规语言。

      【讨论】:

      • 您必须证明连接对于每一种种可能的语言是有规律的,而不仅仅是您选择的两种语言。
      猜你喜欢
      • 2015-03-09
      • 2015-08-13
      • 2014-02-08
      • 1970-01-01
      • 2018-09-12
      • 2012-04-12
      • 1970-01-01
      • 2011-02-17
      • 2014-11-07
      相关资源
      最近更新 更多