量子计算机:穿越未来世界
上QQ阅读APP看书,第一时间看更新

2.2 所有计算机的同一祖宗——图灵机

艾伦·图灵是第一个提出制造一种简单的计算机想法的人。图灵机的操作仅局限于读写磁带上的符号,将磁带移向左边或右边来一次读取一个符号。这个发明常被认为是计算机时代的开端。

实际上,“可计算的”一词的定义是一个可以由图灵机来解决的问题。图灵机还在翻译和破解用恩尼格码密码机写码的德国信息方面起着很大作用。

前面提到过,艾伦·图灵写了一篇名为《论可计算书机器判定问题上的应用》的论文,这就是艾伦·图灵享誉世界很重要的论文之一。可能当时连他也不会想到,这篇文章中所提到的概念最终使他从数学和逻辑学系统中开辟出一个全新的分支——计算机。

1. 图灵机的概念

接下来介绍一下图灵机的概念(值得注意的是,图灵机只是一个概念,并不是一个实体机器)。

图灵机的基本思想如图2-3所示,图灵机由一条无限长的纸带(tape)、读写头(head)、一套控制读写头移动规则的规则表(table)和一个状态寄存器(register)组成。

艾伦·图灵的基本思想是用机器模拟人们用纸和笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作。

(1)在纸上写上或擦除某个符号。

(2)把注意力从纸的一个位置移到另一个位置。

而在每个阶段,人要决定下一步的动作,依赖于:①此人当前所关注的纸上某个位置的符号;②此人当前思维的状态。

2. 图灵机的运算过程

为了模拟人的这种运算过程,艾伦·图灵构造出一台假想的机器,该机器由以下几个部分组成。

(1)一条无限长的纸带,如图2-4所示。

图2-3 图灵机的基本思想

图2-4 图灵机的艺术表示

纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号表示空白。纸带上的格子从左到右依此被编号为0、1、2等,纸带的右端可以无限伸展。

(2)一个读写头。

读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。

(3)一套控制规则表。

控制规则根据当前机器所处的状态以及当前读写头所指的格子上的符号确定读写头下一步的动作,并改变状态寄存器中的值,令机器进入一个新的状态。

(4)一个状态寄存器。

状态寄存器用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。

注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此,这种机器只是一个理想的设备。艾伦·图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。

图2-5中所示纸带被分为无限个格子,可记录任何字母、二进制数字(0,1)及空白。每个格子里代表了图灵机的输入和输出信息,空白则表示没有任何信息。下方三角为读写头,表示当前读写(输入输出)的位置。读写头可向左右移动,每次移动一个格。

图2-5 图灵机的结构

在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带全部为0。有阴影的方格,包括读写头扫描到的空白,标记了“1,1,B”的那些方格,以及读写头符号,构成了系统状态。

其移动方向由当下读写头所指的输入和规则表决定(规则表其实就是当时控制计算机的程序)。读写头首先记录下当下位置的状态(q1)并存入状态寄存器,然后根据当下输入对比程序中的要求进行左右移动或停留在当下位置,最后根据程序输出字母或数字,修改新位置的数字或字母。每次工作图灵机的读写头都会从起始位置开始,由规则表和输入控制其移动到不同位置,并最终在程序结束时停留在空白格里。

3. 图灵机的意义

细心的读者会发现,图灵机的整个构想已经满足现代计算机所需要的所有基本元素,包括程序、输入输出和存储器、如图2-6所示。

图2-6 图灵机的构想满足了现代计算机所有基本元素

这也是为什么说图灵机奠定了现代计算机发展的基础。因为现在计算机能做的一切事情图灵机都可以做到(图灵机的具体工作示例会在后面慢慢提到)。