科学网

 找回密码
  注册

tag 标签: 停机问题

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

辨析“circle-free”与“halting” - 定性分析与定量分析
热度 2 liuyu2205 2016-8-7 12:44
在图灵1936年的论文中,我们看到了图灵并没有提出所谓的“停机”这个概念,而是一个至今仍然被人们忽视和误解的“circle-free”。这里,我们从认知的角度来进一步辨析“circle-free”与“停机”。 一般而言,认知事物有“定性、定量”之分,我们先追究一下“性、量”的汉字字源(汉字基因): 性者,心生,人認知之起始,事物之本質; 量者,旦里,白天可知距離者,事物外在之差异。 也就是说,认识起始于定性分析,通过分析事物的内在结构、变化因果,来对未知事物进行分类界定;然后观察、衡量其表象进行定量分析,进一步准确认知事物。 于“可计算性”的认知,图灵在论文中强调“可计算数”一定要由机器打印下来,由此揭示了“机械步骤”的实时(the Actual Time)性本质,这样的机器图灵称之为“circle-free”机器,指没有“死循环(circular)”而能将计算的数打印出来,以此界定“可计算性(computability)”。所以,可以认为“circle-free”是对“可计算性”的定性分析,故作为机器模型的图灵机无须作时空方面的量化限制,而具有“无限长的纸带”,允许“不停机”的circle-free,但是这并不意味着具体的机器没有时空的限制( http://blog.sciencenet.cn/blog-2322490-979317.html , http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490do=blogid=993665 )。 再来看替代“circle-free”的“停机”。若要判断机器是否停机,必须给出一个时间的量化标准,比如说计算的时间等,然而在能界定讨论的对象是否“可计算”之前,是无法给出这样一个量化指标的,因为对一个正在运行的具体机器,还无法辨别其工作状态是circular或circle-free。 可见,针对“可计算性”,“circle-free”旨在定性分析,而“停机”则是定量分析。然而,“停机”的定量分析无法度量不可度量的问题,这正是“停机问题”自己否定自己的悖论形式证明,如我们在博文( http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490do=blogid=991454 )中所说:由于把“circle-free”换成了“停机”,就把“判定问题”偷换成了“停机问题”,如此就隐含了“所有的算法都具不可判定的性质”,这是一个观念上的大错误,如果一台计算机或算法不能肯定自己,就推翻了“可计算性”这个概念本身,“‘停机问题’不可判定”意味着——“可计算的”机器不能肯定自己的“可计算性”!就是说,“停机问题”这种悖论式的解释“判定问题”的代价,只是将问题推进到一个更深的缠绕层次。 是故,只有当界定了“可计算性”之后,方可对其进行定量分析,这就是后来计算复杂性的“多项式时间(Polynomial time)”的来由和意义,。。。
个人分类: 不确定性问题和算法讨论|3745 次阅读|11 个评论
图灵1936年论文解读(3):“不停机”的circle-free
热度 1 liuyu2205 2016-7-31 10:48
在图灵1936年论文第二章,图灵用circle-free来定义“可计算数(Computable sequences and numbers)”,这个定义实际上是由二部份构成的,首先由circle-free来定义“可计算序列”,进一步由“可计算序列”定义“可计算数”。 按照图灵的定义: A sequence is said to be computable if it can be computed by a circle-free machine. 一个序列被说成“可计算的”,如果能够通过一台“circle-free machine”计算而得。 A number is computable if it differs by an integer from the number computed by a circle-free machine. 一个数是可计算的,如果它与由“circle-free machine”计算的数只差一个整数。 我们以图灵所举的一个可计算序列:010101...为例来理解circle-free与“可计算序例”与“可计算数”的定义关系。图灵的意思是:一个可计算的数(A number is computable)只与circle-free计算的数(the number computed by a circle-free machine)相差一个整数,这就是指“小数”。因此,可计算序列“010101...”对应一个(可计算的)二进制无限循环小数“.010101...”,就是十进制小数:2^(-2)+2^(-4)+2^(-6)+ ...,即0.333...。 由这个实例的递进定义来理解图灵的“可计算数”是理解图灵论文的关键之一。无限循环小数表达了机器意义的“可计算数”的最大能力,这个最大能力是由(不停机的)circle-free的机器过程实现的。得到确定性的结果而“停机”只是circle-free的特殊情况,因此图灵并不是想由机器直接写出一个可计算数(而停机),“停机”是对已经存在的一台具体可计算机器而言,这正是把“停机问题”顶替“判定问题”所发生的对图灵1936年论文误读的原因。所以图灵并不关心“停机”,图灵所做的是揭示机器自身的机械步骤过程的算法性质,即机器化的“算法”——图灵机。 因此这和一般人观念中的机器的“可计算性”完全不同,通常认为,一台计算机器如果不输出最终结果而总是处于计算之中,则这台机器(算法)就进入了“死循环”,被认为是没有用的。产生这种差别的原因在于普通人只是把计算机当作一台现成的计算工具使用,而图灵是计算机器的建造师,他只有首先保证机器具有无限的运行能力(circle-free),然后才有可能让机器“停机”而得到某个解。
个人分类: 图灵论著专研与精译工作群|4770 次阅读|1 个评论
NP理论(2):“判定问题”与“停机问题”
热度 5 liuyu2205 2016-7-18 23:20
计算机理论中现在流行的一个最基本术语就是“停机问题”(the Halting Problem),其基本意思是:判断任意一个程序是否会在有限的时间之内结束运行的问题。这种解释一开始就隐含了一个主体上的混乱,“判断者”是谁? 这个问题实质源于数学和逻辑基本理论,也就是著名的希尔伯特第十问题(Hilbert's tenth problem)。1900年,德国数学家希尔伯特(David Hilbert 1862─1943)在巴黎第二届国际数学家大会上作了《数学问题》的著名讲演,提出了数学理论中的23个最困难的问题,其中的第10个问题是这样说的: Given a Diophantine equation with any number of unknown quantities and with rational integral numerical coefficients: To devise a process according to which it can be determined in a finite number of operations whether the equation is solvable in rational integers. 注意希尔伯特的用词,作为一个大数学家和形式主义代表,他并没有用“数学方法”、“函数”或“形式方法”这样现成的术语,而是问:能否 “发明一种过程”(或“设计一种方法”)(To devise a process)去“判定”(determine)任何一个丢番图方程问题是否可解?因此,希尔伯特第十问题隐含着数学家的一种哲学上的反思,面对任何可定义的数学问题,数学的“确定性”能力究竟为何?用今天的表达方式就是:存在或不存在对任何可定义的数学问题可解的判定方法? 图灵理解了希尔伯特第十问题的真正要求,图灵具有对复杂机械过程的强大直觉能力(因此后来也成为了一个密码专家),他把人的进行计算的过程完全以符号化的形式表达出来,成为一种算法的机械模型——“图灵机”,图灵机最大的意义就是展示了算法的机械过程,虽然数学和图灵机都使用符号,但它们的组织性质完全不同,数学是纯粹的形式关系,算法则一定是实时(the Actual Time)过程,这样就把数学意义上的“可计算的”函数表达为“可计算的”机械过程,揭示了算法的“能行性”本质,在数学形式之外表达了算法关系,凸现了“算法”的特殊性质和地位,所以“丘奇-图灵论题”说,“能行可计算的”就是图灵机可计算的。 借助于对算法过程的构造性研究,图灵得到了对希尔伯特第十问题的结论,但不是通过一台机器的计算而得到一个确定性的答案,图灵只是肯定,这样的机器是设计不出来的,用今天的表达方式就是,不存在判定任何可定义的数学问题可解的方法。因此图灵是确定地否定了希尔伯特第十问题。希尔伯特第十问题的提出和图灵的否定性回答,现在统称为“判定问题”(Entscheidungsproblem)。 “判定问题”的提出和回答方式之间的关系和性质充满了复杂性,深刻地涉及对数学、逻辑、算法的本质和它们的关系的理解,有些已经成为了哲学上的困难问题,因此人们不断地从各种角度来解释,其中一个广泛的理解角度就是“悖论”方式,即众所周知的“停机问题”(the Halting Problem)。然而,图灵并没有在他的论文中提出“停机”这个术语,此术语可能来源于D.戴维斯,但戴维斯自己也没有确认: Although Turing defined no instruction that would ever halt the machine, the problem that Turing is now attacking is studied more in the variation known as the Halting Problem. (The term originated in Martin Davis's 1958 book Computability and Unsolvability. 32) Can we define a Turing Machine that will determine whether another Turing Machine will either halt or go on forever? If we substitute the idea of circularity for halting, it's a similar problem. Can one Turing machine analyze another Turing Machine and determine its ultimate fate?-Charle Petzold’s “The Annotated Turing “停机问题”中的“停机”就是指计算机输出确定的答案而停机,注意,这个具有“停机”能力的机器就是能行可计算的机器,所以这里的“停机”并没有图灵机的工作中(circle-free)的那种特殊意义( http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490do=blogid=993665 ),“停机问题”通俗的理解,只是问计算机能不能计算所有的问题,从常识上可以理解,一方面,所有能行可计算的算法都是可以得到确定性的答案而停机的,另一方面,不存在可以解决所有问题的确定性算法,就是说这是两回事,并不冲突。 但“停机问题”对“判定问题”的替代却是采用逻辑悖论的方式设计的,就是设计一台计算机的自我指涉,即让一台计算机去判断自己能否得到正确的答案而停机,这实质只是把自指悖论变成了机器形式,最多只是解释了“停机问题”具有悖论性质,与图灵对希尔伯特问题的解决完全不同。图灵的解决是确定性的判断而不是归结到悖论——“‘判定问题’不可判断”,即“不存在对任何可定义的数学问题的判定方法”。 由于把“circle-free”换成了“停机”,就把“判定问题”偷换成了“停机问题”,如此就隐含了“所有的算法都具有不可判定的性质”,这是一个观念上的大错误,如果一台计算机或算法不能肯定自己,就推翻了“可计算性”这个概念本身,“‘停机问题’不可判定”意味着——“可计算的”机器不能肯定自己的“可计算性”!就是说,“停机问题”这种悖论式的解释“判定问题”的代价,只是将问题推进到一个更深的缠绕层次。 希尔伯特第十问题是由丢番图方程问题表达的,在数学界存在一种较狭义的理解方式,认为希尔伯特第十问题是1970年由马季亚谢维奇(Matijacevic, Y.)在普特南(Putnam,H. )、鲁宾孙(Robinson, J. B.)和戴维斯( Davis , M. D.)等人工作的基础上否定地解决了的,他们的工作证明了一个谓词是递归可枚举的,当且仅当该谓词是丢番图谓词,而递归可枚举集是不可判定的,故希尔伯特第十问题是不可解的。(参见博文:什么是“判定问题”?(4)-丢番图方程的两难问题, http://blog.sciencenet.cn/home.php?mod=spaceuid=2322490do=blogquickforward=1id=958109 ) 因此,马季亚谢维奇等人的工作只是成功地将丢番图方程问题归结到递归可枚举集,但递归可枚举集是不可判定的这个性质正是建立在“判定问题”的基础上,如果没有这个基础,马季亚谢维奇等人的工作也就没有意义。 希尔伯特第十问题的意义不仅仅是一个数学问题,也反映了数学和逻辑学基本问题后面一直存在着的哲学上的困难,所谓“数学的三次危机”等认识,不仅是数学上的,也是人类的知识、信息以及今天的人工智能所摆脱不了的本质性,在最终的意义上都源于人的不确定性本质,人就是在对自己的本质的不断深入认识中得到自己的存在意义的。
个人分类: NP理论|15975 次阅读|10 个评论
什么是“判定问题”?(2)-悖论、停机问题与NP
热度 1 liuyu2205 2015-11-4 12:05
“判定问题 ” (德语entscheidungsproblem,英语decision problem)是可计算性理论的核心问题,由希尔伯特于1900年在巴黎第二届国际数学家大会上提出:是否存在这样一种确定的方法,在理论上可适用于任何假设,并且能够保证对无论是否正确的假设都能给出一个正确的结果?( https://zh.wikipedia.org/wiki/決定性問題 )。图灵于1936年在他那篇著名的论文“论可计算数及其在判定问题上的应用”中给予了否定的回答。 人们一般将此“判定问题”表述为“停机问题”:是否存在一个图灵机能判断任一图灵机停机?首先假设存在一个能够判断任一图灵机停机的图灵机,然后利用康托尔的对角线法构造出一个类似于“我在撒谎”的悖论,于是通过反证法证明了不存在这样的万能图灵机,即“停机问题”是不可判断的,从而给出了希尔伯特的“判定问题”的否定回答。 然而,“停机问题”的本质经常未得到人们的正确认识,比如维基网( https://zh.wikipedia.org/wiki/停机问题 )将“停机问题”理解成: 通俗地说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。该问题等价于如下的判定问题:给定一个程序P和输入w,程序P在输入w下是否能够最终停止。 实质上,“判断任一图灵机(程序)停机(停止)”与“判断是否存在一个图灵机能判断任一图灵机停机”,是二个层次完全不同的问题,前者是暗中肯定了有一台图灵机用以判断别的机器是否能停机,这是“真、假”判断;后者是质疑是否存在这样一台判断机去判断所有机器能否停机;前者是“判断”,而后者是对“判断”的“判断”。“停机问题”的证明正是具体化了这二个不同的层次,然后又将它们同一化造成“自我否定”,以此来证明不存在一个能判断任一图灵机停机的图灵机。 正确理解“停机问题”关键在于,“停机问题不可判断”这个结论等同于逻辑上的悖论——不可说,这是由人做出的结论,不是直接由机器给出的答案。 “停机问题”揭示的是不存在一个能判断任一图灵机停机的图灵机,这与逻辑悖论相同,但这个问题并没有因此而被抹杀,“停机问题不可判断”只是表明:对停机问题不存在确定性的算法,这是对机器能力而言,但对人的能力而言,这个问题既不能肯定也不能否定,正是在此意义上,“停机问题”成为了“不确定性问题(Nondeterministic Problem,NP)”,与确定性的“可计算问题”有本质的区别。 但是我们还要指出,“停机”在这里的意义是得到确定性的结果,与图灵论文中的“可计算数”相同,但对于“无限循环小数”这样的“可计算数”来说,正是机器不“停 机 ”才能计算这个循环小数:A sequence is said to be computable if it can be computed by a circle-free machine (这个circle-free 可以指机器处在不停止、但没有进入“死循环”的计算过程中),我们在这个特定的机器状态意义上说,机器状态是可以表示“不确定性”的意义的,但这与以前博文中所论的NDTM(Nondeterministic Turing Machine)完全不同。指出这一点有助于对NP(Nondeterministic Problem)的深入理解。 参考文献: A. M. Turing, On Computability Numbers, with an Application to the Entscheidungsproblem. https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf
个人分类: 不确定性问题和算法讨论|9172 次阅读|3 个评论
自我否定与反思
热度 3 liuyu2205 2015-10-31 14:14
我们讨论了,“我在说谎”在逻辑上是悖论(不可说),但在日常语境中可说,是因为“主体”不同,前者是严格的(这句话),后者是含糊的,后者可以是说话的人,说话的人的“说”是对说话的人的肯定——不管这个人说了什么,换句话说,就是肯定了“我在说谎”这句话。 至于“我在说谎”表达的“否定”的内容,若在日常语境中,就须在时间上展开:“t+1时刻的我所作的判断”可以否定“t时刻的我所作的判断”,因为t+1时刻“我”发生了变化,比如,昨天根据漫天乌云,我说“明天下雨”,结果今天没下雨,我可以“反思”:我在说谎。然而在逻辑层次,由于“我在说谎”否定“我在说谎”这句话本身,就造成了逻辑悖论。 关于逻辑悖论的“不可说”,图灵的“停机问题”将其意义揭示得更明显:当我“活”着(不停机),就没“死”(停机);当我“死”了(停机),就不能“活”着(不停机)。这相当于日常语言中的“不可说”,俗语说:“死人说话”——不可能。 所以,逻辑层次的“自我否定”,在现实世界的日常语境中“不可说”,如果要“说”,也只是“反思”而已,。。。
个人分类: 不确定性问题和算法讨论|3163 次阅读|5 个评论
不对称的战争:杜立智反对康托尔
热度 12 dulizhi95 2012-4-9 09:14
不对称的战争:杜立智反对康托尔 各位,不指望科学网上的小编们能理解此篇博文并予以置顶,他们只能理解那些老生常谈毫无个性色彩的博文。同时也不指望科学网上的教授们中的不小比例者能理解此博文。教授中的头脑平庸之辈所占的比例与普通人群中的差不多(呵呵,我这句话并不否认科学网上有不少优秀的教授)。但本人欢迎合理的懂行的批评! 我请科学网上数学专业的教授博导们、知名专家们,特别是本单位数学专业的教授博导们、知名专家们,批评批评本博文。正确的批评本人绝对虚心接受和衷心感谢! 个人认为,重大科学成就可以分为两种类型:一是复杂的思路,二是思维方式上的创新。科学史上,本人特别崇敬牛顿、伽罗华,为什么,因为他们的成就既有思维方式上的创新,也有复杂的思路。而像集合论的发明人康托尔包括罗巴切夫斯基的非欧几何等都只是思维方式的改变,我不认为怎么样。 大家知道,康托尔的主要贡献,就是他的无穷集合理论,无穷集合理论是建立在一一对应的思维方式上的。注意一一对应本身只是一种思维方式,并无实质价值。若不是他用对角线法将无穷集合分级,那一一对应就是无聊的了,因为那样的活,所有无穷集合都是一一对应的。也就是说,推翻了对角线法,就相当于推翻了康托尔的整个理论大厦,包括他的一一对应理论。 各位,阿基米德老先生要移动地球,我杜某小意思,仅仅只是准备推倒康托尔的大厦。 这次准备挑起一场与康托尔的战争,大家知道,康托尔后来发疯了,他是个疯子,我杜某也是个疯子,因而这场战争可命名为:疯子之间的战争。可能有人要说,康托尔早已不在人世了,活人与死人之间如何发生战争呢?我这个康托尔不光指的是康托尔这个人,还有他的那套学说,还有拥护支持和运用他的理论的那一大帮人。 若干年前杜某转到学校工作,为了生存,用了一年的时间拼凑了8、9篇论文。尽管这些文章档次不高,但都是本人多年软件开发的经验总结,对开发人员绝对有教益。其中一篇还是付费论文,也就是说不仅不收我的版面费,还给我付了一笔并非象征性的稿费。蒙学校和相关领导专家老师不弃,论文一够数,立马给了我副教授。 自那以后,我立马停止了拼凑论文和搞所谓的“项目”,全力以赴埋头在家搞顶级的世界难题Hamilton环算法。且迄今多少年过去了,一直是持之以恒,闭门谢客。你们说,这不是疯子又是什么? 全中国有多少比我晚拿副教授的人,现在早已是后来居上了。想当年高考也好,读研也好,身边大都是名校的同学,都是我杜某轻轻松松地超越别人,而不是相反,现在,全中国即使最杂牌、最平庸的人,也可以轻松地超越我。各位,我杜某是全中国最弱智、最低能的人! 关于Hamilton环,国际上只有概率算法,且只对边密集的随机图形有效,而我的算法无论对随机产生的密集图形或稀疏图形都能有效计算,并且对精心设计的难算的图形也能轻松算对。我的那个证明思路在逻辑上也是严密无缝的。因而不管那帮承不承认,有了这些客观事实,我足够了。 今天的博文要否定康托尔的无限集合理论和他的对角线证法。本文已在国际知名网站上发布,本人具有原创权和所有权。任何引用必须注明出处,否则将视为剽窃。 康托尔与对角线方法 康托尔是用对角线法证明全体实数的个数大于全体自然数的个数的。这个方法影响非常深广,直到后来的图灵停机问题、哥德尔定理其实都是该方法的不同延伸。 康托尔在研究无穷集合的时候,富有洞察性地看到了对于无穷集合的大小问题,我们不能再使用直观的 “所含元素的个数”来描述,于是他创造性地将一一对应引入进来,两个无穷集合“大小”一样当且仅当它们的元素之间能够构成一一对应。这是一个非常直观的概念,一一对应嘛,当然个数相等了,是不是呢?然而这同时就是它不直观的地方了。对于无穷集合,我们日常的所谓“个数”的概念不管用了,因为无穷集合里面的元素个数本就是无穷多个。例如,我们说自然数集合能够跟偶数集合构成一一对应,从而 自然数集合跟偶数集合里面元素“个数”是一样多的 。怎么可能?偶数集合是自然数集合的真子集,所有偶数都是自然数,但自然数里面还包含奇数呢,说起来应该是二倍的关系吧?不是!我们只要这样来构造一一对应: 1 2 3 4 … 2 4 6 8 … 用函数来描述就是 f(n) = 2n。检验一下是不是一一对应的?不可思议对吗?用这种一一对应的手法还可以得到很多惊人的结论,如 一条直线上所有的点跟一个平面上所有的点构成一一对应 (也就是说 复数集合跟实数集合构成一一对应 )。以致于连康托尔自己都不敢相信自己的眼睛了,这也就是为什么他在给戴得金的信中会说“我看到了它,却不敢相信它”的原因。然而,除了一一对应之外,还有没有不能构成一一对应的两个无穷集合呢?有。 实数集合就比自然数集合要“大” ,它们之间实际上无法构成一一对应。这就是康托尔的对角线方法要解决的问题。 证明实数的个数比自然数多,等价于证明实数集不可列,那么实数为什么不能与自然数建立一一对应呢? 假定(0,1)之间的实数可列,全部列出来如下: 第一个数记为:A1=0.A11A12A13… 第二个数记为:A2=0.A21A22A23… 依此类推,Aij代表列出来的第i个数的第j位小数,是个0到9之间的整数。同时,左边与这个数列一一对应的是全体自然数:1,2,3,……n…… 下面构造一个属于( 0,1)的实数B=0.B1B2B3…,不等于所列出的任何一个。 只要使 B1不等于A11(这样B就不等于A1),B2不等于A22(这样B就不等于A2)…依此,Bi不等于Aii… 这样构造的数 B是(0,1)中的实数而没有被列出来,于是实数不可列。 我认为,此证明具有大问题。 第一,是逻辑上的问题,当他试图构造一个完全不一样的实数的时候,这一试图本身就与前面已经列出了“所有”的实数相矛盾,或者说,这一试图本身的前提是,前面并没有完全列出“所有”的实数。若是在有穷领域,你当然可以通过这样的方式来反证,因为有穷领域是很直观的、看得很清的。但请注意这是在无穷领域,跟有穷领域的思维方式是不一样的。逻辑上无穷领域只要包含了“所有”,你就无法再构建“新的”了。这个如同下述问题,上帝能制造一块连他自己都搬不动的石头吗?此问题常被用来 “证明”不存在万能的上帝。但因小前提已假设了结论(“自己都搬不动”),故这样的证明是无聊的。如同“上帝能搬动一块连他自己都搬不动的石头吗?”一样的无聊,为了避免后者明显的荒谬可笑,将其中之一的“搬动”改成了“制造”,但本质是一样的。你既然假定了上帝万能(无穷),你就不能再在其他前提表述中暗含上帝不能。请注意,从逻辑上,万能(无限能)是压倒一切的,正如康托尔那个假设包含了“所有”本身就意味着压倒了一切一样。 第二,他的对角线法是建立在假定宽和高严格相等的前提下,而在无穷领域,这样的假设是有问题的。即使是同级无穷大,这样的假设也说不过去。因为你是要构造一个具体的“对角线数”,以两个无穷领域的元素个数严格相等为前提基础来构建一个有穷领域的具体的数,逻辑上是站不住脚的,因为有穷领域的任何常数个数等同于无穷领域的0个数。他用增加了一行来反证原假设不成立,就好像是在说,无穷大甲比无穷大乙多一个,这样的说法无疑是荒谬的。换句话说,康托尔的对角线法,相当于主张如下不等式成立:∞+1 ∞,而这样的不等式显然是错误的。并且,直觉上,他那个列表的高明显大于宽,否则实数就不连续了,也就是说不包含全部了。而为了使宽等于高,注意这里因为要构造一个具体的“对角线数”,宽和高就必须严格相等,为了达到这一目的,惟一的方法就是补零。而一旦补零,其潜在的含义就是,那个列表并没有包含全部的实数。 第三,他那个列表假定左边是全部的自然数,与右边全部的实数一一对应。既然右边他假定实数全部列出,然后构建一个新的实数来否决这个假定,那我左边为什么不能这样做呢?假定左边的自然数也全部列出来了,这个时候,若按照这个荒谬的对角线法,我们将自然数全部用二进制表示。同样,这个时候,直觉上,或者说按照有限领域的理解,高明显大于宽,解决的办法是左边全部补零,这样一来,问题来了,我们也可以在对角线上(按取反)构建一个与前面所有自然数都不相同的自然数。总之,由于左边的全部自然数的宽和高也都是无穷的,因而也可以用对角线法予以否定。请注意,在宽和高的关系上,左边的自然数和右边的实数是有一定不同的,但你不能以此不同为根据来认定左边无对角线。而右边有对角线,否则就意味着你是前提里面包含了结论(自然数可数而实数不可数的结论) 第四,我们再从另一个角度来看康托尔证法的荒谬。我们假定右边那个阵列列出了全部的小数,并且是从小到大排序,第一个小数各位全部是0,“最后”一个小数各位全部是9,中间无缝连续。请注意,你不能否定我这个假设,若是你认为我这个假设不成立,那就意味着你的前提里面包含了结论(不可列的结论)。所以,到目前为止,我这个假设没有任何问题。此时你能不能找到一个不在这个阵列当中的小数呢?毫无疑问不能。那么,康托尔为什么能构建出这样一个小数呢?关键是他设想了一条荒谬的根本不存在的对角线。在有穷领域,对角线必须是宽和高严格相等。而在无穷领域,宽和高相等的含义是什么呢?答案是:宽等于高是相等,宽等于高加1和高等于宽加1其实也是相等的。也就是说,在无穷领域,根本不存在一条确定的对角线,若一定要说有对角线,那对角线也是不确定的。用不存在或不确定的对角线来构造一个确定的小数无疑是荒谬的。 第五,我们再来从有穷领域看看康托尔对角线法的诡辩性。任何一个宽和高也就是行和列相等的方阵,我们假定其每一行都不相同。那么,这样的方阵永远不可能包含用那些元素构成的所有行,因为你都可以通过对角线取反得到一个与前面所有行不同的行。但我们要建立一个由那些元素组成的包含所有不同行的阵列是非常容易办到的,只要不限定高必须与宽相等就行。为什么在无穷领域,我们的康托尔大师既要假定阵列包含所有的行,同时又要规定阵列的宽和高必须严格相等呢?要知道,这后一个规定本身就使得前一个假设不可能成立啊! 第六,他假定那个小数阵列的宽和高完全相等,实际上是运用了他自己的无穷集合元素一一对应的理论,而一一对应理论之所以有效,取决于对角线证明的结论,也就是说,他使用的是循环证法。 第七,无穷大无形状定理:无穷大没有确定的形状。 证明,用反证法,我们假定哲学上的宇宙空间是无穷大,也就是说没有比它更大的空间,显然,我们这个假设没有任何问题。那么这个无穷大的形状是什么呢?若是方体,我们取其对角线作为新的边,构造另一个方体,比原方体大,与假设矛盾。同样,若是设那个无穷大是球体,以球的直径为边长构建一个方体,又比原球体大,矛盾。等等。所以说,无穷大无确定的形状。 康托尔对角线法的根本错误在于:他那个实数阵列,宽即实数的位数是无限的,高即实数的个数也是无限的,他假定这两个无限构成了一个确定的确切的正方形的形状,因之才有了对角线,这个假定违背了上述定理,从而也是错误的。 请注意,我这里只是否定他的对角线法,并不意味着否定实数是比自然数更大级别的无穷大。 疯子之间的战争:杜立智反对康托尔.doc
4165 次阅读|15 个评论
电脑人心 之 计算机能思维吗?(二)图灵的机器(5)丘奇-图灵论题
luocun 2010-9-30 08:27
上回我们看到,停机问题这个良定义的问题,不能由图灵机来解决。那么像停机问题这样的图灵机不可解或者说不可计算的问题,究竟是有很多呢,还是只是个别呢? 其实,有另外一种论证,可以说明绝大多数将自然数映射到自然数的函数是图灵机不可计算的。这个论证的思路是把一切可能的图灵机进行点数,把它们排个队。 首先,请注意图灵机的有限性。这个 我们在讨论通用性的时候 说过。除了带子之外,图灵机所有其他方面都是有限的。记号的种类是有限的,控制器的可能状态数是有限的,读写头的可能移动是有限的。这样一来,任何特定的图灵机,其指令表中包含的五元组的数目也就自然是有限的。这就意味着,我们可以把图灵机们按照它们各自的指令表来排队。比如,把指令表视为一个句子,每个五元组视为一个单词,同时将组成五元组的记号种类、控制器状态和读写头移动方向视为字母并规定其字母表顺序。这样,我们就可以像把英语句子按字母顺序排序那样来给图灵机排序了。由此我们可以说明所有可能图灵机的集合是可数(无穷)的。因此,可能图灵机的数目和自然数一样多。(更准确地说,图灵机集合的基数和自然数集合的基数相同。) 另一方面,将自然数映射自然数的函数个数是不可数(无穷)的,远远超过我们用来给图灵机点数的自然数集合的大小,而至少有[0 1]区间里的实数那么多个。(因为这种自然数到自然数映射的集合至少有自然数的幂集那么大。) 由此可见,从自然数到自然数的函数个数比可能的图灵机的个数要多很多。(在集合的基数序列里要整整高出一阶。)这就意味着必然存在着图灵机不可计算的函数;而且,事实上有无穷不可数那么多的函数是图灵机所不可计算的。跟不可计算函数的数目比起来,可能图灵机的数目相对而言小到可以忽略不计。所谓停机问题只是这些不可计算函数中的一个有趣的例子罢了。 需要注意的是这里所谓不可解,是相对于图灵机而言的,所以也叫图灵机不可计算或者图灵不可计算。这里的论证并没有说明其他的跟图灵机不同的机制也不能解决图灵机的停机问题,虽然这些别的机制也可能有自己的停机问题。 这里的讨论表明,存在这数学上良定义的函数,其映射是图灵机这种机制所不能实现的。正如哥德尔曾经指出的,如停机问题这样的不可计算函数的存在,表明了语义是超越纯粹的机制的,就是说哪怕在自然数算术这样一个很简单的领域里,数学语义上可以严格一贯地定义的映射也不能为纯粹机制加以有效执行。 在过去六七十年乃至今天,有不少人由此得出结论说,既然我们一方面能够理解和把握停机问题这类情况,尤其是哥德尔句子为真这样的事实,而机器却不能机械地解决停机问题或者推导出哥德尔句子,因此人的理解或者直觉能力不是机器能够实现的,完全的人工智能也就是不可能的。这个推断成不成立,咱们以后会专门详细讨论。 不过,图灵机并非唯一的计算模型。前面提到过丘奇对不可判定性的工作,他用的模型叫做演算,这个是后来Lisp程序设计语言的基础。此外,还有由克林尼(Stephen Kleene)在哥德尔工作基础上加以整理推广的递归函数(recursive functions)、波斯特(Emil Post)的波斯特产生式系统(Post production systems)等等。再后来,有戴维斯(Martin Davis)提出的S编程语言。这一模型对于程序员来讲会比较直观。它非常简单,只有三种指令,分别是加1、减1和条件转移: (1)x i = x i + 1 (2)x i = x i 1 (3)if x i = 0 goto LABEL 这个模型下的程序由上述三种类型的指令行构成。每行有仅属于自己的唯一标记(LABEL),可以用在转移(goto)语句里面来指明转移的目标。这个模型假定了存在很多下标变量x i 可用,它们起的作用是存储器,跟图灵机的带子相当。不过,这个可是随机存储器(RAM)!您要有兴趣的话,可以试着用S编程语言来写点小程序。(提示:您可以先考虑如何把一个下标变量拷贝到另一个下标变量,由此构造出赋值语句来。) 在1930年代的短短几年里面递归函数、演算、图灵机等等先后被提出,人们很快证明了他们之间的任何一对都是等价的。所谓等价,在这里的意思就是说一个模型能做的,另一个模型也都能做;反之亦然。 当然,要谈两个模型之间的等价性,就必须有一定的准则来界定各个模型要做的事情。比如说,你不能要求演算去做图灵机能做的移动读写头,因为演算里根本就没有读写头;此外,你也不能要求任何这些模型给你炒个小菜或者打个华尔兹的拍子啥的。在这里,等价性证明采用的准则很简单,就是看这些模型如何实现自然数到自然数的函数映射。所谓等价的意思就是说,对于任何一个自然数到自然数的函数映射,如果一个模型能够实现此映射,那么另一个模型也能实现该映射;反之亦然。因为我们前面看到,图灵机并不能实现全部这些映射,所以这个准则并不是空洞的,因为有可能存在某个映射是图灵机不能做的,演算可以做;或者说反过来。 值得注意的是,这里的等价关系是相当的行为主义的,它只关心输入和输出──如果有输出的话──两端的符合,其他任何方面都不管。模型里面具体如何运作,算法是什么,运作有多快,需要多少存储等等全都无所谓,经典计算和量子计算之间的区别也无所谓。 不管怎么样,既然这些特定的模型一个个地被证明为相互等价,人们就在想:嘿,咱们是不是抓住了一点什么具有一般性的东东呢?是不是说所有这些模型共同指向了直观上的计算或者可计算概念的本质呢?由此就有了著名的丘奇-图灵论题(Church-Turing thesis): 任何直观上可计算的函数都可以由某个图灵机来计算。 这个说法之所以叫做论题(thesis)而不是定理(theorem),是因为直观上可计算这个概念是没法形式化,所以也就不可能有形式化的证明。直观上可计算,其大体意思恐怕是说按照某种确定的过程来一步一步地、机械而有效地把输入变形到输出。与其他等价的模型相比,图灵机有个特点,就是它一方面把这个思想给形式化了,另一方面又保留了机器之为机器的直观性。由此,我们可以理解为什么哥德尔会认为,是图灵机这个模型的提出,真正把有效可计算性这个概念给抓住了。 丘奇-图灵论题提出至今有70多年的了。它也不是没有人反对,今天也还有人在尝试提出与图灵机不等价的,计算能力超越图灵机的模型。不过,迄今为止还没有任何被断言为超越图灵机的计算模型被普遍接受为合理的、符合直观可计算观念的模型。所以,今天的主流观点依然认为这一论题是对的,以图灵机为代表的这批计算模型确实抓住了直观上的可计算性。
个人分类: 电脑人心|12593 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-2 16:25

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部