迈希尔-尼罗德定理

(重定向自Myhill-Nerode定理

形式语言理论中,Myhill–Nerode 定理提供了一个语言是正则语言必要和充分条件。它近乎专门的被用来证明一个给定语言不是正则的。

这个定理得名于 John MyhillAnil Nerode,他们于1958年在芝加哥大学证明了这个定理[1]

定理陈述

编辑

给定一个字母集 (alphabet)   以及其生成的语言 (language)  ,我们先来定义两个字串   之间彼此的关系:如果对于所有的后接字串   (注意!  可以是空字串) 都会让    同时属于或不属于  ,那么我们说    不可区分 (indistinguishable);相反地如果存在某个后接字串     其中一个属于而另外一个不属于  ,则我们说    是可区分的 (distinguishable)。如果    不可区分,我们说它们满足关系 (relation)  ,数学式子写成  。我们也很容易证明这种关系是种等价关系 (equivalence relation),因此它可以把   划分成一个或多个等价类 (equivalence class)。

Myhill–Nerode 定理声称一套语言   是正规的“当且仅当”   所切分出的等价类数目是有限的,此外这个等价类数量又恰好是可辨识   的最小 DFA 的状态数量。在详细的证明中“一个等价类会恰好对应到最小 DFA 里的一个状态”,如果先给定一个自动机,则任意两个能驱使它走到同一个状态的字串    必在同一个等价类中;如果先给定一个等价类划分,那可以轻易地构造出一个自动机使其状态恰好对应到等价类。

定理证明

编辑
  • 方向一:如果    所切分出的等价类数目是无限多的,那么语言   无法正规

这个方向比较简单,我们只要证明一个引理 (lemma):可辨识   的 DFA 状态数量必须不小于等价类数目即可,而这可以使用反证法 (鸽笼原理) 说明。如果 DFA 状态数量少于等价类数量,那代表必定有两个不属于同一个等价类的字串    会引导 DFA 到同一个状态,如果它们又继续有后接字串  ,就会让    也走到同一个状态,如此一来根据定义,   应该要属于同一个等价类,造成矛盾,因此 DFA 状态数量必须不小于等价类数目。由这个结论可以推得,当等价类数目无限多时,这个 DFA 的状态数量也必须是无限多,和“有限”状态机的定义矛盾,换句话说我们找不到一台 DFA 可辨识  ,因此   不正规。

  • 方向二:如果    所切分出的等价类数目是有限的,那么必存在一台同等数量状态的 DFA 可辨识   使其正规

我们先构造出一台 DFA,先假设它的每一个状态都刚好代表一个等价类 (也就是一个状态承装一个等价类里的所有字串,从起点开始输入该字串务必到达该状态),而转移函数的决定方式就是从一个状态随意抓取一个代表字串,看看它吃了一个字母之后的字串会落在哪个状态里面,就让它走去那里。这个走向会唯一,理由很简单可以自己想。对于每个状态和每个转移字母都穷举一遍,最后再观察哪些状态包含了被接受的字串,直接让它们变成终点态 (final state)。一个等价类里如果有一个字串被接受,那同一个类里的所有其他字串也会通通被接受,因为根据定义,后接字串可以是空字串。到目前为止,我们有了一定数量的状态 (圆圈圈)、所有的转移函数、一个唯一的起点 (看空字串在哪里即可)、所有的终点,是一台合法的 DFA。现在的问题是,要怎么证明这台 DFA 能确实辨识  ,也就是说对于任意字串输入都能驱使 DFA 走到我们当初赋予每个状态必须各自代表一个等价类的任务?

这必须对字串输入的长度作数学归纳法才能证明。如果字串输入长度为 0,也就是空字串,那它必须留在起点,而我们起点的取法就刚好是看空字串的位置,所以输入为空字串时的状态落点正确;如果对于所有长度不超过   的字串输入,它们的状态落点皆正确,那么对于任何长度为   的字串输入  ,皆可分解为  ,其中   的长度为    的长度为   (字元),走完   之后的落点根据假设是正确的,剩下的一个字元   根据我们上述决定转移函数的方式,自然也会继续走向我们当初所期望的落点;如此依序递回下去,就能说明对于任意字串输入,这台 DFA 确实能妥善的把   里的每个字串分到正确的类别,并决定接受与否。于是乎我们根据这个   创造了一台能辨识   的 DFA,而且这台 DFA 的状态数量刚好就是    所切分出的等价类数量。[2]

用途和结论

编辑

Myhill–Nerode 定理的一个结论是语言 L 是正则的(就是说可被有限状态机接受),当且仅当 RL 的等价类的数目是有限的。

直接推论是如果一个语言定义等价类的无限集合,它就不是正则的。这个推论经常被用来证明一个语言不是正则的。

例如,由可以被 3 整除的二进制数组成的语言是正则的。有三个等价类 3 - 被 3 除的时候余数是 0, 1 和 2 的数。接受这个语言的极小自动机有对应于等价类的三个状态。

再给一例,我们想说明   不是正规的。原因是,给定任意两个不同长度的   字串,我们都能接上一个后接字串将这两个字串分辨开来,举例来说,给定   ,我们就能接上    合法而   不合法。所以有无限多个字串     、... 等彼此之间都是可分辨的,这意味着需要无限多个状态的自动机才能辨识这个语言,和正规语言定义矛盾,因此   不是正规语言。

引用

编辑

注释

编辑
  1. ^ A. Nerode, "Linear automaton transformations", Proceedings of the AMS, 9 (1958) pp 541-544.
  2. ^ Edmund M. Clarke, Myhill-Nerode Handout页面存档备份,存于互联网档案馆 (2009)

一般参考

编辑