【问题标题】:Exhibiting an algorithm that determines if L = L*, given any regular language L展示一个确定 L = L* 的算法,给定任何常规语言 L
【发布时间】:2011-04-24 16:19:47
【问题描述】:

我正在研究会员算法,我正在研究这个特定的问题,它说如下:

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

所以,我的第一个想法是,我们有 L*,它是 L 的 Kleene 星,并且要确定 L = L*,我们不能说既然 L 是规则的,我们就知道 L* 根据定义指出常规语言的家族在星闭合下是闭合的。 因此 L 将始终等于 L*?

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

【问题讨论】:

    标签: algorithm membership regular-language


    【解决方案1】:

    由于 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 存在单一的最佳缩减。

    【讨论】:

    • 谢谢,这让我明白了。我错误地假设 L = L*。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-22
      • 2017-03-13
      • 2020-09-14
      • 1970-01-01
      • 2019-07-09
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多