“Rice 定理把大量逐题归约压缩成统一原则,用于证明程序等价、语言性质和部分函数性质不可判定。可接受编号说明索引如何指向程序行为,$s$ $m$ $n$ 定理提供有效代码参数化,Kleene…”
“参数化定理保证从 $\langle M,w\rangle$ 生成这段代码的函数总可计算:只嵌入常量,不预先执行模拟。无效源编码映到空语言识别器。因此这是从停机问题到性质索引集的映射归约,后者…”
定理Theorem
Halting problem · Undecidability of halting
用总停机判断器的自反转构造证明 HALT 不可判定,并区分识别、有限步数检查与局部终止性证明。
不存在一个总能结束的通用算法,正确判断任意程序在任意输入上是否最终结束。 对图灵机的可计算编码,停机语言定义为
停机包括接受和拒绝;只问是否接受,对应另一个语言。格式不合法的编码可以直接拒绝,不影响结论。
停机问题不可判定,但可识别:用通用图灵机模拟
假设存在判定器
借助这个子程序,构造机器
现在把
| 按 |
|
|---|---|
| 停机 | 进入无限循环 |
| 不停机 | 立即停机 |
两种可能都与
这与 Cantor 式对角论证共享“在自己的位置上反转”的结构,这里被反转的是机器的停机行为。自指只是把矛盾对准假想判断器的工具,结论约束的是所有程序和输入组成的整体问题。[1]
while True: pass 的不停机和固定次数循环的停机,都可直接证明。若某循环的每一步都严格减少一个非负整数,而且循环体每次都能结束,这个整数就是终止性证书。不可判定性排除的是一种对任意程序都给出正确结论并结束的方法,并没有排除局部证明、特定语言的检查器或覆盖部分程序的分析工具。
带步数上限的问题也不同。给定
若程序被限制在一个可有效枚举的有限配置集合中,且其转移确定,那么遇到重复配置就会重复后续行为,可以据此判断是否停机。一般图灵机拥有无界工作带,不能把这个有限状态论证直接搬过去。
假设还存在一个识别器
这就构造出了不存在的判定器。故
停机问题常作为不可判定性归约的起点。例如,给定
若存在适用于所有这类程序的可达性判定器,就能解决停机问题。归约中的程序
Rice 定理进一步覆盖非平凡的可计算语义性质,但要核对语义对象。两个机器可以识别同一语言,其中一个在非成员输入上拒绝,另一个在同样输入上循环;因此“某次运行是否停机”不能不加说明地当作仅由接受语言决定的性质。直接停机归约没有这种歧义。
正在载入交互图谱…