图灵机
图灵机,又称确定型图灵机,是英国数学家阿兰·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。
图灵的基本思想
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:
- 在纸上写上或擦除某个符号;
- 把注意力从纸的一个位置移动到另一个位置;
而在每个阶段,人要决定下一步的动作,依赖于(a)此人当前所关注的纸上某个位置的符号和(b)此人当前思维的状态。
为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
- 一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号
表示空白。纸带上的格子从左到右依次被编号为0, 1, 2, ...,纸带的右端可以无限伸展。
- 一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
- 一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
- 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见停机问题。
注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。
图灵机的正式定义
一台图灵机是一个七元组,其中
都是有限集合,且满足
是状态集合;
是输入字母表,其中不包含特殊的空白符
;
为空白符;
是带字母表,其中
且
;
是转移函数,其中
表示读写头是向左移还是向右移;
是起始状态;
是接受状态。
是拒绝状态,且
。
图灵机将以如下方式运作:
开始的时候将输入符号串 从左到右依此填在纸带的第
号格子上, 其他格子保持空白(即填以空白符
)。
的读写头指向第0号格子,
处于状态
。 机器开始运行后,按照转移函数
所描述的规则进行计算。 例如,若当前机器的状态为
,读写头所指的格子中的符号为
, 设
, 则机器进入新状态
, 将读写头所指的格子中的符号改为
, 然后将读写头向左移动一个格子。 若在某一时刻,读写头所指的是第0号格子, 但根据转移函数它下一步将继续向左移,这时它停在原地不动。 换句话说,读写头始终不移出纸带的左边界。 若在某个时刻
根据转移函数进入了状态
, 则它立刻停机并接受输入的字符串; 若在某个时刻
根据转移函数进入了状态
, 则它立刻停机并拒绝输入的字符串。
注意,转移函数是一个部分函数, 换句话说对于某些
,
,
可能没有定义, 如果在运行中遇到下一个操作没有定义的情况, 机器将立刻停机。
通用图灵机
对于任意一个图灵机,因为它的描述是有限的,因此我们总可以用某种方式将其编码为字符串。 我们用表示图灵机
的编码。
我们可以构造出一个特殊的图灵机,它接受任意一个图灵机的编码
,然后模拟
的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。