什么是图灵机

如题所述

首先,什么叫做图灵机识别语言?并不是把一个文件输入到图灵机里就叫做图灵机识别这种语言。大家都知道图灵机是一种计算机器,输入一个字符串,可能进入接受状态、拒绝状态或者永不停机。 设M是一台图灵机 ,若在输入串S 上 M 运行后可进入接受状态并停机,则称 M 接受串S。M 所接受的所有字符串的集合称为M所识别的语言,简称M的语言,记作 L(M)。 请注意,语言L如果是图灵机M所识别的语言,则L中的字符串输入M,M将停机并进入接受状态。如果不是L中的字符串输入M,会是什么结果?只能有两种情况:M停机并进入拒绝状态,或者M不停机。 用图灵机解决的问题都是计算问题,就是一个有已知求未知的问题。你觉得数学中什么东西正是这个作用?是函数,简单的说就是y=f(x)。图灵机正好与可计算函数等价。现在就用这个例子说明求解y=f(x)是如何等价于一种图灵机识别的语言的: 一种语言L={<x,y>|y=f(x)},如果图灵机识别这种语言,就必须计算f(x),如果y与f(x)相等,就停机进入接受状态。看见了吧,实际上识别语言L与计算f(x)是一回事。 对于排序问题b=sort(a),求解这个问题相当于图灵机识别这种语言: L={<x,y>|y=sort(x) and x是数组 and y是数组}。参考资料: http://e-kunming.oicp.net/科技文献资料/图灵机/图灵可识别语言.htm
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-05
1936年,阿兰·图灵提出了一种抽象的计算模型 ── 图灵机 (Turing Machine)。图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:

在纸上写上或擦除某个符号;

把注意力从纸的一个位置移动到另一个位置;

而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:

一条无限长的纸带。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0, 1, 2, ... ,纸带的右端可以无限伸展。

一个读写头。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。

一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。

一套控制规则。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。

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

图灵机停机问题(The Halting Problem)的不可判定性
图灵机停机问题: 能否给出一个判断任意一个图灵机是否停机的一般方法? 答案是NO.
这个问题实际上是问: 是否存在一台"万能的"图灵机 H, 把任意一台图灵机 M 输入给 H, 它都能判定 M 最终是否停机, 输出一个明确的 "yes" 或 "no" 的答案? 可以利用反证法来证明这样的 H 不可能存在. 假定存在一个能够判定任意一台图灵机是否停机的万能图灵机 H(M), 如果 M 最终停机, H 输出 "halt"; 如果 M 不停机, H 输出 "loop". 我们把 H 当作子程序, 构造如下程序 P:
function P(M) {
if (H(M)=="loop") return "halt";
else if (H(M)=="halt") while(true); // loop forever
}
因为 P 本身也是一台图灵机, 可以表示为一个字符串, 所以我们可以把 P 输入给它自己, 然后问 P(P) 是否停机. 按照程序 P 的流程, 如果 P 不停机无限循环, 那么它就停机, 输出"halt"; 如果 P 停机, 那么它就无限循环, 不停机; 这样无论如何我们都将得到一个矛盾, 所以假设前提不成立, 即不存在这样的 H. 或者说, 图灵机停机问题是不可判定的(undecidable)。本回答被网友采纳
第2个回答  2021-01-13

相似回答