IT 论文精读 · PAPER 42

On Computable Numbers(图灵机 / 可计算性)

Alan Turing · King's College, Cambridge · 1936(发表于 Proc. London Math. Soc., 1937)

EN →

这篇论文干了什么?

你每天打开手机,同一块芯片一会儿是相机、一会儿是地图、一会儿是聊天框——一台机器,装上不同的「说明书」,就变成任何机器。这个想法不是工程师先造出来的,而是 1936 年一个 24 岁的英国数学家 图灵(Alan Turing)在一篇纯数学论文里先想清楚的。他为了回答一个抽象的数学问题,顺手把「什么叫计算」这件事彻底讲明白了,还画出了今天所有电脑的祖宗蓝图。

先说个怪问题

当时数学界的大人物希尔伯特(Hilbert)问了一个野心勃勃的问题:能不能找到一套死板的步骤,把任何一句数学命题喂进去,机器照着走就能自动吐出「对」或「错」?如果有,数学家岂不是可以下岗了。可要回答「到底有没有这套步骤」,得先卡住一个更基本的问题:「一套死板的步骤」本身是什么意思?在图灵之前,这个「死板」「机械」「照章办事」全凭直觉,谁也没说清。

图灵的点子:盯着一个人算账

图灵没有去憋一个高深定义,而是去看一个真人是怎么用纸笔算题的,然后把它剥到不能再简:一条可以无限长的纸带,格子里写着符号;一支只盯着一格看的笔尖;脑子里只有有限几个念头(比如「正在进位」);再加一张死板的对照表——「现在是这个念头、看到这个符号,那就:改写这一格、把笔尖挪一格、换个念头」。反复照做,就是「计算」。这台想象出来的机器,后人叫它图灵机。它简单到近乎可笑,却能算的东西,跟今天最强的超算一模一样多

一台能变成任何机器的机器

真正惊人的一步在这里。既然每台图灵机的「对照表」不过是一串符号,那就把这张表也抄到纸带上,当数据读。图灵造了一台特别的机器:你把「某台机器 M 的说明书」写在它的纸带上,它读一读,就能装成 M、干 M 会干的一切。他管它叫通用机(universal machine)。这就是「软件」的诞生——程序不再是焊死的电路,而是可以被读、被换的一段数据。你手里的电脑,本质就是这台通用机。

有些事,机器永远算不出来

接着图灵给这套无所不能的机器画了一条硬边界。他问:能不能有一台机器,看一眼别人的说明书,就判定「这台机器会不会永远跑下去、还是会卡死」?他证明不可能。手法是让机器去审判「它自己」——就像问「这句话是假话」,一自我指涉就转不出去了。于是回到希尔伯特那个大问题:那套判定一切数学命题的万能步骤,根本不存在。数学里永远有机器碰不到的角落。这不是机器还不够快,是逻辑上办不到——这条边界,至今没人能越过。

一句话记住

图灵为了回答「有没有判定一切的万能步骤」,先把「计算」定义成一台极简的纸带机器,再发明了「读说明书就能变成任何机器」的通用机(现代电脑的蓝图),最后证明:有些问题机器永远判定不了,那套万能步骤不存在。一篇纯数学论文,同时立起了计算机的地基和它的天花板。

想看图灵机的结构图、通用机、对角论证怎么把机器逼到自相矛盾? → 切到精读版