转自http://www.kuqin.com/algorithm/20080716/11435.html
看黑书介绍NP的时候有一个“不可解问题”,非常不可思议,费劲周折在网上查到了些英文资料,搞明白了,非常有意思,在这里说一下。
不可解问题(Undecidable Decision Problem)指的是这样一种问题:他无论如何也不可能有一个正确的算法来解决。虽然不可思议,但这种问题被证明确实是存在的。图灵在1936年(那时还没电脑,我们的父亲是在没有设备支持的纯理论基础上提出来的,致敬)提出了第一个不可解问题的实例:The Halting Problem。
The Halting Problem是问,输入一段程序代码和一个针对此程序的输入,能否编程判断运行这个程序后程序是否会终止。
这个问题的答案是否定的。也就是说,不可能有一种算法可以正确判断一个指定的程序运行后,给予指定的输入,程序最后出不出得来。换句话说,The Halting Problem是一个不可解问题。
虽然这感觉似乎不可能,但在严格的证明下谁也无法发言反对。
证明过程非常简单,假设The Halting Problem是有解的,并且已经用程序实现了,那么我们只需要再编写一个程序Program Bug,就会发现存在矛盾。
反证:既然解决The Halting Problem的算法已经实现了,那么我们一定能定义一个函数
Function Halting(a,b:input_type):boolean;
其中,a是读入的程序源码,b是输入数据。这个函数的功能就是返回对于指定的程序源码和输入数据,程序是否能顺利退出。
下面编写一个程序:
Program Bug;
var
code:input_type;
begin
get(code); //读入code
if halting(code,code) then repeat until false
else halt;
end.
好,现在运行Bug这个程序,并且输入Bug这个程序本身的代码。这样,halting(code,code)其实质就是在判断这个Bug程序本身了。如果The Halting Problem认为Bug程序会正常退出,那么就让程序进入一个死循环,否则立即退出程序。矛盾产生。
分享到:
相关推荐
- **停机问题**:书中详细讨论了停机问题的不可解性,这是一个经典的不可解问题,它询问给定的程序是否会在有限时间内停止运行。 - **编程限制**:书中还提到了一种特殊情况,即存在某些程序,即使我们知道它们会...
* 例子:停机问题是一个不可解问题,证明停机问题是不可解问题。 本资源总结了算法设计与分析的基本概念和理论知识,包括下界、平凡下界、判定树模型、最优算法、算法的极限、P类问题和NP类问题、确定性算法和非...
本节课程主要讨论算法设计与分析中的NP完全理论,涵盖了NP完全问题的概念、下界、判定树模型、最优算法、易解问题和难解问题、不可解问题、P类问题和NP类问题等重要知识点。 1. 下界(Lower Bound) 下界是指对...
此外,还会讨论图灵停机问题,这是一个著名的不可解问题,它说明了存在某些问题是无法通过有限步骤确定其结果的。 除了图灵机,书里可能还会介绍其他计算模型,如λ演算和寄存器机。λ演算是数学逻辑和函数式编程...
3. **停机问题**:一个著名的不可解问题,询问给定的图灵机和输入是否会停止运行。这个问题的不可解性揭示了存在一些问题是无法通过算法解决的,对理解计算的局限性至关重要。 4. **计算复杂性理论**:这个领域的...
在计算机科学中,通常将问题分为两大类:可解问题(Tractable)与不可解问题(Intractable)。 - **可解问题**:指那些存在多项式时间算法的问题,即可以利用计算机在合理的时间内找到解决方案。这类问题被认为是...
6. **不可解问题**:如Halting Problem,即判断一个图灵机是否会陷入无限循环,这是不可能被任何图灵机解决的。 学习《计算理论导引》和查阅解答集可以帮助学生深化对计算能力的理解,掌握如何分析问题的复杂度,...
17.10 可解性与不可解性:学生需要区分可解和不可解问题,理解哪些问题是可以在有限时间内解决的,哪些则不然。 17.11 多项式与非多项式可解问题:区分P(多项式时间)和NP(非确定性多项式时间)问题,前者表示...
4. **停机问题**:这是一个经典的不可解问题示例,讨论了如何判定程序是否会停止运行。 5. **归约与不可解性**:通过问题间的转换证明某些问题的不可解性。 6. **可列举与递归集合**:研究可列举集合与递归集合的...
基于图灵机模型,理论计算机科学家定义了可计算函数和不可计算函数,以及可解问题和不可解问题。 - 图灵完备性:如果一种计算系统能够模拟图灵机,那么这种系统就被认为是图灵完备的,能够执行所有可计算的函数。...
作者还将介绍停机问题(halting problem)等著名的不可解问题。 5. 复杂性理论:复杂性理论是研究算法解决特定问题所需时间和空间资源的理论。它定义了各种复杂性类别,如P类(多项式时间)问题、NP类(非确定...
2. **Lecture12 Halting Problem.ppt** - 停机问题是最著名的不可解问题之一,由阿兰·图灵提出。它询问是否存在一个程序,能判断给定的程序在特定输入下是否会终止。证明其不可解是计算理论中的一个重要里程碑,它...
例如,“停机问题”是著名的不可解问题之一。 - **计算复杂性**:这是算法分析中的一个重要概念,用于评估算法在时间和空间资源上的需求。它包括时间复杂度和空间复杂度两个方面。 #### 三、算法的复杂性分析 - **...
书中讲 解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、少年高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入...
学生们可能需要理解多项式时间可解问题和不可解问题的区别,并分析某些特定问题的复杂性。 2009年的试题可能会涵盖字符串匹配算法,如KMP或Boyer-Moore算法,这些在文本处理和信息检索中有广泛应用。此外,贪心算法...
习题可能包含定义并分析递归函数,或者探讨停机问题,这是一个著名的不可解问题,表明不存在一个通用的算法来确定所有图灵机是否会在有限步骤内停止运行。 在计算理论的学习过程中,还会接触到自动机理论,如确定性...
8. Post correspondence问题:这是一个经典的不可解问题,表明存在一些问题即使在理论上也无法确定答案。 9. Kolmogorov复杂性:衡量一个字符串的最小描述长度,用于理解信息的压缩极限。 "习题答案[按第2版教材...