【问题标题】:Is concatenation of a non regular language with a regular language always not regular?非正规语言与正规语言的连接总是不正规的吗?
【发布时间】:2017-04-04 22:32:50
【问题描述】:

我想知道两种语言(一种常规语言和另一种非常规语言)之间的连接是否总是不规则的,或者输出可能是常规语言。 谢谢。

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题。这是理论计算机科学中的一个问题。

标签: computer-science context-free-grammar regular-language chomsky-normal-form


【解决方案1】:

不,因为我们可以找到一个反例来证明它有时会发生:

L1 不规则:(a^2)^n with n>=0
L2 正则:a*

连接产生语言 L3= aa*,这显然是常规的。

【讨论】:

  • 这个证明是正确的,除了 (a^2)^n 和 n>1 是正则表达式 (aa)(aa)* 的正则语言。一个更好的例子是 a^(2^n) 且 n >= 0。
  • $ a^{2*n} $ 是常规的。
【解决方案2】:

a^(2^n) n>=0 是非正则的,除非将它与正则的 a* 连接起来,从而产生正则语言。它变成了 L = {a^(2^n)a*, n>=0} ,它基本上取消了 L={aa*} ,这是常规的。

Patrick87, (a^2)^n n>1 有正则表达式 (aaaa)(aa)*

【讨论】:

    【解决方案3】:

    记住空语言 ∅和空字符串 {ε} 的单例语言都是正则的。任意非正则语言与空语言的拼接为空语言(正则),任意非正则语言与{ε}拼接为原语言(非正则)。因此,答案取决于语言的选择。

    (@Hyruma92 给出了连接给出常规语言的另一个例子;我添加了这个答案,因为我认为它更直接,更容易让你到达那里。这里的直觉是空语言是语言连接的零元素,并且{ε} 是身份元素,它激发了您可能想要尝试它们的原因。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 2014-02-25
      • 2016-07-03
      • 2013-09-13
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多