Computer science 为什么常规语言的补语仍然是常规语言?

Computer science 为什么常规语言的补语仍然是常规语言?,computer-science,discrete-mathematics,regular-language,formal-languages,Computer Science,Discrete Mathematics,Regular Language,Formal Languages,根据我的课本,L1=A*-L1的补语是一种常规语言,只要L1是一种常规语言。 A*不也包括上下文无关语言、上下文敏感语言和递归枚举语言吗?A*-L1也包括所有这些,不是吗?那怎么可能是正常的呢? 在有限状态机的表示下,我理解了为什么补语仍然是一种正则语言。然而,我无法理解它背后的理论 此外,A*-L1=A*交集补码(L1)。用补语定义的东西来定义补语不是重言式吗?我真的不明白这是怎么回事 谢谢。我找不到的副本,但我想我找到了常规语言补语的正确定义。说L的补码是一个DFA,它接受除L成员以外的任何

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

此外,A*-L1=A*交集补码(L1)。用补语定义的东西来定义补语不是重言式吗?我真的不明白这是怎么回事

谢谢。

我找不到的副本,但我想我找到了常规语言补语的正确定义。说L的补码是一个DFA,它接受除L成员以外的任何字符串,这似乎是正确的,而且从对话的角度来说更清楚。因此,将接受状态移动到所有(以前)非接受状态,就完成了。因为补码只是DFA的一个置换,所以结果仍然是DFA


就符号而言,我认为你把它理解为
L1=A*-L1
,而它应该正确地理解为
complete L1=A*-L1
,其中
complete
是补码运算符。

我认为你感到困惑的是当你说“难道
A*
不包括上下文无关语言、上下文敏感语言和递归可枚举语言吗?”你把
A*
Powerset(A*)
混为一谈,后者是一组语言

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

TL;DR.在你的问题中,级别之间存在混淆:字符串集与语言集。将
a*
划分为
L
a*-L
的任意两个分区(其中
L
是正则的)也必须具有
a*-L
正则。
a*
不包含也不能包含语言“因为它是一组字符串

关于你的第二个问题:

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


问得好。我怀疑如果这是一个定义,那只是定义操作符
-
。据我所知,它并不是在定义“补足功能”。也许“补码”已经定义好了,你的书现在正试图定义减法运算符。或者这是一个定理而不是一个定义。

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

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