Skip to content

Myhill–Nerode 定理

Myhill–Nerode theorem

语言正则当且仅当前缀的不同未来行为只有有限种,其类数恰为最小 DFA 状态数。

条目类型
定理

形式陈述

给定语言 LΣ,在所有字上定义 Nerode 关系

xLyzΣ,xzLyzL.

它是等价关系,并且对右拼接稳定:若 xLy,则对任意 w 都有 xwLyw。等价地,定义语言对前缀 x 的左商(也称前缀残余)

x1L={zΣ:xzL},

就有 xLy 当且仅当 x1L=y1L

Myhill–Nerode 定理断言:

  1. L正则语言,当且仅当 L 的等价类个数有限;
  2. 若类数为 k,识别 L 的最小 DFA 恰有 k 个可达状态;
  3. 删除不可达状态后,最小 DFA 在保持初态、转移与接受状态的同构意义下唯一。

从 DFA 得到有限指标

设 DFA M=(Q,Σ,δ,q0,F) 识别 L。若

δ(q0,x)=δ(q0,y),

那么从这个共同状态继续读取任意 z 会到达同一终点,因此 xzyz 必然同时接受或同时拒绝,即 xLy。于是每个可达 DFA 状态承载至多一种未来行为,而 Nerode 类数不超过可达状态数。特别地,任何识别 L 的 DFA 至少需要与 Nerode 类一样多的状态。

注意逆命题对一台未最小化 DFA 未必成立:两个不同状态可能对所有后缀行为完全相同。机器可以人为复制状态,语言的 Nerode 关系不会因此产生新类。

从有限指标构造 DFA

反过来,若 L 只有有限多个类,就以这些类本身为状态:

QL=Σ/L,q0=[ε],δL([x],a)=[xa],FL={[x]:xL}.

[x]=[y],右不变性保证 [xa]=[ya],所以转移不依赖代表元;在等价定义中取 z=ε,又可知一个类不会同时含有 L 内外的字,所以 FL 也定义良好。对字长归纳得到

δL([ε],x)=[x],

商自动机因而恰好识别 L。它每个 Nerode 类使用一个状态,达到前一方向给出的下界,所以最小。

任何可达最小 DFA 的状态都由某个前缀到达。把该状态映到这个前缀的 Nerode 类,映射保持初态、转移和接受性;若两个状态落在同一类,就可继续合并而不改变语言,与最小性矛盾。映射因此为双射,也证明最小 DFA 的唯一性。

直觉

读完前缀后,过去只通过一份“哪些后缀仍能成功”的未来清单影响判断,原来的字符序列已经无需保留。两个前缀若清单相同,任何识别器都没有理由继续区分它们;若清单不同,就存在一个具体后缀揭示差异,合并它们必定让至少一个完整字判断错误。

最小 DFA 的状态不是设计者凭经验挑出的标签,而是语言所有不同残余的规范名字。转移 [x]a[xa] 表示读一个符号会怎样更新未来清单,接受态则是包含空后缀的残余。定理由此直接从语言语义读出最低记忆量,无需先猜一台自动机再证明它最小。

“可区分”必须针对右侧续写:找到 z 使 xzLyzL,就证明 xLy。区分后缀可以依赖于所比较的一对前缀;不要求一条万能测试串同时区分所有状态。反过来,只试过若干短后缀而未发现差异,并不能证明等价。

Nerode 三类与最小 DFA
例子与边界

L={w{a,b}:w 含子串 ab}.

前缀的未来行为恰分三类:尚未出现 ab 且末尾不是 a,可由 ε 代表;尚未出现 ab 且末尾是 a,可由 a 代表;已经出现 ab,可由 ab 代表。第一、第二类由后缀 b 区分,因为 b 不含 abab 含;第三类与前两类都可由空后缀区分,因为它已经接受。于是最小 DFA 恰有三个状态:无候选前缀、刚见到候选 a、已经匹配成功。

这份论证同时给了上界和下界。三类描述覆盖所有前缀,故商自动机至多三状态;三个代表两两可区分,故任何 DFA 至少三状态。只展示一台三状态 DFA 只能证明上界,若没有区分证书,不能排除还存在两状态实现。

考虑复制语言

C={x#x:x{0,1}}.

前缀集合 {x#:x{0,1}} 两两可区分:对不同的 x,y,接后缀 x 后有 x#xC,而 y#xC。因此 C 有无限多个 Nerode 类,不是正则语言。这个证书准确指出有限状态缺失的信息:分隔符前的整段任意长文本必须留到后半段逐字核对。

关系是右同余,因为标准自动机从左向右读取,并在已读前缀的右侧继续输入。研究双向自动机、从右向左读取或代数识别时,会出现相应的左商或双边同余;不能不加说明地互换方向。

推论与应用

DFA 最小化计算的正是可达状态的未来语言等价:分割细化从接受/拒绝开始,反复用字符转移暴露区分后缀,直到每一块对应一个 Nerode 类。最小结果可作为正则语言的规范表示,用于等价检查、缓存与代码生成。

状态下界也可直接由区分族给出。找出 k 个两两可区分前缀,就证明任何 DFA 至少有 k 个状态;给出无限族则证明语言不正则。与正则语言泵引理相比,Myhill–Nerode 是充要刻画并能给出精确状态数,而泵引理只提供所有正则语言必须满足的循环性质,有时更容易套用,却不能证明正则性。

残余语言还连接自动机学习。查询学习算法逐步提出后缀实验来区分观察到的前缀,反例则暴露尚未分开的残余;当表中的行稳定且闭合时,得到的假设 DFA 正是在逼近 Nerode 商。

参考资料
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, §4.4.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §1.2.
  • Dexter Kozen, Automata and Computability, Springer, 1997.
关系图谱6 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系