图灵机是图灵机理论中提出的理想模型,其可以实现任意复杂的计算。
英国数学家艾伦·图灵在1936年提出了「图灵机」的理论。「图灵机」设想有一条无限长的纸条,纸条上有一个个方格,每个方格可以存储一个符号,纸条可以向左或向右运动。
图灵机可以做下面三个基本的操作:
下面我们通过一个小例子来了解下图灵机到底是如何进行计算的。这个例子比较简单,我们将在空白的纸带条上打印1 1 0
这三个数字。
首先,我们向指针头指向的方框中写入数字1:
接着,我们让纸带向左移动一个方框:
现在,我们再往指针头指向的方框写入数字1:
接着,我们继续让纸带向左移动一个方框,并写入数字0:
这样我们就完成了一个简单的图灵机操作。
我们来尝试一个稍微复杂点的操作,我们尝试将1 1 0
做一个异或操作,即将1 1 0
变成0 0 1
。要图灵机完成计算,就类似于向图灵机输入以下操作指令,这些指令组成了一个小程序。
读到的符号 | 写入指令 | 移动指令 |
---|---|---|
空 | - | - |
0 | 写入1 | 向右移动纸带 |
1 | 写入0 | 向右移动纸带 |
我们假设图灵机纸带现在的状态如下图所示:
现在读取到的符号是0,按照操作指令,我们应该往方框写入1并向右移动一个方框:
现在读取到的符号是1,按照操作指令,我们应该往方框写入0并向右移动一个方框:
类似地,现在读取到的符号是1,我们重复相同的操作。
最后,我们读取到了一个空白字符,图灵机不做任何操作。
上面我们使用了图灵机成功完成了异或操作,理论上来讲我们也可以完成加法、减法、乘法、除法操作,只不过是实现的步骤(指令)复杂些而已。下面这个网站是一个图灵机的在线模拟器,其实现了一些基本运算,比如:加法、减法等,有兴趣的可以自己去试试看。
Online Turing Machine Simulator
让我们尝试这样的思考历程:
「图灵机」理论通过假设模型证明了任意复杂的计算都能通过一个个简单的操作完成,从而从理论上证明了「无限复杂计算」的可能性,直接给计算机的诞生提供了理论基础。
从这样的思考历程来看,图灵机的出现为计算机的诞生奠定了理论基础,这就是图灵机诞生的意义。