哥德尔,图灵和康托尔 part 2 停机问题
图灵著名的停机问题对于软件开发者而已是非常熟悉的。下面简单描述停机问题:
假设给你一个计算机程序的源代码,也给你所有程序要用的数据,文件,硬盘,DVD等等,所有它需要处理的东西。你能告诉我程序最终是否能够输出我们需要的结果吗,并且在工作完成之后,程序是就退出,还是会永远运行下去不会停止呢?换句话所就是,对于它会不会停止这个问题, 检查程序和数据,是不是足以能够让你回答是或否呢?
图灵对于停机问题不可解决的证明是决定性的。没有一个软件仅靠检查另一个软件的源代码,就能够决定它是否会停止运行,还是会永远运行。这是从软件领域对哥德尔证明的重新表述。很多程度上这个证明与哥德尔的是相同的,只是更容易理解,这个证明可以表示成简单的软件代码,而不是令人费解的运行在逻辑语法上的函数。停机问题的证明对开发人员是很容易理解的,但对其它人来讲并没有太大用处,因此,我们这里就不去讲述了。可以自己去读。
不用枯燥的证明,我们用一个实际的例子来展示。比如我向你要一个预言,下面这个程序会不会停止呢?
从\(x=4\)开始。给我第一个素数\(p\),\(p\)小于\(x\)。如果\(x-p\)也是素数,把\(x\)加2然后继续。如果不是,让\(p\)作为下一个小的素数然后重新开始。重复以上直到\(p=2\)。如果\(x-p\)还不是素数,打印\(x\)然后退出。
问题并不复杂,而且对于任何现代的计算机语言来讲都很简单。假设我们不知道停机问题,那很可能会想这样简单的问题应该是容易预测的。
迷惑之处在于,我没有说是任何程序。上面的语句描述的是著名的哥德巴赫猜想,300年来都是不可证明的。软件仅仅检查这个语句“每个大于2的偶数能够用2个素数之和表示”是否为真,然后移到下一个偶数。对所有前4,000,000,000,000,000,000个数检查下来,我们仍然没有得到一个真正的数学证明。
关键在于,知道这几行代码是否停止_等于_证明哥德巴赫猜想!如果猜想是真则软件不会停止,检查所有直到无穷大的数,都不会发现任何一个破坏这个规则的数。如果猜想为假,那软件就会在找到第一个破坏规则的数之后停止。
有些有趣的东西正在发生。很明显软件只是另一个写逻辑形式系统的方法。我们能用语言或者软件,甚至更低级别的纯粹的哥德尔风格的逻辑算符,如果想的话。然而,基本上,几行语句就能够表示数学上最基础的问题。知道什么时候程序会停止-给出我们想要的结果-和证明难以置信的难题一样困难。我们甚至可以重新用哥德尔的递归函数来写这个软件,然后写这样一个语句“这个函数在某个数之后停止是否为真”。同样是又一次证明这个语句和证明哥德巴赫猜想是一样的。
哥德巴赫猜想目前是数学上一个很大的不可解问题。或者某天有人会真正找到证明;但很可能是某人不用其他公理,证明这个猜想是不可决定的。这样的证明不可思议地难,但类似的问题以前也曾经被证明过。
即使形式系统中最简单的表达式,比如几行软件代码,都能表示非常难的语句,对于我们目前的数学知识,其中一些是不能决定的。软件限制不了其他软件。软件又是如此普遍的存在,以至于行为完全不可预测。另一个软件不能预先告诉你结果会是什么。得到结果的唯一的办法,只有等他运行完毕-可能几小时,或者永远运行下去。
停机问题显示出硬币的另一面。如果一个语句是不可判定的,你不能作弊,只能写一个软件去检查它。软件轻易就可以表示那个语句,但它可能会用无尽的时间去完成它的工作。只要语句的不可判定无法证明,你就证明不了软件是不是会停止。无穷的知识,更多的证明就在那里:然而这些知识却触摸不到,只要我们受限于当前的系统。
既然现在我们开始处理无穷,就是时候了解更多了。大概40年前哥德尔打开大门时,另一个辉煌的思想正在分析关于无穷的问题。

