迈希尔-尼罗德定理

在形式语言理论中，Myhill–Nerode 定理提供了一个语言是正则语言的必要和充分条件。它近乎专门的被用来证明一个给定语言不是正则的。 这个定理得名于 John Myhill 和 Anil Nerode，他们于1958年在芝加哥大学证明了这个定理。 给定一个字母集 (alphabet) Σ {\displaystyle \Sigma } 以及其生成的语言 (language) L ⊆ Σ ∗ {\displaystyle L\subseteq \Sigma ^{*}} ，我們先來定義兩個字串 x , y ∈ Σ ∗ {\displaystyle x,y\in \Sigma ^{*}} 之間彼此的關係：如果對於所有的後接字串 z ∈ Σ ∗ {\displaystyle z\in \Sigma ^{*}} (注意！ z {\displaystyle z} 可以是空字串) 都會讓 x z {\displaystyle xz} 和 y z {\displaystyle yz} 同時屬於或不屬於 L {\displaystyle L} ，那麼我們說 x {\displaystyle x} 和 y {\displaystyle y} 不可區分 (indistinguishable)；相反地如果存在某個後接字串 z ∈ Σ ∗ {\displaystyle z\in \Sigma ^{*}} 讓 x z {\displaystyle xz} 和 y z {\displaystyle yz} 其中一個屬於而另外一個不屬於 L {\displaystyle L} ，則我們說 x {\displaystyle x} 和 y {\displaystyle y} 是可區分的 (distinguishable)。如果 x {\displaystyle x} 和 y {\displaystyle y} 不可區分，我們說它們滿足關係 (relation) R L {\displaystyle R_{L}} ，數學式子寫成 x   R L   y {\displaystyle x\ R_{L}\ y} 。我們也很容易证明這種關係是種等价关系 (equivalence relation)，因此它可以把 Σ ∗ {\displaystyle \Sigma ^{*}} 划分成一个或多个等价类 (equivalence class)。 Myhill–Nerode 定理声称一套語言 L {\displaystyle L} 是正規的「若且唯若」 Σ ∗ {\displaystyle \Sigma ^{*}} 被 R L {\displaystyle R_{L}} 所切分出的等价类数目是有限的，此外這個等價類數量又恰好是可辨識 L {\displaystyle L} 的最小 DFA 的狀態數量。在詳細的證明中「一個等價類會恰好對應到最小 DFA 裡的一個狀態」，如果先給定一个自动机，则任意兩個能驱使它走到同一個状态的字串 x {\displaystyle x} 和 y {\displaystyle y} 必在同一个等价类中；如果先給定一個等价类划分，那可以轻易地构造出一个自动机使其状态恰好對應到等价类。 方向一：如果 Σ ∗ {\displaystyle \Sigma ^{*}} 被 R L {\displaystyle R_{L}} 所切分出的等价类数目是無限多的，那麼語言 L {\displaystyle L} 無法正規 這個方向比較簡單，我們只要證明一個引理 (lemma)：可辨識 L {\displaystyle L} 的 DFA 狀態數量必須不小於等價類數目即可，而這可以使用反證法 (鴿籠原理) 說明。如果 DFA 狀態數量少於等價類數量，那代表必定有兩個不屬於同一個等價類的字串 x {\displaystyle x} 和 y {\displaystyle y} 會引導 DFA 到同一個狀態，如果它們又繼續有後接字串 z {\displaystyle z} ，就會讓 x z {\displaystyle xz} 和 y z {\displaystyle yz} 也走到同一個狀態，如此一來根據定義， x {\displaystyle x} 和 y {\displaystyle y} 應該要屬於同一個等價類，造成矛盾，因此 DFA 狀態數量必須不小於等價類數目。由這個結論可以推得，當等价类数目無限多時，這個 DFA 的狀態數量也必須是無限多，和「有限」狀態機的定義矛盾，換句話說我們找不到一台 DFA 可辨識 L {\displaystyle L} ，因此 L {\displaystyle L} 不正規。 方向二：如果 Σ ∗ {\displaystyle \Sigma ^{*}} 被 R L {\displaystyle R_{L}} 所切分出的等价类数目是有限的，那麼必存在一台同等數量狀態的 DFA 可辨識 L {\displaystyle L} 使其正規 我們先構造出一台 DFA，先假設它的每一個狀態都剛好代表一個等價類 (也就是一個狀態承裝一個等價類裡的所有字串，從起點開始輸入該字串務必到達該狀態)，而轉移函數的決定方式就是從一個狀態隨意抓取一個代表字串，看看它吃了一個字母之後的字串會落在哪個狀態裡面，就讓它走去那裏。這個走向會唯一，理由很簡單可以自己想。對於每個狀態和每個轉移字母都窮舉一遍，最後再觀察哪些狀態包含了被接受的字串，直接讓它們變成終點態 (final state)。一個等價類裡如果有一個字串被接受，那同一個類裡的所有其他字串也會通通被接受，因為根據定義，後接字串可以是空字串。到目前為止，我們有了一定數量的狀態 (圓圈圈)、所有的轉移函數、一個唯一的起點 (看空字串在哪裡即可)、所有的終點，是一台合法的 DFA。現在的問題是，要怎麼證明這台 DFA 能確實辨識 L {\displaystyle L} ，也就是說對於任意字串輸入都能驅使 DFA 走到我們當初賦予每個狀態必須各自代表一個等價類的任務？ 這必須對字串輸入的長度作數學歸納法才能證明。如果字串輸入長度為 0，也就是空字串，那它必須留在起點，而我們起點的取法就剛好是看空字串的位置，所以輸入為空字串時的狀態落點正確；如果對於所有長度不超過 ℓ {\displaystyle \ell } 的字串輸入，它們的狀態落點皆正確，那麼對於任何長度為 ℓ + 1 {\displaystyle \ell +1} 的字串輸入 w {\displaystyle w} ，皆可分解為 w = u a {\displaystyle w=ua} ，其中 u {\displaystyle u} 的長度為 ℓ {\displaystyle \ell } 而 a {\displaystyle a} 的長度為 1 {\displaystyle 1} (字元)，走完 u {\displaystyle u} 之後的落點根據假設是正確的，剩下的一個字元 a {\displaystyle a} 根據我們上述決定轉移函數的方式，自然也會繼續走向我們當初所期望的落點；如此依序遞迴下去，就能說明對於任意字串輸入，這台 DFA 確實能妥善的把 Σ ∗ {\displaystyle \Sigma ^{*}} 裡的每個字串分到正確的類別，並決定接受與否。於是乎我們根據這個 R L {\displaystyle R_{L}} 創造了一台能辨識 L {\displaystyle L} 的 DFA，而且這台 DFA 的狀態數量剛好就是 Σ ∗ {\displaystyle \Sigma ^{*}} 被 R L {\displaystyle R_{L}} 所切分出的等价类數量。 Myhill–Nerode 定理的一个结论是语言 L 是正则的(就是说可被有限状态机接受)，当且仅当 RL 的等价类的数目是有限的。 直接推论是如果一个语言定义等价类的无限集合，它就不是正则的。这个推论经常被用来证明一个语言不是正则的。 例如，由可以被 3 整除的二进制数组成的语言是正则的。有三个等价类 3 - 被 3 除的时候余数是 0, 1 和 2 的数。接受这个语言的极小自动机有对应于等价类的三个状态。 再給一例，我們想說明 A = { 0 n 1 n : n ≥ 0 } {\displaystyle A=\{0^{n}1^{n}:n\geq 0\}} 不是正規的。原因是，給定任意兩個不同長度的 0 {\displaystyle 0} 字串，我們都能接上一個後接字串將這兩個字串分辨開來，舉例來說，給定 000 {\displaystyle 000} 和 00000 {\displaystyle 00000} ，我們就能接上 111 {\displaystyle 111} 讓 000111 {\displaystyle 000111} 合法而 00000111 {\displaystyle 00000111} 不合法。所以有無限多個字串 0 {\displaystyle 0} 、 00 {\displaystyle 00} 、 000 {\displaystyle 000} 、 0000 {\displaystyle 0000} 、... 等彼此之間都是可分辨的，這意味著需要無限多個狀態的自動機才能辨識這個語言，和正規語言定義矛盾，因此 A {\displaystyle A} 不是正規語言。 A. Nerode, "Linear automaton transformations", Proceedings of the AMS, 9 (1958) pp 541-544. Edmund M. Clarke, Myhill-Nerode Handout （页面存档备份，存于互联网档案馆） (2009) John E. Hopcroft and Jeffrey D. Ullman, Introduction to Automata Theory, Languages and Computation, Addison-Wesley Publishing, Reading Massachusetts, 1979. ISBN 0-201-02988-X. (See chapter 3.) Tom Henzinger, Lecture 7: Myhill–Nerode Theorem (2003)