来源:简书,作者:jerry区块链技术与思维
链接:https://www.jianshu.com/p/c07d83c4f3a1
网上有一张经典的图片来表达图灵机的构成,图如下:
这张图片什么意思?这么一个简单的机器/装置怎么会所有电子计算机的理论模型?
相信大家看到这张图后都有这样的疑问,下面笔者带来由浅入深去理解图灵机的组成。
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,它运算过程看作下列两种简单的动作:
-
在纸上写上或擦除某个符号;
-
把注意力从纸的一个位置移动到另一个位置;
逻辑结构上图灵机有四个部分组成:
-
一个无限长的存储带,带子有一个个连续的存储格子组成,每个格子可以存储一个数字或符号
-
一个读写头,读写头可以在存储带上左右移动,并可以读、修改存储格上的数字或符号
-
内部状态存储器,该存储器可以记录图灵机的当前状态,并且有一种特殊状态为停机状态
-
控制程序指令,指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作(左移还是右移),并改变状态存储器的值,令机器进入一个新的状态或保持状态不变。
当然这些只是理想的图灵机,因为现实中不存在无限长的存储带,更加图灵的理论这样的一台装置就能模拟人类所能进行的任何计算过程。是不是很神奇?我相信你肯定不相信,不过图灵是经过严格的数学证明,下面我们来看看图灵机的计算过程。
图灵机工作步骤
准备
-
存储带子上的格子初始话
-
设置内部状态存储器当前状态
-
读写头设置初始在存储带上所做的格子位置
-
准备好控制指令,即控制程序。
反复执行以下步骤,直到停机
-
读写头读出当前格子的数字或符号
-
根据当前状态和读到的字母或符号找到对应的控制指令
-
根据控制指令,执行以下三个动作
读写头在格子上擦除或写入一个数字或符号
变更状态到一个新状态
读写头向左或向右移动一格
估计你还是不明白,别急。看过《三体》的同学都知道三体人把地球人看做“虫子”,三体人的维度比地球三维世界高,就好像我们人类把看虫子一样。
下面,我们把虫子放到一个二维的世界中,以虫子为例,给大家来说明最简单的图灵机模型(注:该例子非原创)。
假设理想的情况一:
虫子所在二维纸带
在这个情况中格子的颜色是虫子的输入信息,集合为IN={黑色,白色},输出集合为 OUT= {前移一格,后移一格}
从开始位置开始,虫子会怎么移动呢?
假设理想的情况二
现实中虫子肯定不可能傻到无线循环,虫子会有饥饿、吃饱的感受,食物吃了后也会消失。因此我们在情况下中改进下模型。
在这种情况中,输入集合为IN={黑色,白色},输出集合为 OUT= {前移一格,后移一格,吃掉食物涂白,等待食物长出来涂黑},内部状态S={吃饱,饥饿}
二维纸带不变,从开始位置开始,虫子初始是饥饿状态,虫子会怎么移动呢?
-
第1格是黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
-
第1格为白色,虫子吃饱,虫子前移一格,到达第2格,虫子新状态为饥饿
-
第2格为黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
-
第2格为白色,虫子吃饱,虫子前移一格,到达第3格,虫子新状态为饥饿
-
第3格为黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
-
第3格为白色,虫子吃饱,虫子前移一格,到达第4格,虫子新状态为饥饿
-
第4格为白色,虫子饥饿,等待食物长出来涂黑,虫子新状态为吃饱
-
第4格为黑色,虫子吃饱,虫子后退一格,到达第3格,虫子新状态为饥饿
-
这时,第3格已经长出来食物,是黑色,因此流程和第5步的情况一样了
情况二,小虫的行为比情况以复杂了一些,但小虫最后仍然会落入无限循环当中。
到此,如果你已经彻底搞懂了二维虫子是怎么移动的,那么你已经明白了图灵机的工作原理了!因为从本质上讲,最后的小虫模型就是一个图灵机!
刚才用二维虫子说明了图灵机的工作原理,相信你的第一个反映就是,这样的模型太简单了!
他根本说明不了现实世界中的任何问题!下面,我就要试图说服你,图灵机这个模型是伟大的!
其实虫子的所有决策和行为都可以抽象成一个图灵机模型。
为什么可以做这种抽象呢?
其实可以把二维虫子的模型进行更多扩展,以和现实世界基本或完全一致。因为二维虫子模型是以一切都简化的前提开始的,所以它的确是太太简单了。
然而,我们可以把二维虫子的输入集合、输出行动集合、内部状态集合进行扩大,这个模型就一下子实用多了。
-
二维虫子完全可以处于一个三维的空间中而不是简简单单的纸带。
-
二维虫子的视力很好,它一下子能读到方圆500米的信息。
-
二维虫子也可以拥有其他的感觉器官,比如嗅觉、听觉等等,而这些改变都仅仅是扩大了输入集合的维数和范围,并没有其他更本质的改变。
-
二维虫子可能的输出集合也是异常的丰富,它不仅仅能移动自己,还可以尽情的改造它所在的自然界。
-
进一步的,二维虫子的内部状态可能非常的多,而且控制它行为的程序可能异常复杂
那么二维虫子会有什么本事呢?这就很难说了,因为随着小虫内部的状态数的增加,随着它所处环境的复杂度的增加,我们正在逐渐失去对二维虫子行为的预测能力。
但是所有这些改变仍然没有逃出图灵机的模型:
"输入集合、输出集合、内部状态、固定的程序指令!"
就是这四样东西抓住了二维虫子信息处理的根本。