图灵机

一个抽象的机器
收藏
0 有用+1
0
本词条由 《中国科技信息》杂志社 参与编辑并审核,经 科普中国·科学百科 认证 。
图灵机,又称图灵计算机,是一个抽象的机器。它由 英国 数学家艾伦・麦席森・ 图灵 (1912―-1954年)于1936年提出的一种抽象的计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。 [2] 图灵机有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个读写头在纸带上移来移去。读写头有一组内部状态,还有一些固定的程序。在每个时刻,读写头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。 [1]
中文名
图灵机
外文名
Turing Machine
提出时间
1936年
别    名
图灵计算

基本思想

图灵机
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:
1、在纸上写上或擦除某个符号;
2、读写头从纸的一个位置移动到另一个位置。
而在每个阶段,人要决定下一步的动作,依赖于 (1) 此人当前所关注的纸上某个位置的符号和(2) 此人当前思维的状态。
为了模拟人的运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
1、一条无限长的纸带 TAPE。纸带被划分为一个个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。
2、一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
3、一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态 寄存器 的值,令机器进入一个新的状态。
4、一个 状态寄存器 。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见 停机问题
注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。
在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为 0 的。有阴影的方格,包括读写头扫描到的空白,标记了 1,1,B 的那些方格,和读写头符号,构成了系统状态。(由 Minsky (1967) p.121 绘制)。 [1]

工作原理

1、Q 是状态集合;
2、Σ 是输入字母表,其中不包含特殊的空白符;
3、Γ 是带字母表,其中 Q∈Γ且Σ∈Γ ;
4、 δ:Q×Γ→Q×Γ×{L,R}是转移函数,其中L,R 表示读写头是向左移还是向右移;
5、q0∈Q是起始状态;
6、 qaccept是接受状态。
7、qreject是拒绝状态,且qreject≠qaccept。
图灵机 M = (Q,Σ,Γ,δ,q0,qaccept,qreject) 将以如下方式运作:
开始的时候将输入符号串从左到右依次填在纸带的格子上, 其他格子保持空白(即填以空白符)。M 的读写头指向第 0 号格子, M 处于状态 q0。机器开始运行后,按照转移函数 δ 所描述的规则进行计算。例如,若当前机器的状态为 q,读写头所指的格子中的符号为 x,设 δ(q,x)= (q',x',L),则机器进入新状态 q',将读写头所指的格子中的符号改为 x',然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第 0 号格子,但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 M 根据转移函数进入了状态 qaccept, 则它立刻停机并接受输入的字符串; 若在某个时刻 M 根据转移函数进入了状态 qreject, 则它立刻停机并拒绝输入的字符串。
注意,转移函数 δ 是一个部分函数, 换句话说对于某些 q,x, δ(q,x)可能没有定义, 如果在运行中遇到下一个操作没有定义的情况, 机器将立刻停机。 [2]

通用图灵机

我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 M 的编码 ,然后模拟 M 的运作,这样的图灵机称为 通用图灵机 (Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机的模拟,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的 算法 。但要注意,它只是模拟,因为现实中的计算机的存储都是有限的,所以无法跨越 有限状态机 的界限。经典图灵机及其许多变形识别语言的能力都是相同的,正因为如此,图灵机可以作为计算的一般模型。另外,通用图灵机 (可编程图灵机) 是存在的,通用图灵机可以模拟任意一个图灵机,这也是将图灵机作为现代计算机的形式模型的根本原因。 [3]

停机问题

停机问题 (halting problem)是逻辑数学的焦点,是 第三次数学危机 的解决方案。其本质问题是:给定一个图灵机和一个任意语言集合S,是否会最终停机于每一个s∈S。其意义类似于可确定语言。显然任意有限S是可判定性的,可数的(countable)S也是可停机的。
通俗地说,停机问题就是判断任意一个程序是否会在有限的时间之内结束运行的问题。如果这个问题可以在有限的时间之内解决,则可以有一个程序判断其本身是否会停机并做出相反的行为。这时候显然不管停机问题的结果是什么都不会符合要求,所以这是一个不可解的问题。
停机问题的本质是 一阶逻辑 的不自恰性和不完备性。类似的命题有 理发师悖论 全能悖论 等。 [4]

图灵机的变体