1.2.2 图灵机
图灵机(见图1-4)是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移动。机器头有一组内部状态,还有一些固定程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
图1-4 图灵机
1.图灵机的具体内容
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作两种简单的动作:在纸上写上或擦除某个符号;把注意力从纸的一个位置移动到另一个位置。而在每个阶段,人要决定下一步的动作,依赖于此人当前所关注的纸上某个位置的符号和此人当前的思维状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成。
1)一条无限长的纸带
纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号,表示空白。纸带上的格子从左到右依次被编号为0,1,2,...,纸带的右端可以无限伸展。
2)一个读写头
该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
3)一套控制规则
它根据当前机器所处的状态及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
4)一个状态寄存器
状态寄存器(见图1-5)用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。
图1-5 状态寄存器
注意:这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。
在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中空白的纸带是全部为0的。有阴影的方格,包括读写头扫描到的空白,标记了1,1,B的那些方格,和读写头符号一起构成了系统状态(见图1-6,由Minsky (1967) p.121绘制)。
图1-6 系统状态
2.图灵机诞生的意义
图灵提出图灵机的模型并不是为了同时给出计算机的设计,图灵机的模型还有很多意义,它证明了通用计算理论,肯定了计算机实现的可能性,同时它给出了计算机应有的主要架构。此外,图灵机模型引入了读写、算法与程序语言的概念,极大地突破了过去的计算机器的设计理念;并且图灵机模型理论是计算学科最核心的理论,因为计算机的极限计算能力就是通用图灵机的计算能力,很多问题可以转化到图灵机这个简单的模型来考虑。
通用图灵机向人们展示这样一个过程:程序及其输入可以先保存到存储带上,图灵机就按程序一步一步运行直到给出结果,结果也保存在存储带上。更重要的是,这隐约可以看到现代计算机的主要构成,尤其是冯・诺依曼理论的主要构成。