归纳图灵机与计算问题.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
归纳图灵机与计算问题

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 停机问题——对角线删除方法 我知道图灵停机问题、哥德尔定理等等都来源于康托尔的对角线删除法则。那么,下面我们就来看看,如果运用对角线删除法则如何证明图灵停机问题呢?采用这种全新的证明思路,也许你会更加清楚地认识到停机问题的本质。 问题没有变,是否存在一个程序P(X,Y)判断出来任意一个程序X当输入Y的时候是否有死循环,或者说是否停机。 * 停机问题——对角线删除方法 我们仍然用反证法,假设这样的P(X,Y)是存在的。而我们知道程序X本身是可以被编码的。也就是可以为所有的程序进行编号:1,2,3,……,而数据Y本身也是这样的编号1,2,3,……,因而我们就可以把每一对X和Y的组合排列在一张表上。比如列表示的是数据Y,而行表示的是程序X,这样P(X,Y)的值也就是yes或no就可以写在第X行第Y列的对应位置上,表示P(X,Y)判断出的X作用在输入Y上是否会死循环的结果。比如下面的表就是一个示例: * 停机问题——对角线删除方法 到这里没有发生什么毛病。我们知道上表中的每一个行都表示一个确定的程序作用到不同的数据上所得到的结果。比如程序X作用在1,2,3,4,……,Y,……上给出的结果就是一个序列: no,yes,no,yes,yes,no,……,yes,…… * 停机问题——对角线删除方法 下面我们把上表对角线上的元素挑出来。也就是专门找那些第1行第1列,第2行第2列,……这样的元素就可以得到一个序列: yes,no,no,yes, …… 而根据这个序列我们完全可以构造这样一个反序列: no,yes,yes,no, …… 也就是说这个序列在每一个位上都与前一个对角线序列不同 !这个序列就称为对角线删除序列。那么我问,这个对角线删除序列是否在我们表中的某一行上呢?答案是否定的 !这个序列必然不在表中。因为它的第一个元素与1,1不同,第二个元素与2,2不同,……。换一种方式解释就是:假设对角线删除序列的确在表上列出来了,那么这个序列必然在某个固定的行,比如说就在第1001行。那么我们就要考虑这第1001行,第1001列的元素,我们知道根据序列的构造方法(1001,1001)对应表中的元素是与序列上的这个元素不同的 !因而产生了矛盾,也就是说这个构造出来的对角线删除序列不在表中 ! * 停机问题——对角线删除方法 我们完全可以设计出一段程序Q使得Q作用在1,2,……,X,……上产生的序列就是对角线删除序列,而对角线删除序列不在表中就意味着程序P并不能判断出程序Q作用在任意输入上是否停机。其实这里的程序Q就是前一节论证停机问题的程序Q。 用对角线删除的证明方法来看究竟哪里出错了呢?错误就出在我们假设程序P能够得到这样一张完整的表,这张表对所有的程序计算得到是否停机的答案。 * 停机问题——意味着什么 我们已经看到了,的确存在着一类问题我们人类能构造出来,而图灵机是不能解的。我们知道图灵机不能解的问题也就是一切计算机不能解的问题,因而这类问题也叫做不可计算的。因此,必然存在着计算机的极限。实际上,运用我们前面叙述的计算等价性原理,有很多问题都可以被归结为图灵停机问题,也就是说图灵停机问题揭示了宇宙中某种共性的东西,所有那些计算机不能解决的问题从本质上讲都和图灵停机问题是计算等价的。比如在我们就提到的希尔伯特第10问题就是一个典型的不可计算问题 !还有很多问题是不可计算的,尤其是那些涉及到计算所有程序的程序。比如是否存在一个程序能够检查所有的计算机程序会不会出错?这是一个非常实际的问题。我们都知道计算机程序特别容易犯错误,为了检查出某段计算机程序的错误,我们人类就必须对这个程序进行人工的检查。那么能不能发明一种聪明的计算机软件,输进去任何一段计算机程序,这个软件就会自动帮你检查输入的程序是否有错误?答案仍然是不存在的,其实这个问题可以被证明和图灵停机问题实质上是一样的 !于是我们的梦想又破灭了 ! * 停机问题——意味着什么 图灵停机问题也和复杂系统的不可预测性有关。我们总希望能够预测出复杂系统的运行结果。那么能不能发明一种聪明的程序,输入进去某个复杂系统的规则,输出的是这些规则运行的结果呢?从原则上讲,这种事情是不可能的。它也是和图灵停机问题等价的。因而,我们得出来的结论就是:要想弄清楚某个复杂系统运行的结果,唯一的办法就是让这样的系统实际运作,没有任何一种计算机算法能够事先给出这个系统的运行结果。你很有可能不同意我的观点,因为毕竟我们能够发明很多

您可能关注的文档

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档