计算机的缺陷

英文网址:https://plus.maths.org/content/os/issue5/turing/index

  阿兰-图灵被《图灵作品集》[1]的总编辑P.N. Furbank教授描述为 "科学的领军人物之一"。

 

 

1:阿兰-图灵

  60年前,图灵最著名的论文发表了,他在第一台存储程序的数字计算机开始运行的十年前就提出了通用计算机的概念。

  这只是图灵众多成就中的一项。现在人们知道,二战期间在布莱切利公园图灵破译德国恩尼格玛密码的工作为这场战争的胜利作出了重大贡献——尽管他最亲密的朋友直到图灵在1954年因服用氰化钾而不幸去世都一直不知道这一点。

图2a。英格玛机器。(图片来源:[ http://agn-www.informatik.uni-hamburg.de/ ]AGN,汉堡大学,版权所有,1995年,Morton Swimmer)

 

  图灵的战时工作表明计算机的重要性。尽管大部分黑客工作是以机械方式完成的,但这也离不开巨大的人类计算机团队。

 

 

图2b: 编码转子的特写。

 

  他战时工作的另一个特点是使用了概率论。图灵在这一领域的很多工作也是高度创新的。战后,通过他当时的助手(后来的教授)杰克-古德发表的工作,人们认识到了这一点,而没有提到它在战时的用途。

战后图灵对计算机仍然兴趣盎然,当时他在NPL(国家物理实验室)从事存储程序计算机(ACE或自动计算引擎)的开发工作。1948年,他搬到了曼彻斯特,当年第一台存储程序数字计算机就是在那里运行的。


  尽管图灵与真正的计算机之间的联系极其微弱,但他对计算理论,特别是人工智能(图灵测试)、计算机结构(ACE)和软件工程做出了重大贡献。计算科学领域著名的图灵奖就是以他的名字命名的,这在一定程度上说明了他的贡献。

 

在机器智能性的图灵测试中,观察者必须通过提出一系列的问题来区分机器和人类。

 

终止问题

  一般来说,一旦计算机开始计算,就没有办法知道该计算是否会得出明确的答案。这个问题被称为 “图灵机的终止问题”,并在1937年他对制造的机器的介绍[2]中被首次证明。 这个证明充分彰显了图灵的智慧。

  为了引出这个证明,有必要引进一些关于数列或序列的内容。如果一个集合的元素可以被列在一个单一的序列中,那么就称他们可列。

例如自然数的集合可以列为0、1、2、3、...,无穷无尽。要把所有的整数,即正数和负数列成一个序列,你可以写成0、1、-1、2、-2、3、-3、...,同样没有问题。

分数的计算需要更多的工作。通常需要在平面中使用表格或矩阵来完成。我们只需要看正数——它可以扩展到负数,也就是拓展到整数。

 

图3:分数表。分数可以通过表格来计算,然后沿对角线计算,以蓝色显示。

 

  这里做了很多重复的工作——首先所有的对角线元素都是相等的——所以这个算法有点浪费资源,但好在它能完成工作。继续下去,每个分数都会出现在二维矩阵的某个地方。要把矩阵写成一个单一的序列,在西南到东北的对角线上上下下工作,得到。

1, 1/2, 2, 1/3, 2/2, 3, 1/4, 2/3, 3/2, 4,...

  接下来,我们会看到一个非常著名的定理——康托尔定理。根据这个定理,实数是不能以这种方式计算的。实数的集合包括像Pi(3.14159……)这样的无理数,它们不能被表示成一个最简分数。

康托尔定理的证明

  要证明康托尔定理,只需证明,我们无法计算所有的二进制序列,换句话说,我们无法计算无限的0和1的序列。

我们可以用反证法来完成这个证明。假设我们可以计算上述序列,我们可以给每个二进制序列贴上B1,B2,B3,……无限的标签。让我们先来像以前一样把每个序列的元素列在一个表格或矩阵中。

图4:二进制序列表。一个可能的二进制序列列表,序列D是通过倒置对角线上的元素构建的,以蓝色显示。

 

  现在定义一个二进制序列D,如果B1在该列中有1,则在第一列中选择0,如果B1在该列中有0,则选择1。然后我们在第二列中选择一个0,如果B2在该列中有一个1,如果它有一个0,则选择1,以此类推。由此产生的二进制序列,D,不可能在列表中,因为如果它在列表中,它就必须与B序列之一相匹配,比如说Bn,对于某个n,但是我们刚刚故意确保D的第n列与Bn不同。故矛盾。

  也就是说,无论我们如何列二进制序列,我们总能找到一个不在列表中的序列D。

  这个过程被称为对角化。正如你所看到的,我们已经给出了一个简单的规则,因此,给定一个计算二进制数列表的规则,那么我们就会有一个计算这个对角线二进制数的规则,而它恰好不在列表中。

图灵的观点

  最后,让我们勾勒一下图灵的观点(与库尔特-哥德尔在1931年的一个更著名的推理有关)是如何将这个论证推向一个大阶段的。

  这里的证明不是图灵的原始证明,但与此相关。图灵的这篇经典论文的大部分内容都是在描述他的计算机概念,以及为什么它是通用的。即任何可以根据有限的规则列表进行计算的东西,都可以由他的一台机器进行计算。

  简而言之,图灵机可以被认为是一个黑盒子,它对输入的一个数进行某种计算。如果计算得出结论,或终止计算,就会返回一个输出数字。否则,理论上机器就会永远运行下去。图灵机的数量是无限的,因为可以用有限的规则列表完成无限多的计算。

  图灵理论的结论之一是,存在一个可以模拟所有可能的图灵机的机器。这意味着我们可以认为图灵机是可数的,并通过一种按字母顺序排列的方式,由一台通用机列出T1、T2…。图灵用它来描述图灵版本的哥德尔定理,即终止问题——没有程序可以告诉图灵机是否会在给定的输入上进行有限步后终止。

终止问题的不可解性

  我们把使用第n台图灵机Tn对输入i的结果表示为Tn(i)。假设有一个规则或程序来决定Tn(i)在所有n和i的值上是否终止。

 

图5:可以用一个终止规则来制作一个输出Tn(i)的表格,用问号来表示永不终止的计算。这个表格只是说明性的,其内容的选择并没有考虑到图灵机的任何特定排序。

 

  但是,通过与上面类似的对角化程序,我们可以定义一个新的图灵机,比如说D,它对所有的输入都会终止,并对输入i返回以下输出:

 

      0       如果 Ti(i) 不终止;

      Ti(i)+1   如果 Ti(i) 终止;

 

  但这个机器D一定是这些机器中的一个,换句话说,它一定是某些d对应的Td。然而,我们刚刚定义它在输入d的情况下给出了与Td不同的答案。 所以矛盾就出现了。

  与原来的对角线论证相比,这里的复杂性在于:

    (1)所做的所有列举本身是可计算的;

    (2)任何机器Tn在进行计算时可能会或可能不会终止。

  这些都没有进入康托尔的原始对角线论证。这种可计算的对角化最早是由哥德尔、图灵等人在二战前十年所做的开创性工作中使用的,并且一直是一种重要技术。真正困难的工作在于制定可计算性的各种定义,但那是另一个故事了

什么是生命?

 

 

 

 

图6a:图灵精心手绘的太阳花。

 

  在他去世前的最后几年,图灵正在研究一些完全不同的东西,这些东西从他的学生时代起就一直在他的心里,即生物形态的起源--形态发生学。

 

 

图6b:一个特写部分。

  简单的细胞怎么可能知道如何成长为相对巨大的结构形式?在薛定谔1943年的演讲《生命是什么》中,引出了遗传信息可以储存在分子水平上的关键想法,而克里克和沃森此时正忙于通过DNA的结构来揭开这个秘密。鉴于分子是由基因产生的,图灵正在寻找一种解释,来说明化学溶液可能产生生物的模式。

  他的理论的第一个主要目标是尝试解决Phyllotaxis的经典问题,即植物上的叶片排列。这个问题的特点之一是斐波那契数列1、2、3、5、8、13、21的自然出现,这在开普勒时代就已为人所知。因此,已经确定了数学可以发挥的作用. (更多关于斐波那契数列的信息可见"生活中的斐波那契数列" 里的条目3)

  图灵还提出,由于化学信号,动物身上的标记模式遵循数学规则。尽管最近生物学家的兴趣被重新唤起,这一观点争议仍然很大。利用他的理论,日本的研究人员在斑马鱼的图案中观察到了图灵所预测的变化。