Skip to content

Rice 定理

Rice's theorem

图灵可识别语言的每个非平凡语义性质都是不可判定的。

条目类型
定理

形式陈述

P 是图灵可识别语言的一个语义性质,即它只取决于机器识别的语言,而不取决于机器语法;并且 P 非平凡:有某台机器识别的语言具有该性质,也有某台机器识别的语言不具有。Rice 定理断言索引集

{M:L(M) 具有 P}

不可判定。等价版本可对部分可计算函数的非平凡外延性质陈述。证明把接受问题编码进“是否获得该语义性质”。

直觉

Rice 定理把大量“这个程序算出的函数是否具有性质 P”的问题一次性归入不可判定:只要问题真正询问程序所计算的对象,答案既非对所有程序恒真也非恒假,就不存在对所有程序作出完备判定的算法。证明不是逐个分析性质,而是利用通用机器把某个已知不可判定行为嵌入程序语义:若源机器停机,就让新程序呈现具有 P 的行为;否则呈现不具有 P 的行为。决定性条件是性质只依赖程序算什么,而不依赖代码怎么写。

例子与边界

L(M) 是否为空、有限、正则、等于某个固定非平凡语言或包含字符串 101”都是非平凡语义性质,因此属于 Rice 定理范围并且不可判定。相反,“程序源码长度是否小于 100”“M 是否有五个状态或恰有三个状态”是机器文本的语法性质,可直接检查;“M 是否在 100 步内停机”也可做有限模拟。这些反例说明不能把所有程序问题都误称为 Rice 定理。定理本身只给不可判定性,不自动说明相应索引集是否可识别或属于哪个算术层级。

定理不意味着所有语义问题都不可处理:在有限状态机、总函数语言或受限类型系统中,相应性质可能可判定。它也不直接覆盖运行时间恰为多少步这类依赖具体实现的性质;应用前必须先确认性质对计算等价程序保持不变。

推论与应用

Rice 定理把大量逐题归约压缩成统一原则,用于证明程序等价、语言性质和部分函数性质不可判定。可接受编号说明索引如何指向程序行为,$s$-$m$-$n$ 定理提供有效代码参数化,Kleene 递归定理则可构造会引用自身索引的语义固定点;映射归约停机问题构成另一条标准证明骨架。实际静态分析必须限制语言,或在可靠性与完备性之间取舍。

参考资料
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Ch. 5, Rice theorem and semantic properties of recognizable languages。
  • Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987,Chs. 11–12, index sets and Rice theorem。
关系图谱5 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

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