简言之,人类不会死机,计算机会。
希尔伯特问题
图片发自简书App
德国数学大师希尔伯特(David Hilbert,1862-1943)于1900年,在巴黎的国际数学家大会上提出了23个亟待解决的数学问题,不仅推动了数学研究的发展,对哲学界以及人类整体认知都有深远的影响,也间接的促成了电子计算机的诞生。其中第2个和第10个问题后来影响最大,因为它们不仅仅是数学内部的问题,还是关于数学本身以及数学能证明什么的问题。
总的来说,这些问题可以分为三个部分:
1、数学是不是完备的?
也就是说,是不是所有数学命题都可以用一组有限的公理证明或证否。 类似欧几里得几何学用几个公理证明“三角形内角和为180度”这样的定理,希尔伯特的问题是:是不是有某个公理集可以证明所有真命题?
2、数学是不是一致的?
换句话说,是不是可以证明的都是真命题?假如我们证出了假命题,例如1+1=3,数学就是不一致的,这样就会有大问题。
3、是不是所有命题都是数学可判定的?
也就是说,是不是对所有命题都有明确程序可以在有限时间内告诉我们命题是真是假?这样你就可以提出一个数学命题,比如所有比2大的偶数都可以表示为两个素数之和,然后将它交给计算机,计算机就会用明确程序在有限时间内得出命题是真还是假的结论。 最后这个问题就是所谓的“判定问题”。
值得指出的是,希尔伯特所说的公理不是我们通常认为的公理,而是经过了彻底的形式化。他们存在于一门叫做元数学的分支中。元数学与一般数学理论的关系有点像计算机中应用程序和普通文件的关系。
这三个问题过了30年都没有解决,不过希尔伯特很有信心,认为答案一定是“是”,并且还断言不存在不可解的问题。
这个问题在哲学上也有意义,因为一旦得到了肯定的答案,意味着我们人类可以用理性去探索世界的终极真理。
哥德尔不完备性定理
图片发自简书App
然而他的乐观断言并没有维持太久,可以说非常短命。因为就在希尔伯特做出上述断言的同一次会议中,一位25岁的数学家宣布了对不完备性定理的证明,他的发现震惊了整个数学界,这位年轻人名叫哥德尔(Kurt Gödel,1906-1978)。不完备性定理说的是,如果上面的问题2的答案是“是”(即数学是一致的),那么问题1(数学是不是完备的)的答案就必须是“否”。 哥德尔的不完备性定理是从算术着手。他证明,如果算术是一致的,那么在算术中就必然存在无法被证明的真命题——也就是说,算术是不完备的。而如果算术是不一致的,那么就会存在能被证明的假命题,这样整个数学都会崩塌。
哥德尔的证明很复杂。不过直观上却很容易解释。
哥德尔给出了一个数学命题,翻译成白话就是“这个命题是不可证的”。 我们姑且称它为“命题A”。现在假设命题A可证,那它就为假,因为它说它不可证,这就意味着证明了假命题,从而算术是不一致的。好了,那我们就假设命题A不可证,这就意味着命题A为真,因为它断言的就是自己不可证,但这样就存在不可证的真命题,算术是不完备的。
因此,算术要么不一致,要么不完备。
哥德尔不完全性定理一举粉碎了数学家两千年来的信念。他告诉我们,真与可证是两个概念。可证的一定是真的,但真的不一定可证。某种意义上,悖论的阴影将永远伴随着我们。
但是哥德尔不完全性定理的影响远远超出了数学的范围。它不仅使数学、逻辑学发生革命性的变化,引发了许多富有挑战性的问题,而且还涉及哲学、语言学和计算机科学,甚至宇宙学。2002年8月17日,著名宇宙学家霍金在北京举行的国际弦理论会议上发表了题为《哥德尔与M理论》的报告,认为建立一个单一的描述宇宙的大一统理论是不太可能的,这一推测也正是基于哥德尔不完全性定理。
有意思的是,在现今十分热门的人工智能领域,哥德尔不完全性定理是否适用也成为了人们议论的焦点。1961年,牛津大学的哲学家卢卡斯提出,根据哥德尔不完全性定理,机器不可能具有人的心智。他的观点激起了很多人反对。他们认为,哥德尔不完全性定理与机器有无心智其实没有关系,但哥德尔不完全性定理对人的限制,同样也适用于机器倒是事实。
图灵停机问题
图片发自简书App
哥德尔干净利落地解决了希尔伯特第一和第二问题,接着第三问题又被英国数学家图灵(Alan Turing,1912-1954)干掉了。1935年,图灵23岁,在剑桥跟随逻辑学家纽曼(Max Newman)攻读研究生。纽曼向图灵介绍了哥德尔刚刚得出的不完备性定理。在理解哥德尔的结果之后,图灵发现了该如何解决希尔伯特的第三问题,判定问题,同样,他的答案也是“否”。
图灵是怎么证明的呢?前面说过,判定问题问的是,是否有“明确程序”可以判定任意命题是否可证?“明确程序”指的是什么呢?图灵的第一步就是定义这个概念。沿着莱布尼茨在两个世纪以前的思路,图灵通过构想一种强有力的运算机器来阐述他的定义,这个机器不仅能进行算术运算,也能操作符号,这样就能证明数学命题。通过思考人类如何计算,他构造了一种假想的机器,这种机器现在被称为图灵机。图灵机后来成了电子计算机的蓝图。
假设图灵机停机问题是可判定的,即存在一个图灵机HM能够判断任意图灵机M在给定输入I的情况下是否可停机。假设M在输入I可时可停机,则HM输出yes,反之输出no。
如果HM(M, I)可停机,输出为yes
如果HM(M, I)死循环,输出为no
然而图灵机M本身也是字符串的描述,因此它也可以作为自身的输入。故HM应该可以判定当将M程序本身作为M的输入时,M是否会停机。然后我们可以定义另一个图灵机U(M),其定义如下:
如果HM(M, M)输出no,则U(M)停机
如果HM(M, M)输出yes,则U(M)就进入死循环
即是说U(M)做的是与HM(M, M)相反的动作。现在,讲U作为U自己的输入,也就是用HM去判断U,会出现以下两种情况:
假设HM(U, U)输出yes,则U(U)则进入死循环中。但HM(U, U)应该和U(U)相等,而按照HM的判断原则,此时U(U)应该是可以停机的,矛盾。
假设HM(U, U)输出no,则U(U)停机,但根据HM判断,U(U)此时是死循环,仍然矛盾。
因此HM不能够总给出正确答案,与之前的假设相矛盾,故图灵机的停机问题是不可判定的。
停机问题证明了判定问题的答案是“否”;不存在明确程序能判定任意数学命题是否为真。图灵从而彻底埋葬了希尔伯特的这个问题。 从上面可以看出,图灵对停机问题不可计算性的证明,与哥德尔的不完备性定理具有同样的核心思想。哥德尔提出了可以编码数学命题的方法,从而让它们可以谈论自身。图灵则提出了编码图灵机的方法,让它们可以运行自身。
图灵的成就对于计算机领域是里程碑式的:首先,他严格定义了“明确程序”的概念。其次,他提出的图灵机为电子计算机的发明奠定了基础。第三,他证明了计算存在局限。
参考书籍:《复杂》,梅拉尼.米歇尔
作者:高黑
链接:https://www.jianshu.com/p/7b911649e26c