字词转换是中文维基的一项自动转换,目的是通过计算机程序自动消除繁简、地区词等不同用字模式的差异,以达到阅读方便。
字词转换包括全局转换和手动转换,本说明所使用的标题转换和全文转换技术,都属于手动转换。
图灵机(英语:Turing Machine,又称确定型图灵机)是英国数学家阿兰·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。
目录 |
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:
而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。
q4)展示在扫描到方格之上(由 Kleene (1952) p.375 绘制)。q1)展示在读写头内。在这种模型中“空白”的纸带是全部为 0 的。有阴影的方格,包括读写头扫描到的空白,标记了 1,1,B 的那些方格,和读写头符号,构成了系统状态。(由 Minsky (1967) p.121 绘制)。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
表示空白。纸带上的格子从左到右依此被编号为 0, 1, 2, ... ,纸带的右端可以无限伸展。注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。
一台图灵机是一个七元组 (Q,Σ,Γ,δ,q0,qaccept,qreject),其中 Q,Σ,Γ 都是有限集合,且满足
;
且
;
是转移函数,其中L,R 表示读写头是向左移还是向右移;
是起始状态;
是接受状态。
是拒绝状态,且
。图灵机 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) 可能没有定义, 如果在运行中遇到下一个操作没有定义的情况, 机器将立刻停机。
设 M = (Q,Σ,Γ,δ,q0,qaccept,qreject) 是一台图灵机,
,其中 F(i) 表示 M 的带上第 i 个格子中的符号;
是当前的带描述,
是当前的状态,
是当前读写头所处的位置;以及
则称 M 从格局C1 产生格局C2,记作
。设 M 是一台图灵机,将字符串
作为其输入,若存在格局序列
,使得
,其中
;则称 M 接受字符串 ω,且
称为图灵机 M 在输入 ω 上的接受计算历史。同理,若 Ck 是拒绝格局,则称 M 拒绝 ω,且
称为图灵机 M 在输入 ω 上的拒绝计算历史。M 所接受的所有字符串的集合称为 M 的语言,记作 L(M)。
[TODO: 这里需要补充几个例子] 设M = ({0,1,10,11},{1},{0,1},δ,0,,)
和
. 比如做一个以 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,bb 中 xx是当前状态, y是当前格子的值, aa是程序下一步的状态, b是当前格的修改值.
虽然这里给出与上面不同形式的定义, 但两者是等价的, 这里的定义并不比上面的定义能完成更多的工作.
步數 狀態 磁帶 步數 狀態 磁帶
- - - - - - - - - - - - - - - - -
1 0 0000001110110000 9 1 0000001110110000
2 0 0000001110110000 10 1 0000001110110000
3 0 0000001110110000 11 10 0000001111110000
4 0 0000001110110000 12 10 0000001111110000
5 0 0000001110110000 13 10 0000001111110000
6 0 0000001110110000 14 11 0000001111110000
7 0 0000001110110000 15 0 0000001111100000 (停機)
8 1 0000001110110000 -- 停機 --
对于任意一个图灵机,因为它的描述是有限的,因此我们总可以用某种方式将其编码为字符串。 我们用
表示图灵机 M 的编码。
我们可以构造出一个特殊的图灵机,它接受任意一个图灵机 M 的编码
,然后模拟 M 的运作,这样的图灵机称为通用图灵机(Universal Turing Machine)。现代电子计算机其实就是这样一种通用图灵机,它能接受一段描述其他图灵机的程序,并运行程序实现该程序所描述的算法。
图灵机有很多变种,但可以证明这些变种的计算能力都是等价的,即它们识别同样的语言类。 证明两个计算模型 A 和 B 的计算能力等价的基本思想是: 用 A 和 B 相互模拟, 若 A 可模拟 B 且 B 可模拟 A, 显然他们的计算能力等价。注意这里我们暂时不考虑计算的效率,只考虑计算的理论上“可行性”。
首先我们可以发现,改变图灵机的带字母表并不会改变其计算能力。例如我们可以限制图灵机 的带字母表为 {0,1},这并不会改变图灵机的计算能力,因为我们显然可以用带字母表为 {0,1} 的图灵机模拟带字母表为任意有限集合 Γ 的图灵机。
另一个要注意的是,如果我们允许图灵机的纸带两端都可以无限伸展,这并不能增加图灵机的计 算能力,因为我们显然可以用只有纸带一端能无限伸展的图灵机来模拟这种纸带两端都可以无限 伸展的图灵机。
如果我们允许图灵机的读写头在某一步保持原地不动,那也不会增加其计算能力,因为我们可以用 向左移动一次再向右移动一次来代替在原地不动。
其它的常见图灵机变种包括:
除了图灵机以外,人们还发明了很多其它的计算模型。包括:
然而这些模型无一例外地都和图灵机的计算能力等价,因此邱奇,图灵和哥德尔 提出了著名的邱奇-图灵论题:一切直觉上能行可计算的函数都可用图灵机计算,反之亦然。
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History