【发布时间】:2017-04-04 22:32:50
【问题描述】:
我想知道两种语言(一种常规语言和另一种非常规语言)之间的连接是否总是不规则的,或者输出可能是常规语言。 谢谢。
【问题讨论】:
-
我投票结束这个问题,因为它不是一个编程问题。这是理论计算机科学中的一个问题。
标签: computer-science context-free-grammar regular-language chomsky-normal-form
我想知道两种语言(一种常规语言和另一种非常规语言)之间的连接是否总是不规则的,或者输出可能是常规语言。 谢谢。
【问题讨论】:
标签: computer-science context-free-grammar regular-language chomsky-normal-form
不,因为我们可以找到一个反例来证明它有时会发生:
L1 不规则:(a^2)^n with n>=0
L2 正则:a*
连接产生语言 L3= aa*,这显然是常规的。
【讨论】:
a^(2^n) n>=0 是非正则的,除非将它与正则的 a* 连接起来,从而产生正则语言。它变成了 L = {a^(2^n)a*, n>=0} ,它基本上取消了 L={aa*} ,这是常规的。
Patrick87, (a^2)^n n>1 有正则表达式 (aaaa)(aa)*
【讨论】:
记住空语言 ∅和空字符串 {ε} 的单例语言都是正则的。任意非正则语言与空语言的拼接为空语言(正则),任意非正则语言与{ε}拼接为原语言(非正则)。因此,答案取决于语言的选择。
(@Hyruma92 给出了连接给出常规语言的另一个例子;我添加了这个答案,因为我认为它更直接,更容易让你到达那里。这里的直觉是空语言是语言连接的零元素,并且{ε} 是身份元素,它激发了您可能想要尝试它们的原因。)
【讨论】: