📜 [原文1]
COMS W3261: 计算机理论。
讲师:Tal Malkin
日期:2024 年 9 月
这部分内容是讲义的元信息,用于标识课程、讲师、发布日期以及本讲义的主题。
这部分是标准的讲义开头,提供了基本的上下文信息,让学生了解这份材料所属的课程、作者、时间及主题。
这部分的存在是为了标准化文档格式,方便学生归档和快速识别讲义内容。它起到了一个“封面”的作用。
可以把它想象成一本书的封面和扉页,上面写着书名、作者和出版社信息。它告诉你这本书是关于什么的,是谁写的,属于哪个系列。
就像你在图书馆里拿到一本书,首先看到封面上的标题“Myhill-Nerode 定理及其影响”,然后翻开第一页,看到作者是“Tal Malkin”,属于“COMS W3261 计算机理论”这门课的系列讲义。这让你对这份资料有了一个初步的定位。
📜 [原文2]
Myhill-Nerode 定理是正则语言理论中的一个基本结果。它提供了正则语言的一个特征刻画,因此可以用来证明一个语言 $L$ 是否是正则的。如果 $L$ 是正则的,它还可以用来寻找识别 $L$ 的 DFA 中的最小状态数。事实上,这个定理是高效 DFA 最小化算法的核心。在这里,我们介绍 Myhill-Nerode 定理,并给出一些将其应用于正则和非正则语言的例子。
这段话是整篇讲义的引言,旨在告诉我们 Myhill-Nerode 定理是什么,以及它为什么重要。
本段介绍了 Myhill-Nerode 定理的“江湖地位”和三大核心功能:
本段的目的是在深入技术细节之前,先给出一个高度概括的“执行摘要”(Executive Summary)。它告诉读者为什么要学习这个定理,它的价值在哪里,激发读者的学习兴趣和动机。
Myhill-Nerode 定理就像一把“瑞士军刀”。对于一个语言,这把刀不仅能测出它是不是“正则”这块料(像一个试纸),还能精确测量出如果要为它打造一个最高效的 DFA 机器,这台机器最少需要几个齿轮(状态)。
想象一下,你是一个汽车工程师,面前有一堆设计图(语言)。你想知道某张设计图(某个语言 $L$)能不能用一套标准的、有限的零件(DFA)造出来。
📜 [原文3]
这份讲义由 Tal Malkin 编写,部分基于 2017 年助教 Michael Tong、2024 年助教 Hans Shen 和 Hellen Zhao 编写的材料,以及 Luca Trevisan 的讲课笔记。Sipser 的教科书将 Myhill-Nerode 定理作为其已解答习题 1.52 的一部分(等价关系在问题 1.51 中定义)。Hopcroft, Motwani, Ullman 的教科书在第 4.4 节中有更详尽的论述。
这份讲义被推荐给感兴趣的学生阅读,如果你愿意,你可以使用 Myhill-Nerode 定理来解决作业和考试中的问题。然而,它不属于本学期课程的必修内容,也不会假定你已知晓该定理。
这部分内容提供了学术诚信信息和课程定位。
本段澄清了讲义的学术背景和在课程中的定位:它是一份受多方资料启发的、推荐给学有余力的学生的选修内容,学会了可以在解题时使用,但不是强制要求。
这部分的存在是为了管理学生的期望和学习负担。它清楚地界定了哪些是核心要求,哪些是拓展知识,避免学生在非核心内容上花费过多精力而影响对必修内容的掌握。同时,提供参考文献也方便了希望深入研究的学生。
这就像游戏中的一个“支线任务”或“隐藏秘籍”。主线剧情(必修内容)不要求你完成它,但如果你完成了这个支线任务(学习了 Myhill-Nerode 定理),你可能会获得一把强大的武器,让后续的战斗(解决问题)变得更容易。
你正在参加一个烹饪课程。老师发了一份“分子料理技术简介”的讲义。他说:“这份资料大家有兴趣可以看看。我们这门课不强制要求,考试也不会直接考。但如果你们学会了,做菜时可以用这些技术,可能会做出更棒的菜肴。想深入了解的,可以去看《现代主义烹饪》这本书。” 这份讲义就扮演着同样的角色。
📜 [原文4]
Myhill-Nerode 定理背后的一个关键概念是区别扩展。
定义 2.1。令 $L \subseteq \Sigma^{*}$ 为字母表 $\Sigma$ 上的任意语言。对于 $x, y \in \Sigma^{*}$,如果 $x z$ 和 $y z$ 中恰好有一个在 $L$ 中(其中 $x z$ 是 $x$ 和 $z$ 的连接),我们称 $z \in \Sigma^{*}$ 为 $x$ 和 $y$ 的区别扩展。如果存在这样的 $z$,我们说 $x$ 和 $y$ 对于 $L$ 是可区分的;否则,我们说 $x$ 和 $y$ 对于 $L$ 是不可区分的。
这是 Myhill-Nerode 定理的基石。整个定理都建立在这个定义之上。让我们一步步拆解它。
示例 1:
示例 2:
是可区分的;但对于语言 $L_2$,$同样的 $x$ 和 $y$ 可能就是不可区分的。
“可区分性”是衡量两个前缀字符串 $x$ 和 $y$ 是否有本质区别的一个标准。这个标准是:我们是否能找到一个“未来”的后缀 $z$,这个后缀能揭示出 $x$ 和 $y$ 的区别,导致一个通往“接受”的结局,另一个通往“拒绝”的结局。如果找不到任何这样的“未来”,那么这两个前缀就被认为是“没有本质区别的”,即不可区分。
这个定义的目的是将字符串的属性与 DFA 的状态联系起来。正如马上会看到的,如果两个字符串是可区分的,那么任何识别该语言的 DFA 在处理完这两个字符串后,必须处于不同的状态。这个定义是在为建立语言和机器之间的桥梁铺设第一块砖。
把 DFA 想象成一个只有短期记忆的机器人。它沿着字符串路径行走。
想象你在一个分叉路口,路口前有两条路 $x$ 和 $y$。走完 $x$ 后,你站在 A 点。走完 $y$ 后,你站在 B 点。
📜 [原文5]
这个定义背后的直觉是,如果两个字符串 $x, y$ 对于 $L$ 是可区分的,那么在 $L$ 的任何可能 DFA 中(如果存在),DFA 在 $x$ 和 $y$ 上的计算必须结束于两个不同的状态。这是因为如果 $x$ 和 $y$ 到达 DFA 中的同一个状态,那么对于任何扩展 $z$,$x z$ 和 $y z$ 将到达同一个状态。这是允许证明以下引理的关键思想。
这段话解释了上一节定义的“直觉”目的,也就是它和 DFA 的关系。
本段建立了“可区分性”和“DFA 状态”之间的关键桥梁:可区分的字符串必须被 DFA 映射到不同的状态。这是因为 DFA 的无记忆性(只看当前状态)决定了,如果两个字符串被映射到同一状态,它们后续的“命运”将永远被绑定在一起,从而使它们变得不可区分。
此段的目的是为了给下面的引理 2.2 提供逻辑基础。它将一个抽象的、基于语言的定义(可区分性)转化为了一个关于计算机器的、具体的、物理的约束(状态分离)。这是从语言理论迈向自动机理论的关键一步。
再次使用机器人模型。如果机器人需要区分路径 $x$ 和 $y$(因为它们有不同的潜在未来),它就不能在走完 $x$ 和 $y$ 之后,在自己的脑图(状态图)上把它们的目的地标记为同一个点。它必须用两个不同的标记,比如“A点”和“B点”,来记住这种区别,否则它就会“忘记”这个至关重要的信息,并在后续决策中犯错。
想象一个自动售货机(一个 DFA)。
📜 [原文6]
引理 2.2。令 $L \subseteq \Sigma^{*}$ 为字母表 $\Sigma$ 上的任意语言。假设存在一个包含 $k$ 个不同字符串的集合 $\left\{x_{1}, \ldots, x_{k}\right\}$,使得对于任何 $i \neq j$,$x_{i}$ 和 $x_{j}$ 对于 $L$ 是可区分的。那么不存在状态数少于 $k$ 且识别 $L$ 的 DFA。
这个引理是上一段逻辑的直接推论和量化。
证明思路:
引理 2.2 将“可区分性”这个概念量化了。它说:如果能找到一个由 $k$ 个“互相看不顺眼”(两两可区分)的字符串组成的团伙,那么任何想要“管理”好它们(正确识别语言)的 DFA 老大,手下至少要有 $k$ 个小弟(状态),每个“刺头”都得有一个专门的状态去“看管”,否则就会乱套。
这个引理是 Myhill-Nerode 定理证明中的一个关键组成部分,特别是用来证明最小状态数的部分。它建立了一个从语言属性(可区分集的规模)到机器复杂度(状态数下界)的直接数学联系。它是我们用来证明一个语言非正则的有力工具的雏形:只要能找到一个无限大的两两可区分集,就意味着任何 DFA 都需要无限个状态,而这是不可能的,所以语言非正则。
想象一个酒店前台,他需要根据客人的预定信息(字符串 $x_i$)给他们不同的房间钥匙(状态)。如果有一群客人 $x_1, \ldots, x_k$,他们每个人的后续行程安排(区别扩展 $z$)都两两不兼容(比如 $x_1$ 和 $x_2$ 的客人,如果后续都参加“潜水”活动 $z$,一个能去一个去不了),那么前台必须给这 $k$ 个客人 $k$ 把完全不同的钥匙,让他们进入不同的房间。如果前台只有少于 $k$ 种钥匙(比如让 $x_i$ 和 $x_j$ 拿了同一把钥匙),那这两个客人就会被绑定在一起,导致后续行程安排出错。因此,房间(状态)的数量至少要等于这群特殊客人的数量。
你是一名老师,班里有 $k$ 个学生 $x_1, \ldots, x_k$。你知道他们中的任何两个,比如小明 ($x_i$) 和小红 ($x_j$),在未来的某次考试(区别扩展 $z$)中,成绩必然会一个及格一个不及格。为了准确预测他们未来的表现,你需要在你的脑子里(DFA)为这 $k$ 个学生建立 $k$ 个独立的档案(状态)。如果你试图把小明和小红放到同一个档案里(同一个状态),你就无法区分他们了,你的预测系统就会崩溃。因此,你脑中的档案数量(状态数)至少得有 $k$ 个。
📜 [原文7]
不难检查,对于任何语言 $L$,对于 $L$ 的不可区分性是一个等价关系:
命题 2.3。令 $L \subseteq \Sigma^{*}$ 为一种语言。定义 $\sim_{L}$ 为 $\Sigma^{*}$ 上的关系,其中 $x \sim_{L} y$ 当且仅当 $x$ 和 $y$ 对于 $L$ 是不可区分的。那么 $\sim_{L}$ 是自反的、对称的、和传递的,因此 $\sim_{L}$ 是 $\Sigma^{*}$ 上的一个等价关系。
这部分引入了一个新的符号 $\sim_L$,并指出了它所代表的“不可区分性”关系具有一个非常重要的数学性质——它是一个等价关系。
本段的核心是为“不可区分性”这个概念赋予一个坚实的数学结构。通过证明它是自反、对称、传递的,我们确认了它是一种等价关系。这个结论意义重大,因为它允许我们利用等价关系的所有强大理论,特别是“划分”和“等价类”。
本段的目的是为引出“等价类”这一核心概念做铺垫。一旦我们确立了等价关系,我们就可以自然地将所有字符串根据这个关系进行分组,每一组就是一个等价类。而 Myhill-Nerode 定理的精髓,正是将这些等价类与 DFA 的状态一一对应起来。
等价关系就像给集合里的所有元素贴标签。
这个 $\sim_L$ 关系就是一种贴标签的规则:如果两个字符串从“语言 $L$ 的视角”来看,其未来发展(加任何后缀 $z$)没有任何区别,那么它俩就贴上相同的标签。
想象一下,所有字符串 $\Sigma^*$ 是一群人。语言 $L$ 是一个俱乐部。
因此,“未来结局总是一样”这个关系,是一个等价关系。它可以把所有的人分成不同的小团体,每个团体里的人,他们的“命运”是紧紧绑定在一起的。这个小团体,就是“等价类”。
📜 [原文8]
现在回想一下,集合 $S$ 上的一个等价关系 $\sim$ 会导出等价类,这些等价类将 $S$ 划分为通过 $\sim$ 相互关联的元素的子集。例如,令 $\sim$ 为整数集(记作 $\mathbb{Z}$)上的关系,定义为 $a \sim b$ 当且仅当 $a \equiv b(\bmod 3)$。那么 $\sim$ 是一个等价关系,它将 $\mathbb{Z}$ 划分为三个等价类 [0], [1], [2],定义为 $[i]=\{n \in \mathbb{Z} \mid n \equiv i(\bmod 3)\}$。
这段话的作用是复习一个数学概念:等价关系如何引出等价类和划分。
本段通过一个具体的“模3同余”的例子,形象地回顾了等价关系的核心作用:它能像切蛋糕一样,将一个大集合(如所有字符串 $\Sigma^*$)整齐地切分成若干个互不重叠的小块(等价类),每一块里的所有元素都具有某种共同的“本质”。对于 $\sim_L$ 关系,这个共同的“本质”就是拥有相同的“未来可能性”。
本段的目的是为了让读者对“等价类”和“划分”有一个具体、直观的理解。这是理解 Myhill-Nerode 定理陈述的关键一步,因为定理的核心就是关于 $\sim_L$ 关系所产生的等价类的数量。这个例子告诉我们,等价类的数量可以是有限的(比如3个),也可以是无限的。
等价关系就像一个分拣系统。
这个例子告诉你,对于“按除3余数”这个分拣规则,你只需要3个篮子就够了。
想象一个大地图,上面有无数个村庄(字符串)。你现在要给这些村庄分组(划分)。分组的规则(等价关系)是:“从两个村庄出发,无论你接下来按什么路线走,最终的旅行体验(比如是否能到达一个叫 $L$ 的旅游胜地)总是一样的,那么这两个村庄就分到一组。”
📜 [原文9]
备注 2.4。如果 $x \in L$ 且 $y \notin L$,那么 $x$ 和 $y$ 对于 $L$ 是可区分的:我们可以取区别扩展为空字符串 $\epsilon$。因此,每个等价类包含的字符串要么全部在 $L$ 中,要么全部不在 $L$ 中。
这是一个非常重要但又很简单的观察。
本备注揭示了等价类的一个关键特性:等价类在语言 $L$ 的边界上是“泾渭分明”的。一个等价类要么完全在 $L$ 的“领土”内,要么完全在 $L$ 的“领土”外,绝不会横跨边界。
这个备注是为了后面构造 DFA 时定义“接受状态”做铺垫。既然等价类是“纯洁”的,那么我们可以将那些“完全在 $L$ 内”的等价类所对应的状态,直接标记为接受状态。这个属性保证了这种标记的合理性和一致性。
回到分拣包裹的例子。语言 $L$ 是“贵重品”。这个备注说,同一个篮子(等价类)里,不可能既有贵重品,又有普通品。如果发生了这种情况,说明你的分拣规则(等价关系)出错了,因为贵重品和普通品本身就是“可区分的”(一个贵重一个不贵重),它们就不应该被分到同一个篮子里。
在村庄分组的比喻中,旅游胜地 $L$ 是一个国家。这个备注的意思是,你划分出的每一个“组”(等价类),里面的村庄要么就全部属于这个国家,要么就全部不属于这个国家。不可能有一个组,其中一部分村庄在国境内,另一部分在国境外。
📜 [原文10]
我们现在准备陈述 Myhill-Nerode 定理。
定理 2.5。令 $L \subseteq \Sigma^{*}$ 为一种语言。那么 $L$ 是正则的当且仅当 $\sim_{L}$ 的等价类数量是有限的。此外,如果 $L$ 是正则的,那么 $\sim_{L}$ 的等价类数量也是识别 $L$ 的最小 DFA 的状态数。
这是整篇讲义的核心,是前述所有铺垫的最终集结。我们将它分解成三个部分来理解。
第一部分:正则性的特征刻画
第二部分:最小状态数的确定
整合理解:
Myhill-Nerode 定理完美地连接了三个概念:
定理说,这三者是紧密锁定的。语言是正则的 $\iff$ 等价类数量有限 $\iff$ 存在一个最小 DFA。并且,等价类的数量 == 最小 DFA 的状态数。
让我们更精确地思考:
Myhill-Nerode 定理是一个“三位一体”的定理。它指出,一个语言的正则性、它的不可区分等价类的有限性、以及它的最小 DFA 状态数,这三者被一个精确的数学关系锁定在一起。这个关系就是:语言是正则的,当且仅当等价类数量是有限的,并且这个数量就等于最小 DFA 的状态数。
这是本讲义的高潮和核心。前面所有的定义、引理和备注都是为了能够清晰地陈述和理解这个定理。这个定理为我们提供了一个全新的、强大的视角来分析语言的正则性,并将抽象的语言属性与具体的机器复杂度直接挂钩。
Myhill-Nerode 定理是“语言需求”和“机器成本”之间的最终审计报告。
想象你要为全世界所有字符串(人)签发护照(状态)。
📜 [原文11]
证明。我们在这里提供证明的梗概。我们需要证明以下三个陈述:
这部分将定理的证明分解为三个逻辑步骤。前两步证明了定理的“当且仅当”部分,第三步证明了“最小状态数”部分。
这部分是证明的路线图。它将一个复杂的双向证明拆解成三个更易于管理的部分:证明必要性、证明充分性、以及确定精确数量。
在给出详细的证明步骤之前,先列出大纲有助于读者跟上逻辑的脉络。这是一种清晰的学术写作风格,让读者知道接下来要“去哪里”以及“为什么要去那里”。
这就像一个律师要证明“被告有罪当且仅当他有作案动机,且动机的数量等于犯罪团伙的最少人数”。
📜 [原文12]
证明 1:我们将证明其逆否命题。假设 $\sim_{L}$ 有无限个等价类。这意味着存在一个包含无限个字符串的集合(每个等价类取一个),使得其中每两个字符串对于 $L$ 都是可区分的。现在根据引理 2.2,对于我们选取的任何数量 $k$,都不可能存在具有 $k$ 个状态且识别 $L$ 的 DFA。因此,不存在识别 $L$ 的 DFA(具有任何有限数量的状态),这意味着 $L$ 不是正则的。
这部分的证明非常巧妙,它没有直接证明“$L$ 是正则的 $\implies$ 等价类有限”,而是证明了其逆否命题 (Contrapositive)。
在这里:
证明步骤:
证明1的逻辑链是:无限等价类 $\implies$ 无限大的两两可区分集 $\implies$ DFA 需要无限个状态(根据引理2.2) $\implies$ 不存在这样的 DFA $\implies$ 语言非正则。这是一个非常简洁且有力的论证。
这部分完成了定理证明的第一步,即从“正则”推导出“有限等价类”。它本质上是引理 2.2 的一个直接应用和推广。
这好比说:“如果一个公司是正规的(正则),那么它的部门数量必须是有限的(有限等价类)。”
证明方法是反过来:“假设一个公司需要设立无限个部门(无限等价类)。每个部门都处理完全不同的业务(两两可区分)。那么,无论你给这个公司多大的办公楼(任意有限的 $k$ 个房间/状态),都永远不够用。因此,这样的公司根本无法建成(非正则)。”
📜 [原文13]
证明 2:如果 $\sim_{L}$ 有有限个等价类,我们将通过构造一个 DFA 来证明 $L$ 是正则的(这个 DFA 也将被用来证明第 3 部分)。
提醒一下,对于字符串 $x$,符号 $[x]$ 指的是包含 $x$ 的等价类,即 $[x]$ 是所有满足 $x \sim_{L} y$ 的字符串 $y$ 的集合。所以如果 $x \sim_{L} y$,那么 $[x]$ 和 $[y]$ 相等并表示同一个等价类。
一个重要的观察是,当 $x \sim_{L} y$ 时,对于任何字符串 $w$,我们有 $[x w]=[y w]$。这是因为如果 $x$ 和 $y$ 是不可区分的,那么对于所有字符串 $z \in \Sigma^{*}$,$x z \in L$ 当且仅当 $y z \in L$。这包括形式为 $z=w u$ 的字符串,其中 $u$ 是任何字符串。由于对于任何字符串 $u$,$x w u \in L$ 当且仅当 $y w u \in L$,我们知道 $x w \sim_{L} y w$, 所以 $[x w]=[y w]$。
考虑到这一点,我们为 $L$ 构造一个 DFA ( $Q, \Sigma, \delta, q_{0}, F$ ) 如下。
$Q$ 对于 $\sim_{L}$ 的每个等价类 $[x]$,我们将有一个对应的状态。
$q_{0}$ 起始状态是 $[\epsilon]$,即包含空字符串的等价类。
F 正如备注 2.4 中提到的,每个等价类包含的字符串要么全部在 $L$ 中,要么全部不在 $L$ 中。我们将 $F$ 定义为对应于 $x \in L$ 的等价类 $[x]$ 的状态集。
$\delta$ 对于一个状态/等价类 $[x]$ 和字符 $a \in \Sigma$,让 DFA 从 $[x]$ 转移到 $[x a]$,即 $\delta([x], a)=[x a]$。我们需要检查这个函数是否是良定义的(如果 $[x]=\left[x^{\prime}\right]$,我们不希望 $\delta([x], a)=[x a]$ 和 $\delta\left(\left[x^{\prime}\right], a\right)=\left[x^{\prime} a\right]$ 是两个不同的输出)。但确实,如前所述,如果 $[x]=\left[x^{\prime}\right]$,那么对于包括字符 $a$ 在内的所有字符串 $z$,都有 $[x z]=\left[x^{\prime} z\right]$。
现在我们已经给出了 DFA 的有效定义,我们的最后一步是证明这个 DFA 确实识别 $L$。令 $x=x_{1} x_{2} \ldots x_{n}$ 为任意字符串。将其输入 DFA,我们的 DFA 将从 $[\epsilon]$ 开始,然后移动到状态 $\left[x_{1}\right]$,然后移动到 $\left[x_{1} x_{2}\right]$,依此类推,直到结束于状态 $\left[x_{1} \ldots x_{n}\right]$。根据构造,$\left[x_{1} \ldots x_{n}\right]=[x]$ 是一个接受状态当且仅当 $x \in L$。我们的 DFA 确实识别 $L$,所以 $L$ 是正则的。
这是一个构造性证明 (Constructive Proof)。它通过直接搭建一个满足条件的 DFA 来证明 $L$ 的正则性。
构造蓝图:
第一步:重要的观察 (为转移函数的良定义性铺路)
第二步:构造 DFA M = ($Q, \Sigma, \delta, q_0, F$)
这是 DFA 的五元组定义。
第三步:证明构造的 DFA 识别 L
证明2的核心是构造。它将抽象的等价类实体化为 DFA 的状态,将等价类的演化规则(追加字符)实体化为 DFA 的转移函数。通过证明这个构造是有效且正确的,它雄辩地证明了只要等价类有限,语言就必然正则。
这部分是 Myhill-Nerode 定理证明的核心和最精彩的部分。它不仅完成了逻辑推导,还给出了一个从语言的等价关系直接生成 DFA 的具体方法。这个构造方法本身就极具价值,是 DFA 最小化算法的理论基础。
这就像用乐高积木搭建一个模型。
📜 [原文14]
证明 3:上面我们为 $L$ 构造了一个 DFA,其状态数与 $\sim_{L}$ 的等价类数量相同。此外,根据引理 2.2,不可能存在任何识别 $L$ 且状态数少于等价类数量的 DFA。因此,上面构造的 DFA 是 $L$ 的最小 DFA。
这部分证明非常简洁,因为它综合了前面的所有成果。它通过“夹逼”的方式证明等式。
证明3利用“证明2”构造的 DFA 建立了一个上界,利用“引理2.2”建立了一个下界。通过上下夹逼,精确地证明了等价类的数量就等于最小 DFA 的状态数,并且“证明2”中构造的那个 DFA 正是最小 DFA 的一个实例。
这部分完成了整个定理的证明,将定理的所有部分都严密地串联了起来。它不仅确认了数量上的相等,还赋予了在“证明2”中构造的DFA一个特殊的地位——它就是我们能为这个语言找到的最高效的 DFA。
你想知道建造一座桥梁(识别语言 $L$)最少需要多少个桥墩(最小状态数)。
📜 [原文15]
使用 Myhill-Nerode 定理。Myhill-Nerode 定理对于正则语言非常有用,它允许我们将语言分解为最基本的片段,即等价类,这些等价类对应于该语言的最小 DFA。上面讨论的思想也是高效 DFA 最小化算法的核心(我们在这里不作介绍)。关键思想是,如上所述,在语言的任何 DFA 中,所有最终处于同一状态的字符串必须属于同一个等价类。另一方面,最终处于两个不同状态的字符串可能仍然属于同一个等价类。在这种情况下,这两个状态被称为是等价的,并且可以在不改变 DFA 行为的情况下合并为一个状态。
Myhill-Nerode 定理在证明语言 $L$ 不是正则的方面也非常有用。为此,我们需要证明等价类的数量是无限的。这可以通过找出无限多个字符串,使得其中没有两个是等价的(即,每对字符串对于 $L$ 都是可区分的)来实现。
这部分总结了 Myhill-Nerode 定理的两个主要应用方向。
应用一:分析和优化正则语言
应用二:证明语言非正则
本段指出了 Myhill-Nerode 定理的两大用武之地:
在理论证明之后,这部分将理论与实践联系起来,告诉学生“我们学这个到底能干嘛?”。它为接下来的具体例子部分设定了议程,让学生带着明确的目标去阅读示例。
Myhill-Nerode 定理就像一个细胞生物学家研究生物体。
这部分将通过具体的例子来演示如何应用 Myhill-Nerode 定理。
📜 [原文16]
例 3.1。令 $L=\left\{01^{n} \mid n \geq 0\right\}$。等价类是什么?首先注意 $\varepsilon$ 与 $\{0,1\}^{*}$ 中的所有其他字符串都是可区分的,因此它属于它自己的等价类。事实上,如果 $w$ 是一个非空二进制字符串,那么 $w 0$ 不在 $L$ 中,但 $\epsilon 0=0$ 在 $L$ 中。另一个等价类由不在正确“格式”中的字符串组成,因为那样无论添加什么扩展 $z$,字符串仍然不在语言中。这将包括以 1 开头的字符串和包含多个 0 的字符串。第三个等价类由 $L$ 中的字符串组成(你明白为什么对于这个语言,$L$ 中的所有字符串都在同一个等价类中吗?)。这些是仅有的 3 个等价类,因为根据 $L$ 的定义,每个字符串要么在 $L$ 中,要么是空的,要么以 1 开头,或者有多个 0。由于有 3 个等价类,我们知道 $L$ 是正则的,并且有一个具有 3 个状态的最小 DFA。
这个例子分析一个简单的正则语言 $L = \{0, 01, 011, 0111, \ldots\}$,并找出它的等价类。
第一步:识别不同的“命运”类别
我们要思考,一个字符串在被处理的过程中,有哪些“本质不同”的状态?
第二步:将这些类别形式化为等价类
第三步:应用 Myhill-Nerode 定理
📜 [原文17]
另一方面,考虑以下最小 DFA:

现在更清楚等价类如何与状态相关联:每个等价类仅由导致 DFA 处于同一状态的字符串组成。事实上,初始状态没有指向它的箭头,因此仅对应于字符串 $\epsilon$。状态 $q_{\text {bad }}$ 指的是具有“不正确格式”的字符串,DFA 认同这些字符串是以 1 开头或具有多个 0 的字符串。最后,状态 $q_{1}$ 指的是语言中的字符串。事实上,$L$ 本身完全包含在一个等价类中,这一事实对应于最小 DFA 只有一个接受状态这一事实。
这部分通过展示一个具体的 DFA 来验证我们之前的等价类分析。
这个例子完美地展示了理论和实践的统一。我们通过抽象推理找出的3个等价类,与一个具体、直观的最小 DFA 的3个状态精确地一一对应。这让我们对等价类是什么有了更具体的感受:它就是最小 DFA 的状态在语言层面的“投影”。
📜 [原文18]
例 3.2。对于任何 $n \in \mathbb{N}$,定义语言
我们证明对于任何 $n$,语言 $L_{n}$ 是正则的,并且识别它的最小 DFA 有 $2^{n}$ 个状态。
长度为 $n$ 的字符串有 $2^{n}$ 个。我们将证明它们中的每一对都有一个区别扩展,因此每一个相对于 $\sim_{L_{n}}$ 都属于不同的等价类。考虑任意两个字符串 $w=w_{1} \ldots w_{n} \in\{0,1\}^{n}$ 和 $w^{\prime}=w_{1}^{\prime} \ldots w_{n}^{\prime} \in\{0,1\}^{n}$,其中 $w \neq w^{\prime}$。由于 $w \neq w^{\prime}$,它们必须在至少一个位置上不同。取某个 $i \in\{1, \ldots, n\}$ 使得 $w_{i} \neq w_{i}^{\prime}$,这意味着 $w_{i}, w_{i}^{\prime}$ 中一个是 0,另一个是 1。选择长度为 $i-1$ 的扩展 $z$,例如,取 $z=0^{i-1}$。$w z$ 中的倒数第 $n$ 位是 $w_{i}$,$w^{\prime} z$ 中的倒数第 $n$ 位是 $w_{i}^{\prime}$,其中一个是 0,一个是 1。因此,$w z, w^{\prime} z$ 中有一个在 $L_{n}$ 中,另一个不在,所以 $w, w^{\prime}$ 是可区分的。
我们已经证明 $L_{n}$ 至少有 $2^{n}$ 个等价类(长度为 $n$ 的每个字符串对应一个)。我们现在声称 $L_{n}$ 恰好有 $2^{n}$ 个等价类。事实上,不难看出,每个长度为 $|w|>n$ 的字符串 $w$ 都等价于它的 $n$ 位后缀,而每个长度为 $|w|<n$ 的字符串 $w$ 都等价于 $n$ 位字符串 $0^{n-|w|} w$。因此,$L_{n}$ 的最小 DFA 恰好有 $2^{n}$ 个状态。
我们注意到,相比之下,对于任何 $n$,都存在一个具有 $n+1$ 个状态的 NFA 用于识别 $L_{n}$。
这个例子非常经典,它展示了 DFA 和 NFA 之间著名的指数级差距,并用 Myhill-Nerode 定理给出了 DFA 状态数的精确证明。
语言 $L_n$ 的直觉:
证明部分一:证明至少有 $2^n$ 个等价类
证明部分二:证明恰好有 $2^n$ 个等价类
最终结论:
与 NFA 的对比:
[具体数值示例 ($n=2$)]
📜 [原文19]
下面是两个我们在课堂上已经使用泵引理证明过不是正则的例子。在这里,我们使用 Myhill-Nerode 定理重新证明它们。在下一份讲义中,我们将看到一些非正则语言的例子,在这些例子中,使用泵引理来证明是很困难或不可能的,但使用 Myhill-Nerode 定理却有效。
这部分引出了 Myhill-Nerode 定理的第二个主要用途:证明语言的非正则性。它预告了将要用新方法解决老问题,并暗示了这个新方法的威力可能比泵引理更强。
证明非正则的策略回顾:
📜 [原文20]
例 3.3。令 $L=\{w \in\{0,1\}^{*} \mid w \text{ 中 0 的数量与 } 1 \text{ 的数量相同}\}$。我们将证明 $L$ 有无限多个等价类,因此不是正则的。考虑所有形式为 $0^{k}$ 的字符串,对于任何 $k \geq 0$。这些是无限多个字符串,我们声称其中没有两个是等价的。事实上,对于任何 $k \neq j$,考虑字符串 $x=0^{k}$ 和 $y=0^{j}$。选择扩展 $z=1^{k}$ 得到 $x z=0^{k} 1^{k}$,它在 $L$ 中,而 $y z=0^{j} 1^{k}$ 不在 $L$ 中。因此,$L$ 的每个等价类最多只能包含一个形式为 $0^{k}$ 的字符串,所以必须有无限多个等价类。所以 $L$ 不是正则的。
📜 [原文21]
例 3.4。令 $L=\left\{w \in\{a, b\}^{*} \mid w \text{ 是回文串}\right\}$。我们将通过证明该语言具有无限多个等价类来证明它不是正则的。同样,我们可以通过找出一个无限字符串集合的例子来实现这一点,使得其中没有两个字符串是等价的。我们考虑所有形式为 $a^{k}$($k \geq 0$)的字符串,并证明其中没有两个是等价的。对于任何 $k \neq j$,取 $x=a^{k}, y=a^{j}$。选择扩展 $z=b a^{k}$ 得到 $x z=a^{k} b a^{k} \in L$,而 $y z=a^{j} b a^{k} \notin L$。因此,所有这些对 $a^{k}, a^{j}$ 都是可区分的,我们有无限多个等价类,所以 $L$ 不是正则的。
📜 [原文22]
注意:还有许多其他可能的无限字符串集合可供我们使用,其中每一对都是可区分的。事实上,在这个例子中,人们可以证明每个字符串都在它自己的等价类中,即没有两个字符串是等价的。但我们上面给出的证明更简单,足以说明 $L$ 不是正则的。
这两个例子展示了使用 Myhill-Nerode 定理证明非正则性的标准流程:
1. 公式 1: $L_{n}=\left\{w \in\{0,1\}^{*} \mid w \text{ 中的倒数第 } n \text{ 个符号是 } 1\right\}$
- 解释: 定义了语言 $L_n$,它包含所有倒数第 $n$ 个字符是 '1' 的二进制字符串。
1. 公式 1:
- 解释: 定义了语言 $L_n$,它包含所有倒数第 $n$ 个字符是 '1' 的二进制字符串。
[[END_OF_RESPONSE]]所有解释内容已全部输出完毕。