在给定任何常规语言L的情况下,展示一种确定L = L *的算法

时间:2010-10-13 05:47:27

标签: algorithm membership regular-language

我正在研究会员算法,我正在研究这个特殊问题,其中包含以下内容:

展示一种算法,给定任何常规语言L,确定是否L = L *

所以,我的第一个想法是,我们有L *是L的Kleene星并确定L = L *,我们不能只说因为L是常规的,我们知道L *是定义的声称常规语言家族在星光关闭下关闭。 因此L总是等于L *?

我觉得肯定还有很多东西,可能有些东西我不知道了。任何帮助,将不胜感激。再次感谢。

2 个答案:

答案 0 :(得分:6)

  

由于L是常规的,我们知道L *根据定义表明常规语言族在星形闭合下是封闭的。因此L总是等于L *?

没有。 Regular(L) --> Regular(L*),但这并不意味着L == L*。仅仅因为两种语言都是常规语言并不意味着它们是相同的常规语言。例如,a*b*都是常规语言,但这并不能使它们成为同一种语言。

L != L*的示例是语言L = a*b*,因此L* = (a*b*)*。字符串ababL*的一部分,但不属于L

就算法而言,让我提醒您,常规语言的概念是可以由DFA解析的概念 - 对于任何给定的DFA,该DFA都有一个最佳减少。

答案 1 :(得分:1)

你所说的含义是错误的。如果L是常规的,则Kleene星下的闭合性仅意味着L *再次是规则的。 检查L = L *的一种可能性是计算两者的最小自动机,然后检查等效性。