1935年,22岁的图灵写出了《论可计算数及其在判定问题上的应用》,并从数学和逻辑上定义了著名的“图灵机”。今天所有的计算机,包括全世界正在设计的新的计算机,从解决问题的能力来讲,都没有超出图灵机的范畴。
图灵为什么会提出这种数学模型,是因为他受到了两个人的影响。
在1900年的巴黎国际数学大会上,数学大师希尔伯特提出23个重要的、根本性的数学问题,其中第十个是“随便给一个不确定的方程,能够通过有限步的运算,判断它是否存在整数解?”如果这个问题的答案是否定的,那么意味着有些问题时无解的。正是因为对这个问题的深刻认识,让图灵认识到计算机的能力存在极限。后来在1970年,前苏联伟大的数学家马季亚谢维奇从数学上解决了希尔伯特的那个问题。也就是说,的的确确有很多数学问题,根本没有答案,而且这样的问题比有答案的问题还要多得多。
1936年,图灵应邀到美国普林斯顿高级研究院学习,在他读了冯∙诺依曼的《量子力学的数学原理》一书后,意识到计算来自于确定性的机械的运动。同时,图灵猜测人的意识来自于测不准原理,这是宇宙本身的规律。图灵从此得出结论,计算是确定的,而意识可以是不定的,两者不可能划等号。
正是长在数学大师希尔伯特和冯·诺依曼的影响下,图灵将精力全力放在确定的可计算问题上,这相当于给其他人和后人指明了一条计算机的发展方向,以避免人们走弯路。而他在《论可计算数及其在判定问题上的应用》论文中提出的可实施自动计算的思维机器,便是对这类问题的一种通用解法,其由以下几部分组成:
1.一条无限长的纸带,它被划分为一个接一个的小格子,每一个格子有一个编号,比如从左到右依次为0, 1, 2. …,其实我们今天在计算机中所说的地址,就可以理解为这种编号的一种实现方式。注意:这个纸带可以无限往右延伸,它相当于我们做数学运算的纸,但这种运算纸的数量可以是无限的,而计算机的存储容量是有限的。
2.一个可以左右自由移动的读写头,它能读取当前所指格子中的符号,并能改变它们。这个读写头,就相当于笔和橡皮。
3.一套控制规则,它根据当前机器所处的状态和当前格子中的内容,确定读写头下一步的动作。这套规则就相当于做题的法则,比如我们做珠算时使用的“三下五除二”这样的口诀,就是运算规则。
4.一组状态寄存器,它用来保存图灵机当前所处的状态。我们在纸上计算数学题时,经常要问自己,算到哪儿了?寄存器所记录的就是这样的状态。当它遇到一个特殊状态,即所谓的停机状态时,整个运算就结束了。
图灵机的操作过程如下:
1.一开始,将输入符号串从左到右依次填入纸带的前n个格子中(其他格子保持空白)。
2.读写头指向第0号格子,图灵机处于初始状态q0。
3.机器开始运行后,按照转移函数所描述的规则进行计算。
例如,假定当前机器的状态为q,读写头所指的格子中的符号为x,根据转移函数δ(q, x),我们得到其函数值(q', x',左移/右移)。于是,接下来进入q'状态,当前格子的内容改为x',然后将指针左移或右移。这样图灵机就进入了一个新的状态。如果q'是终止状态集合F中的一个元素,则图灵机停机,如果正好是成功状态,则运算完成,否则说明运算不下去。如果运算到某一步,遇到了没有定义转移函数的情况,也说明运算失败,立即停机。
这完全是一台思维机器,图灵当时并不关系具体的物理实现,甚至很排斥和别人讨论这些“细枝末节”的问题。这是因为他在用逻辑模拟大脑的思考过程,只要这个逻辑过程被证明是合理且完整的,那么后面可以对其进行无限扩展。
图灵这种高屋建瓴式的“顶层设计”对计算机日后的高速发展奠定了基本的理论基础。当然,被誉为计算机科学之父和人工智能之父的他还要很多杰出成就,不过他的人生却过得并不顺利——过早的陨落,对整个人类都是一种损失。