【问题标题】:Why is the complement of a regular language still a regular language?为什么正则语言的补语仍然是正则语言?
【发布时间】:2011-12-17 17:31:17
【问题描述】:

根据我的教科书,只要L1是正则语言,L1 = A* - L1的补码就是正则语言。
A* 不是还包括上下文无关语言、上下文敏感语言和递归可枚举语言吗? A*-L1 也会包括所有这些,不是吗?那怎么能有规律呢?
在有限状态机的表示下,我理解为什么补语仍然是一种常规语言。但是,我无法理解其背后的理论。

另外,A* - L1 = A* 交集补码(L1) 。用补语定义的东西定义补语不是重言式吗?我真的不明白这怎么可能有效。

谢谢。

【问题讨论】:

  • 你的教科书没有将A定义为常规语言吗?
  • 不仅A(字母表)是正则的(这很明显,因为它是有限的),而且A*(所有可能的字符串的集合)也是正则的。这可能会更好地突出问题的重点。接受一切机器接受A*,因此规则性不是语言大小的属性,而是其结构的属性。

标签: computer-science discrete-mathematics regular-language formal-languages


【解决方案1】:

我认为您感到困惑的地方在于,当您说“A* 是否还包括上下文无关语言、上下文敏感语言和递归可枚举语言?”您将A*(这是一组字符串)与Powerset(A*)(这是一组语言)混淆了。

Powerset(A*) - {L1} 确实是一个包含“上下文无关语言、上下文敏感语言和递归可枚举语言”的集合,但它实际上与定理无关,它只是说:给定任何常规语言 L (一组字符串),那么语言A*-L,也是一组字符串,也是一种常规语言。

TL;DR 您的问题的级别之间存在混淆:字符串集与语言集。任何将A* 分成LA*-L 的两个分区,其中L 是正则的,A*-L 也必须是正则的。 A* 没有也不能“包含语言”,因为它是一组字符串。

关于你的第二个问题:

另外,A* - L1 = A* 交集补码(L1) 。用补语定义的东西定义补语不是重言式吗?

好问题。我怀疑如果这是作为定义提出的,那只是定义运算符-。据我所知,它没有定义“补函数”。也许已经定义了“补码”,而您的书现在正在尝试定义减法运算符。否则这是一个定理而不是一个定义。

【讨论】:

    【解决方案2】:

    我找不到Hopcroft & Ullman 的副本,但我想我找到了正则语言here 补码的正确定义。 似乎正确且更清晰地说 L 的补码是一个 DFA,它接受任何字符串 除了那些是 L 成员的字符串。所以你移动接受状态对所有(以前)不接受的国家,你已经完成了。由于补码只是 DFA 的一个排列,所以结果仍然是 DFA。

    就符号而言,我认为您将其阅读为L1 = A* - L1,而应正确阅读为complement L1 = A* - L1,其中complement 是补码运算符。

    【讨论】:

      【解决方案3】:

      如果你能理解自动机证明,那么你就拥有了一切。它背后的直觉是,如果您可以通过运行自动机并查看它是否在最终状态停止来识别常规语言,那么您只需运行相同的自动机就可以识别该语言的补码(在所有字符串的集合上)并查看是否在非最终状态下停止。由于所有字符串都在某个状态上停止,并且当且仅当它在最终状态上停止时,语言才是正则的,那么当且仅当它在非最终状态上停止时,它才是非常规的。我猜这很直观。此外,您唯一需要向自己证明一种语言是规则的,就是为它构建一个自动机:只需交换所有最终状态和非最终状态。

      【讨论】:

        猜你喜欢
        • 2015-04-11
        • 2020-07-11
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        • 2013-12-29
        • 2014-12-21
        • 2014-01-15
        相关资源
        最近更新 更多