一种能打印自己描述的机器

设Px为图灵机:

输入w:

  1. 擦除磁带。
  2. 在磁带上打印x,然后停止。

现在考虑机器B,它本质上是一个Px生成器。

输入w:

  1. 构造Pw
  2. 擦除磁带。
  3. 写<Pw>在磁带上,然后是w,然后停下来。

接下来,我们考虑由其他图灵机组成的机器。例如,假设N和M是图灵机。组合物NM是做以下事情的机器。

输入w:

  1. 在输入端运行N,直到N停止。
  2. 把磁带头倒回磁带的开头。
  3. 在磁带上剩下的N上运行M。

使用上面定义的机器和思想,我们现在可以构造一台打印自己描述的机器。机器的组成是PB。这台机器是这样做的:

  1. 擦除磁带。
  2. 在磁带上打印
  3. 构造P<B>,然后打印<P<B>>在磁带上,后面跟着<B>。

递归定理

递归定理建立了内省作为图灵机使用的有效技术。在内省技术中,图灵机获得自己的描述,然后使用该描述作为它正在进行的计算的一部分。

这是递归定理的形式表述。

设T是计算函数T的图灵机:Σ*×Σ*→Σ*。有一个图灵机R,它计算函数R: Σ*→Σ*,使得

r(w) = t(< r >,w)

对于赢博体育w∈Σ*。

证明递归定理的一种方法是构造。我们演示了如何将任何图灵机T转换为定理中描述的新机器R。

我们需要的机器是一个组合:PBT。机器的第一部分是稍作修改的版本Px

输入w:

  1. 擦除磁带。
  2. 在纸带上打印x,然后是w,然后停止。

同样的,B是稍作修改的版本B

对于输入x,w:

  1. 构造Px
  2. 擦除磁带。
  3. 打印<Px>在磁带上,然后是x然后w
  4. 停止。

下面的序列显示了运行时磁带的样子R =PBT对于任何输入w

在开始:wP运行:<BT>,wB运行:<PBT>,wT运行:t(<PBT>,w

我们现在有一台机器R,当它在任意输入w上运行时,计算出t( ,w)。

递归定理的赢博体育

正如我上面提到的,递归定理提供的主要新功能是自省功能。这意味着我们可以制造出似乎能够看到并使用自己的描述的机器。当然,机器不能做到这一点,但递归定理给了我们下一个最好的东西:机器表现得好像它们能够看到自己的描述。

这里有一个例子。假设我们想用递归定理来制造一台可以打印自己的机器。我们先构造一个合适的T:

当输入 时,w:

  1. 擦除磁带。
  2. 在磁带上打印 并停止。

这个机器T实现了映射T ( ,w) = 。然后,递归定理保证存在一台机器R,它计算一个函数R (w) = t( ,w) =

以下是R所做的:

输入w:

  1. 擦除磁带。
  2. 在磁带上打印 并停止。

这台机器似乎能够获得并使用自己的描述。它实际上并不能看见自己,但它至少表现得好像它能看见自己。一旦我们有了一台机器,它表现出我们想要的行为,我们就可以稍微改变一下术语,用这种方式重写R的描述。

输入w:

  1. 擦除磁带。
  2. 获取我们自己的描述,
  3. 在磁带上打印 并停止。

递归定理的一个主要赢博体育是,它使计算理论中常见结果的证明更容易构造。一个经典的例子是反证法,证明ATM是不可判定的,构造起来要容易得多。

假设ATM可由某台机器H决定,我们用H构造一台机器B:

输入w:

  1. 获取我们自己的描述,
  2. 对上运行H,并执行与H相反的操作。

不管我们给B的输入是什么,B的行为都会和H预测的相反当它在这个输入上运行时。

另一个有趣的赢博体育是证明不可能确定某个图灵机T是否是接受L(T)的最小可能图灵机。为了证明这个结果,我们引入了语言

MINTM = { | 是接受L(M)的最小机器}

这里有一个矛盾的证据,证明这种语言是不可判定的。我们利用递归定理构造了一个特殊的机器C:

输入w:

  1. 获取我们自己的描述,
  2. 运行枚举器最小值TM直到它打印出机器的描述<D>大于<C>。
  3. 模拟D在w上运行,并做它所做的。

我们刚刚构造的机器接受与大机器D相同的语言,这是一个矛盾,因为集合MINTM, D来自,应该由接受他们语言的最小机器组成。