简述什么是图灵机_什么是图灵机

内容提要

什么是图灵机?

一个简单的例子

一个简单的程序

机器状态

有限状态机

什么是图灵机?

图灵机是一个虚拟的机器,由数学家阿兰·图灵1936年提出来的,尽管这个机器很简单,但它可以模拟计算机的任何算法,无论这个算法有多复杂。

上面是一个图灵机的简单示意图。假设有一个无穷的纸带,纸带就像一个存储器一样。纸带上面的每个格子是空白的,但是可以读写数据,在这个例子里,机器只能写0,1,或者什么也不写。这个机器就是包含3个信号的图灵机。

这个机器有一个探头,这个头可以移动到每一个空格上,用这个头,机器可以有3个基本操作。

1、读空格的数据

2、编辑数据,可以是写一个新的数据,可以是擦除数据

3、移动纸带向左或者向右,这样机器可以读或者编辑旁边的格子

一个简单的例子

首先,黑色加粗部分代表探头所指的部分,我们写一个1:

然后,我们把纸带向左移动一格:

写1到新的格子里面

然后把带子向左移动一格,并写一个0

一个简单的程序

现在纸带上面被写入了110,现在我们尝试着把1转换成0,0转换成1。这叫位反转。因为1和0是字节中的比特,可以通过如下指令让图灵机完成操作。利用机器的读的能力来自己决定它下一个操作,这个指令可以写一个简单程序。

指令如下

信息读取 写指令 移动指令

空 不写 不动‘

0 1 纸带移动到右边

1 0 纸带移动到右边

机器首先会读取头下面的数据,写一个新数据,然后根据指令移动纸带向左或者向右,然后继续重复重复这个过程。

让我们看看这个程序如何操作这个纸带的,首先探头放在0的位置:

然后我们把数据0改为1,并把纸带往右边移动一格

现在探头读到的是1,所以我们写0并把纸带向右移动一格

同样的,读到数据1,探头把它改写为0。

最后读到一个空格,此时这个探头不写任何数据,纸带也不动,但是探头会一直不停的重复读这个格子里的数据信息。

事实上,这个程序是不完整的。这个机器会一直重复执行命令,那应该如何停止呢?那么我们需要加一个机器状态指令。

机器状态

状态 数据 写 移动 下一个状态

0 空白 不写 不动 停止状态

0 1 纸带向右 状态0

1 0 纸带向右 状态0

我们把之前的指令分配给机器的状态,这样,当机器在某个具体的状态的时候,它就会执行相应的指令。每一个指令完成后,我们仍然让机器进入下一个状态。在这个例子中,机器会一直指向状态0,然后重复读—写—移动的操作,当读到一个空白信息时,机器会直接进入停止状态,程序结束运行。

有限状态机

尽管看起来有点傻,但是我们现在再给里面加一个状态,把现在的001变回成110。

下面的程序斜体字部分是更改过的语言。现在这个图灵机有2个状态,3个信号。是一个有限状态机。

状态 数据 写 移动 下一个状态

0 空白 写空白 纸带向左 状态1

0 1 纸带向右 状态0

1 0 纸带向右 状态0

1 空白 写空白 纸带向右 停止状态

0 1 纸带向左 状态1

1 0 纸带向左 状态1

上面这个程序中,当读到一个空白信息的时候,我们让纸带向左而不是停止,这样我们就可以继续做位反转操作。

下面,我们把字节又反转回来,纸带向左。

最后,读到一个空白,纸带向右,程序停止。

只要给程序添加足够多的状态,我们可以让图灵机有更多的功能,理论上可以实现现代计算机能做的一切复杂算法。

本文由鲶鱼编译自Computer laboratory of university of Cambridge

如需转载,请联系鲶鱼

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值