fbpx
维基百科

图灵机

图灵机(英語:Turing machine),又称确定型图灵机,是英国数学家艾倫·图灵于1936年提出的一种將人的計算行為抽象化的数学逻辑机,其更抽象的意义为一种计算模型,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。

图灵机的艺术表示

图灵的基本思想

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

  • 在纸上写上或擦除某个符号;
  • 把注意力从纸的一处移动到另一处;

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

 
在某些模型中,纸带移动,而未用到的纸带真正是“空白”的。要进行的指令(q4)展示在扫描到方格之上(由Kleene(1952)p.375绘制)。
 
在某些模型中,读写头沿着固定的纸带移动。要进行的指令(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为0的。有阴影的方格,包括读写头扫描到的空白,标记了1,1,B的那些方格,和读写头符号,构成了系统状态。(由Minsky(1967)p.121绘制)

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

  1. 一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依次被编号为0, 1, 2, ...,纸带的右端可以无限伸展。
  2. 一个读写头HEAD。它可以在纸带上左右移动,能读出当前所指的格子上的符号,并能改变它。
  3. 一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态,按照以下顺序告知图灵机命令:
    • 1. 写入(替换)或擦除当前符号;
    • 2. 移动 HEAD, 'L'向左, 'R'向右或者'N'不移动;
    • 3. 保持当前状态或者转到另一状态。
  4. 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见停机问题

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

图灵机的正式定义

一台图灵机是一个七元有序组 ,其中 都是有限集合,且满足:

  1.  是非空有穷状态集合;
  2.  是非空有穷输入字母表,其中不包含特殊的空白符 
  3.  是非空有穷带字母表且  空白符,也是唯一允许出现无限次的字符;
  4.  是转移函数,其中 表示读写头是向左移还是向右移, - 表示不移动;
  5.  是起始状态;
  6.  是接受状态。
  7.  是拒绝状态,且 

图灵机 将以如下方式运作:

开始的时候将输入符号串   从左到右依此填在纸带的第 号格子上,其他格子保持空白(即填以空白符 )。  的读写头指向第0号格子,  处于状态 。机器开始运行后,按照转移函数 所描述的规则进行计算。例如,若当前机器的状态为 ,读写头所指的格子中的符号为 ,设 ,则机器进入新状态 ,将读写头所指的格子中的符号改为 ,然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第0号格子,但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 根据转移函数进入了状态 ,则它立刻停机并接受输入的字符串; 若在某个时刻 根据转移函数进入了状态 ,则它立刻停机并拒绝输入的字符串。

注意,转移函数 是一个部分函数,换句话说对于某些 ,  可能没有定义,如果在运行中遇到下一个操作没有定义的情况,机器将立刻停机。

图灵机的基本术语

 是一台图灵机,

  1.  带描述(tape description)是一个函数 ,其中 表示 的带上第 个格子中的符号;
  2.  格局(configuration)是一个三元组 ,其中 是当前的带描述, 是当前的状态, 是当前读写头所处的位置;
  3.  ,   的格局,设 ,若满足 

     

    以及

     

    则称 从格局  产生格局 ,记作 
  4.   的格局,若 则称 接受格局;若 则称 拒绝格局;接受格局和拒绝格局统称为停机格局

 是一台图灵机,将字符串   作为其输入,若存在格局序列 ,使得

  1.   在输入 上的起始格局,即 ,其中

     

  2.  ,其中 
  3.  是接受格局。

则称  接受字符串 ,且 称为图灵机 在输入 上的接受计算历史。同理,若 是拒绝格局,则称  拒绝 ,且 称为图灵机 在输入 上的拒绝计算历史 所接受的所有字符串的集合称为 语言,记作 

图灵机的例子

  . 比如做一個以1的個數表示數值的加法運算,在磁带上的数据是0000001110110000,就是3+2的意思。程序 如下:

0,0 -> 0,0R
0,1 -> 1,1R
1,0 -> 10,1R
1,1 -> 1,1R
10,0 -> 11,0L
10,1 -> 10,1R
11,0 -> E
11,1 -> 0,0S

第一行程序0,0->0,0R意思就是如果機器讀到0,就將其變成0,狀態變為0,讀寫頭向右移動一格. R就是向右移動一格,L就是向左移一格,E是錯誤,S是停機. xx,y -> aa,b中xx是當前狀態, y是當前格子的值, aa是程序下一步的狀態, b是當前格的修改值。

雖然這裡給出與上面不同形式的定義,但兩者是等價的,這裡的定義能完成的工作並不比上面的定義多。

步数 状态(执行前) 状态(执行后) 磁带(执行前) 磁带(执行后)
1 0 0 0000001110110000 0000001110110000
2 0 0 0000001110110000 0000001110110000
3 0 0 0000001110110000 0000001110110000
4 0 0 0000001110110000 0000001110110000
5 0 0 0000001110110000 0000001110110000
6 0 0 0000001110110000 0000001110110000
7 0 1 0000001110110000 0000001110110000
8 1 1 0000001110110000 0000001110110000
9 1 1 0000001110110000 0000001110110000
10 1 10 0000001110110000 0000001111110000
11 10 10 0000001111110000 0000001111110000
12 10 10 0000001111110000 0000001111110000
13 10 11 0000001111110000 0000001111110000
14 11 0 0000001111110000 0000001111100000

通用图灵机

对于任意一个图灵机,因为它的描述是有限的,因此我们总可以用某种方式将其编码为字符串。我们用 表示图灵机 的编码。

我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 的编码 ,然后模拟 的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机的计算模型其实就是这样一种通用图灵机,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。

图灵机的变体

图灵机有很多变种,但可以证明这些变种的计算能力都是等价的,即它们识别同样的语言类。证明两个计算模型  的计算能力等价的基本思想是:用  相互模拟,若 可模拟  可模拟 ,显然他们的计算能力等价。注意这里我们暂时不考虑计算的效率,只考虑计算的理论上“可行性”。

首先我们可以发现,改变图灵机的带字母表并不会改变其计算能力。例如我们可以限制图灵机的带字母表为 ,这并不会改变图灵机的计算能力,因为我们显然可以用带字母表为 的图灵机模拟带字母表为任意有限集合 的图灵机。

另一个要注意的是,如果我们允许图灵机的纸带两端都可以无限伸展,这并不能增加图灵机的计算能力,因为我们显然可以用只有纸带一端能无限伸展的图灵机来模拟这种纸带两端都可以无限伸展的图灵机。

如果我们允许图灵机的读写头在某一步保持原地不动,那也不会增加其计算能力,因为我们可以用向左移动一次再向右移动一次来代替在原地不动。

其它的常见图灵机变种包括:

图灵可计算性

其它等价的计算模型

除了图灵机以外,人们还发明了很多其它的计算模型。包括:

然而这些模型无一例外地都和图灵机的计算能力等价,因此邱奇图灵哥德尔 提出了著名的邱奇-图灵论题:一切直觉上能计算的函数都可用图灵机计算,反之亦然。

定理

参考文献

  • Turing, A., On Computable Numbers, With an Application to the Entscheidungsproblem(页面存档备份,存于互联网档案馆), Proceedings of the London Mathematical Society, Series 2, Volume 42, 1936; reprinted in M. David(ed.), The Undecidable, Hewlett, NY: Raven Press, 1965;
  • Michael Sipser, Introduction to the Theory of Computation, PWS Publishing, 1997. ISBN 0-534-94728-X

外部链接

  • Visual Turing, a Turing machine interactive simulator/IDE(页面存档备份,存于互联网档案馆)(free software for Windows)。
  • (java applet)。
  • C++ Simulator of a Nondeterministic and Deterministic Turing Machine(页面存档备份,存于互联网档案馆)(free software)。
  • Citations from CiteSeer(页面存档备份,存于互联网档案馆


图灵机, 此條目已列出參考文獻, 但因為沒有文內引註而使來源仍然不明, 2019年6月25日, 请加上合适的文內引註来改善这篇条目, 此條目需要补充更多来源, 2019年1月4日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 英語, turing, machine, 又称确定型, 是英国数学家艾倫, 图灵于1936年提出的一种將人的計. 此條目已列出參考文獻 但因為沒有文內引註而使來源仍然不明 2019年6月25日 请加上合适的文內引註来改善这篇条目 此條目需要补充更多来源 2019年1月4日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而移除 致使用者 请搜索一下条目的标题 来源搜索 图灵机 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 图灵机 英語 Turing machine 又称确定型图灵机 是英国数学家艾倫 图灵于1936年提出的一种將人的計算行為抽象化的数学逻辑机 其更抽象的意义为一种计算模型 可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器 图灵机的艺术表示 目录 1 图灵的基本思想 2 图灵机的正式定义 3 图灵机的基本术语 4 图灵机的例子 5 通用图灵机 6 图灵机的变体 7 图灵可计算性 8 其它等价的计算模型 9 定理 10 参考文献 11 外部链接图灵的基本思想 编辑图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程 他把这样的过程看作下列两种简单的动作 在纸上写上或擦除某个符号 把注意力从纸的一处移动到另一处 而在每个阶段 人要决定下一步的动作 依赖于 a 此人当前所关注的纸上某个位置的符号和 b 此人当前思维的状态 在某些模型中 纸带移动 而未用到的纸带真正是 空白 的 要进行的指令 q4 展示在扫描到方格之上 由Kleene 1952 p 375绘制 在某些模型中 读写头沿着固定的纸带移动 要进行的指令 q1 展示在读写头内 在这种模型中 空白 的纸带是全部为0的 有阴影的方格 包括读写头扫描到的空白 标记了1 1 B的那些方格 和读写头符号 构成了系统状态 由Minsky 1967 p 121绘制 为了模拟人的这种运算过程 图灵构造出一台假想的机器 该机器由以下几个部分组成 一条无限长的纸带TAPE 纸带被划分为一个接一个的小格子 每个格子上包含一个来自有限字母表的符号 字母表中有一个特殊的符号 displaystyle square 表示空白 纸带上的格子从左到右依次被编号为0 1 2 纸带的右端可以无限伸展 一个读写头HEAD 它可以在纸带上左右移动 能读出当前所指的格子上的符号 并能改变它 一套控制规则TABLE 它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作 并改变状态寄存器的值 令机器进入一个新的状态 按照以下顺序告知图灵机命令 1 写入 替换 或擦除当前符号 2 移动 HEAD L 向左 R 向右或者 N 不移动 3 保持当前状态或者转到另一状态 一个状态寄存器 它用来保存图灵机当前所处的状态 图灵机的所有可能状态的数目是有限的 并且有一个特殊的状态 称为停机状态 参见停机问题 注意这个机器的每一部分都是有限的 但它有一个潜在的无限长的纸带 因此这种机器只是一个理想的设备 图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程 图灵机的正式定义 编辑一台图灵机是一个七元有序组 Q S G d q 0 q a c c e p t q r e j e c t displaystyle Q Sigma Gamma delta q 0 q accept q reject 其中Q S G displaystyle Q Sigma Gamma 都是有限集合 且满足 Q displaystyle Q 是非空有穷状态集合 S displaystyle Sigma 是非空有穷输入字母表 其中不包含特殊的空白符 displaystyle square G displaystyle Gamma 是非空有穷带字母表且S G displaystyle Sigma subset Gamma G S displaystyle square in Gamma Sigma 为空白符 也是唯一允许出现无限次的字符 d Q G Q G L R displaystyle delta Q times Gamma to Q times Gamma times L R 是转移函数 其中L R displaystyle L R 表示读写头是向左移还是向右移 表示不移动 q 0 Q displaystyle q 0 in Q 是起始状态 q a c c e p t Q displaystyle q accept in Q 是接受状态 q r e j e c t Q displaystyle q reject in Q 是拒绝状态 且q r e j e c t q a c c e p t displaystyle q reject neq q accept 图灵机M Q S G d q 0 q a c c e p t q r e j e c t displaystyle M Q Sigma Gamma delta q 0 q accept q reject 将以如下方式运作 开始的时候将输入符号串 w w 0 w 1 w n 1 S displaystyle omega omega 0 omega 1 ldots omega n 1 in Sigma 从左到右依此填在纸带的第0 1 n 1 displaystyle 0 1 ldots n 1 号格子上 其他格子保持空白 即填以空白符 displaystyle square M displaystyle M 的读写头指向第0号格子 M displaystyle M 处于状态q 0 displaystyle q 0 机器开始运行后 按照转移函数d displaystyle delta 所描述的规则进行计算 例如 若当前机器的状态为q displaystyle q 读写头所指的格子中的符号为x displaystyle x 设d q x q x L displaystyle delta q x q x L 则机器进入新状态q displaystyle q 将读写头所指的格子中的符号改为x displaystyle x 然后将读写头向左移动一个格子 若在某一时刻 读写头所指的是第0号格子 但根据转移函数它下一步将继续向左移 这时它停在原地不动 换句话说 读写头始终不移出纸带的左边界 若在某个时刻M displaystyle M 根据转移函数进入了状态q a c c e p t displaystyle q accept 则它立刻停机并接受输入的字符串 若在某个时刻M displaystyle M 根据转移函数进入了状态q r e j e c t displaystyle q reject 则它立刻停机并拒绝输入的字符串 注意 转移函数d displaystyle delta 是一个部分函数 换句话说对于某些q displaystyle q x displaystyle x d q x displaystyle delta q x 可能没有定义 如果在运行中遇到下一个操作没有定义的情况 机器将立刻停机 图灵机的基本术语 编辑设M Q S G d q 0 q a c c e p t q r e j e c t displaystyle M Q Sigma Gamma delta q 0 q accept q reject 是一台图灵机 M displaystyle M 的带描述 tape description 是一个函数F N G displaystyle F mathbb N to Gamma 其中F i displaystyle F i 表示M displaystyle M 的带上第i displaystyle i 个格子中的符号 M displaystyle M 的格局 configuration 是一个三元组 F q e displaystyle F q e 其中F N G displaystyle F mathbb N to Gamma 是当前的带描述 q Q displaystyle q in Q 是当前的状态 e N displaystyle e in mathbb N 是当前读写头所处的位置 设C 1 F 1 q 1 e 1 displaystyle C 1 F 1 q 1 e 1 C 2 F 2 q 2 e 2 displaystyle C 2 F 2 q 2 e 2 是M displaystyle M 的格局 设d q 1 F 1 e 1 q x d displaystyle delta q 1 F 1 e 1 q x d 若满足q 2 q displaystyle q 2 q e 2 e 1 1 d L e 1 1 d R displaystyle e 2 begin cases e 1 1 amp d L e 1 1 amp d R end cases 以及F 2 i F 1 i i e 1 x i e 1 displaystyle F 2 i begin cases F 1 i amp i neq e 1 x amp i e 1 end cases 则称M displaystyle M 从格局C 1 displaystyle C 1 产生格局C 2 displaystyle C 2 记作C 1 M C 2 displaystyle C 1 to M C 2 设C F q e displaystyle C F q e 为M displaystyle M 的格局 若q q a c c e p t displaystyle q q accept 则称C displaystyle C 为接受格局 若q q r e j e c t displaystyle q q reject 则称C displaystyle C 为拒绝格局 接受格局和拒绝格局统称为停机格局 设M displaystyle M 是一台图灵机 将字符串 w w 0 w 1 w n 1 displaystyle omega omega 0 omega 1 ldots omega n 1 作为其输入 若存在格局序列C 1 C 2 C k displaystyle C 1 C 2 ldots C k 使得 C 1 displaystyle C 1 是M displaystyle M 在输入w displaystyle omega 上的起始格局 即C 1 F q 0 0 displaystyle C 1 F q 0 0 其中F 1 i w i 0 i n 1 otherwise displaystyle F 1 i begin cases omega i amp 0 leq i leq n 1 square amp mbox otherwise end cases C i M C i 1 displaystyle C i to M C i 1 其中i 1 2 k 1 displaystyle i 1 2 ldots k 1 C k displaystyle C k 是接受格局 则称M displaystyle M 接受字符串w displaystyle omega 且C 1 C 2 C k displaystyle C 1 C 2 ldots C k 称为图灵机M displaystyle M 在输入w displaystyle omega 上的接受计算历史 同理 若C k displaystyle C k 是拒绝格局 则称M displaystyle M 拒绝w displaystyle omega 且C 1 C 2 C k displaystyle C 1 C 2 ldots C k 称为图灵机M displaystyle M 在输入w displaystyle omega 上的拒绝计算历史 M displaystyle M 所接受的所有字符串的集合称为M displaystyle M 的语言 记作L M displaystyle L M 图灵机的例子 编辑設M 0 1 10 11 0 1 0 1 d 0 displaystyle M 0 1 10 11 0 1 0 1 square delta 0 和d 0 1 10 11 0 1 0 1 10 11 0 1 R L E S displaystyle delta 0 1 10 11 times 0 1 to 0 1 10 11 times 0 1 times R L E S 比如做一個以1的個數表示數值的加法運算 在磁带上的数据是0000001110110000 就是3 2的意思 程序d displaystyle delta 如下 0 0 gt 0 0R 0 1 gt 1 1R 1 0 gt 10 1R 1 1 gt 1 1R 10 0 gt 11 0L 10 1 gt 10 1R 11 0 gt E 11 1 gt 0 0S第一行程序0 0 gt 0 0R意思就是如果機器讀到0 就將其變成0 狀態變為0 讀寫頭向右移動一格 R就是向右移動一格 L就是向左移一格 E是錯誤 S是停機 xx y gt aa b中xx是當前狀態 y是當前格子的值 aa是程序下一步的狀態 b是當前格的修改值 雖然這裡給出與上面不同形式的定義 但兩者是等價的 這裡的定義能完成的工作並不比上面的定義多 步数 状态 执行前 状态 执行后 磁带 执行前 磁带 执行后 1 0 0 0000001110110000 00000011101100002 0 0 0000001110110000 00000011101100003 0 0 0000001110110000 00000011101100004 0 0 0000001110110000 00000011101100005 0 0 0000001110110000 00000011101100006 0 0 0000001110110000 00000011101100007 0 1 0000001110110000 00000011101100008 1 1 0000001110110000 00000011101100009 1 1 0000001110110000 000000111011000010 1 10 0000001110110000 000000111111000011 10 10 0000001111110000 000000111111000012 10 10 0000001111110000 000000111111000013 10 11 0000001111110000 000000111111000014 11 0 0000001111110000 0000001111100000通用图灵机 编辑主条目 通用图灵机 对于任意一个图灵机 因为它的描述是有限的 因此我们总可以用某种方式将其编码为字符串 我们用 M displaystyle langle M rangle 表示图灵机M displaystyle M 的编码 我们可以构造出一个特殊的图灵机 它接受任意一个图灵机M displaystyle M 的编码 M displaystyle langle M rangle 然后模拟M displaystyle M 的运作 这样的图灵机称为通用图灵机 Universal Turing Machine 现代电子计算机的计算模型其实就是这样一种通用图灵机 它能接受一段描述其他图灵机的程序 并运行程序实现该程序所描述的算法 图灵机的变体 编辑图灵机有很多变种 但可以证明这些变种的计算能力都是等价的 即它们识别同样的语言类 证明两个计算模型A displaystyle A 和B displaystyle B 的计算能力等价的基本思想是 用A displaystyle A 和B displaystyle B 相互模拟 若A displaystyle A 可模拟B displaystyle B 且B displaystyle B 可模拟A displaystyle A 显然他们的计算能力等价 注意这里我们暂时不考虑计算的效率 只考虑计算的理论上 可行性 首先我们可以发现 改变图灵机的带字母表并不会改变其计算能力 例如我们可以限制图灵机的带字母表为 0 1 displaystyle 0 1 这并不会改变图灵机的计算能力 因为我们显然可以用带字母表为 0 1 displaystyle 0 1 的图灵机模拟带字母表为任意有限集合G displaystyle Gamma 的图灵机 另一个要注意的是 如果我们允许图灵机的纸带两端都可以无限伸展 这并不能增加图灵机的计算能力 因为我们显然可以用只有纸带一端能无限伸展的图灵机来模拟这种纸带两端都可以无限伸展的图灵机 如果我们允许图灵机的读写头在某一步保持原地不动 那也不会增加其计算能力 因为我们可以用向左移动一次再向右移动一次来代替在原地不动 其它的常见图灵机变种包括 多带图灵机 非确定型图灵机 交替式图灵机 枚举器图灵可计算性 编辑图灵可识别语言 图灵可判定语言 递归可枚举语言 可计算函数 递归函数 停机问题 可判定性 不可判定性 不可解度其它等价的计算模型 编辑除了图灵机以外 人们还发明了很多其它的计算模型 包括 寄存器机 递归函数 l演算 生命游戏 马尔可夫算法然而这些模型无一例外地都和图灵机的计算能力等价 因此邱奇 图灵和哥德尔 提出了著名的邱奇 图灵论题 一切直觉上能计算的函数都可用图灵机计算 反之亦然 定理 编辑克莱尼 波斯特定理 弗里德堡 穆奇尼克定理 波斯纳 罗宾逊定理 跳躍逆轉定理参考文献 编辑Turing A On Computable Numbers With an Application to the Entscheidungsproblem 页面存档备份 存于互联网档案馆 Proceedings of the London Mathematical Society Series 2 Volume 42 1936 reprinted in M David ed The Undecidable Hewlett NY Raven Press 1965 Michael Sipser Introduction to the Theory of Computation PWS Publishing 1997 ISBN 0 534 94728 X外部链接 编辑Visual Turing a Turing machine interactive simulator IDE 页面存档备份 存于互联网档案馆 free software for Windows Suzanne Brittons Turing Machine Simulator java applet C Simulator of a Nondeterministic and Deterministic Turing Machine 页面存档备份 存于互联网档案馆 free software Citations from CiteSeer 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 图灵机 amp oldid 74576254, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。