例如,如果机器处于状态A并读取一个值为0的数据,那么我们会在上图红色框中(1、L、D)查找以确定接下来的动作。在这种情况下,我们会写入一个值为1的数据,向左移动,并将状态切换到D。
然后,我们需要了解两件关于图灵机的事情。首先,Church-Turing论文指出,任何计算(即应用于某些输入以产生某些输出的任何有限步骤序列)都等价于某个图灵机的操作。这意味着,我们可以把所有的计算,所有的算法都看作是图灵机,无论是Python函数,C 程序,还是你的电脑正在执行的任何事情。
其次,图灵证明了不存在一种算法,能接受任何状态表和任何输入纸带作为输入,并判定机器是否会在该纸带上停止。这样的问题是不可判定的。
没有通用的方式可以简单地预判一个计算是否会终止,有时必须运行它并等待,而且可能会永远地等下去,永远都不知道答案。值得强调的是,没有一个单一的算法能适用于所有机器和纸带。在某些特定的机器和纸带情况下,或许有专门的算法能决定它是否会停止。
那么,什么是忙碌海狸函数呢(The busy beaver function)?我们将其记作
- 首先,我们考虑所有n状态的图灵机,也就是所有可能的状态表。
- 然后,在全零的纸带上运行每一台机器。
- 接下来,观察所有已经停止的机器,第n个忙碌海狸数Σ(n)就是写下1的最大次数。也就是说,每一台已经停止的机器都在全零的纸带上写下了一定数量的1,Σ(n)是其中最大的。
实现这个最大值的机器被称为忙碌海狸机器。
举个例子,假设n等于2,考虑一个有两个状态的表。
通过某个特定的图灵机,最终纸带上可能写下两个1。
但事实证明,如果用另一台图灵机,会得到四个1,