初遇无穷
我们思考无穷的时候,第一个想到的就是无穷大。但比起一行简单递增的数字来讲,无穷变得更加有趣。我们考察自然数和实数。我们知道自然数是\(1,2,3\)这样的序列,用于计数。我们用实数来衡量真实世界里面的元素,-即,两点间的距离是1.23米之类。无穷的自然数和无穷的实数一样显而易见。
格奥尔格.康托尔证明了一个惊人的结论,称为康托尔对角证明,即就算用无穷的自然数,我们仍然不能对实数进行计数!不知道怎么了,无穷多个自然数其实不够“无穷”!而且有_不同_类型的无穷;由实数组成的无穷,要比自然数组成的无穷更强大。这个证明惊人地简单。
【证明略...对角引理】
很明显连续无穷更强大。那是属于我们周围真实世界的无穷,我们世界里的每个东西都是实数描述的。然而我们永远不知道任意这些实数的准确数字。我们永远局限在我们仪器的误差之中。我们的测量工具在某个地方舍弃了数据,包含无穷的数字的实数被截断。
【...】
这篇文章其实是一篇非常好的引入计算理论和lambda calculus的文章。读者可以知道图灵机实际上是数学问题,而lambda其实是一个逻辑系统。能够在二者之间建立起初步的概念。然后在Reducibility和NP之类的主题,就可以选择角度,互相参照。
哥德尔,图灵和康托尔 part 2 停机问题的更多相关文章
- 哥德尔,图灵和康托尔 part 1 哥德尔编号
在看计算理论相关的书的时候,偶然看到这个blog,http://skibinsky.com/godel-turing-and-cantor-the-math/,写的很好.我觉得用自动机的方式讲计算理论 ...
- 推举算法 AdaBoost 哥德尔奖 Godel Prize
推举算法 AdaBoost 2003年理论计算机科学界最高奖 哥德尔奖 Godel Prize
- matlab实现雅可比、高斯塞德尔、后项误差计算
稀疏矩阵生成: function [a, b] = aparsesetup(n) e = ones(n, 1); n2 = n / 2; a = spdiags([-e 3*e -e], -1:1, ...
- Kendall's tau-b(肯德尔)等级相关系数
Kendall's tau-b(肯德尔)等级相关系数:用于反映分类变量相关性的指标,适用于两个分类变量均为有序分类的情况.对相关的有序变量进行非参数相关检验:取值范围在-1-1之间,此检验适合于正方形 ...
- 德尔福 XE5 安卓权限设置
http://delphi.org/2013/10/delphi-xe5-android-uses-permissions/ The permissions required by a Delphi ...
- 德尔福 XE5 安卓调试
https://stackoverflow.com/questions/2604727/how-can-i-connect-to-android-with-adb-over-tcp?page=2&am ...
- 图灵的文章“Computing machinery and intelligence”译文
图灵奠基AI的力作“Computing machinery and intelligence”全文译完,摘自http://blog.sciencenet.cn/blog-2322490-112266 ...
- Y组合子
Y组合子 Y组合子的用处 作者:王霄池链接:https://www.zhihu.com/question/21099081/answer/18830200来源:知乎著作权归作者所有.商业转载请联系作者 ...
- heavy dark--读《《暗时间》》
本书名为<<暗时间>>,个人觉得是一个非常好的名字:1.迷茫的大学生有多少的业余时间,但又浪费多少的业余时间,浪费的这莫多时间就如同人在黑夜中一样,大脑是在休息的状态.这是第一 ...
随机推荐
- jupyter巨好玩-常用设置
整理一下有用的设置: 自定义ipython工作目录 用jupyter notebook默认打开的页面时,默认在的是home路径,会看见一大堆东西,假如我们只想展示jupyter的工程目录咋办? 简单说 ...
- sql server 2008 (3)
数据库表常用术语 关系--即二维表.每个关系都有个关系名,就是表名 域:取值范围 记录--行 字段,属性--列 关联--指哪个数据库表之间的数据彼此联系的方式 关键字:属性或属性的组合,可以唯一标识一 ...
- 实用chrome插件
2015年最实用的9款chrome插件 随着14年chrome浏览器的市场超过IE浏览器,chrome凭借它强劲性能和出色的使用体验真正的登上了平民级的殿堂.今天小编就为大家推荐9款自己常用的chro ...
- TCP/IP Checksum 吐槽
算法原理: 假定 output[2] 为输出结果,input[n]为待计算校验和的内存块. 1)所有奇数位[0,2,4……] byte 累加进 结果的奇数位内存 output[0],如果溢出,则进位给 ...
- OpenStreetMap(OSM) JMap Viewer(Java swing map)
This article from:http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer is a java component which ...
- 加入商品分类信息,考虑用户所处阶段的 图模型 推荐算法 Rws(random walk with stage)
场景: 一个新妈妈给刚出生的宝宝买用品,随着宝宝的长大,不同的阶段需要不同的物品. 这个场景中涉及到考虑用户所处阶段,给用户推荐物品的问题. 如果使用用户协同过滤,则需要根据购买记录,找到与用户处于同 ...
- Facebook有两名重要经理离职 有一位将加入阿里
据报道,Facebook将有两名重要经理离职,分别是领导视频广告产品的产品经理和企业沟通团队经理. 这是该仍在迅速增长的公司最新的人员离职情况.Facebook计划今年大幅扩张人员规模. 知情人士称, ...
- Linux学习十八之、善用判断式
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_3.php 善用判断式 在第十一章中,我们提到过 $? 这个变量所 ...
- LDT自己定义启动模拟器
近期使用LUA开发手游,团队里大神自研了个框架,底层C++渲染,上层LUA处理逻辑. LUA的IDE选择LDT,不爽的是它不能自己主动启动模拟器,看过COCOSIDE能自启动,于是我想改造下LDT让它 ...
- 系统学习Linux的11点建议
一.从基础开始 常常有些朋友在 Linux 论坛问一些问题,不过,其中大多数的问题都是很基础的.例如为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不 ...