我们给出一个在探讨不可判定性时非常有用的结论——莱斯定理(Rice‘s Theorem)。首先,我们来看前面讨论过的几个不可判定的例子:
这些都是由图灵机识别之语言的性质。而莱斯定理告诉我们,任何由图灵机识别之语言的非平凡性质(nontrivial property)都是不可判定的。
最后通过几个例子来探讨一下莱斯定理的应用。来看看下面这个语言能否使用莱斯定理来确定其可判定性。
{<M> | M是一个TM,且L(M)可由一些拥有偶数个状态的图灵机识别}
首先来确定这是否是一个语言属性,显然是的。那它是否是非平凡的?可惜它不是。因为每一个图灵可识别语言都可以被某个拥有偶数个状态的图灵机所识别。这是因为,如果识别该语言的图灵机只有奇数个状态,你完全可以给它追加一个永远无法到达的状态。这并不改变图灵机的功能,却使其得以满足拥有偶数个状态这样的要求。所以这个例子不能应用莱斯定理来进行分析。那这个语言是否可判定的呢?当然是的,因为这个语言给出的其实是所有图灵机的集合。判定某台机器是否是图灵机,这显然是可以做到的。
如果我们把上述语言中的“拥有偶数个状态的图灵机”改为“至多拥有37个状态和37个带字符的图灵机”,那这个语言能否使用莱斯定理来确定其可判定性。首先,这仍然是一个语言属性,那它又是否是非平凡的呢。答案是肯定的,因为显然有的语言满足该条件而有的语言不满足该条件。我们当然可以创造出一个仅用37个状态之图灵机无法识别的语言。进而可以根据莱斯定理断定这个语言是不可判定的。我们还要注意,这个语言同下面这个语言是不同的,它给出的并非是语言性质,而且它是可判定的。
{<M> | M是一个TM,且它至多拥有37个状态和37个带字符}
如果把原问题中的描述再改成“可由一些至少拥有37个状态和37个带字符的图灵机所识别”那情况又会怎样?显然,这样的性质是非平凡的。所有的图灵机可识别语言都可以被这样定义的图灵机所识别。添加永远不可达的状态就可以让本不满足需求的图灵机拥有超过37个状态,所以该问题不能应用莱斯定理来判定。可见,确定是否属于语言性质,以及性质是否为非平凡的,是应用莱斯定理时的关键。
计算理论中的莱斯定理(Rice's Theorem)——证明与应用