图灵的可计算数字-我不明白如何重现示例

时间:2019-03-12 07:55:06

标签: computer-science turing-machines

我最近才开始阅读一些CS论文,其中第一本是Turing的“关于可计算数字”,他在其中提供了用于打印010101序列的机器配置示例。我知道它应该如何工作,但是我很难理解为什么在这些操作中它有两个R动作:

m-config | symbol | operations | final m-config
         |  None  |     P0     |       b
    b    |   0    |   R, R, P1 |       b
         |   1    |   R, R, P0 |       b

如果我开始进行此操作,那么请执行以下几个步骤:

步骤1:P0

结果:

0

步骤1:R,R,P1

0 1

步骤2:R,R,P0

0 1 0

步骤3:R,R,P1

0 1 0 1

因此,基本上它可以正常工作,但是纸张清楚地指出,该机器应打印出010101,磁带上没有任何空白。但是由于打印后我们总是向右移动两次,所以那意味着我们总是在胶带上留下一个空白方块。有人可以帮助我了解我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

图灵通过以下方式定义了机器计算的序列

  

计算机。

     

如果一台机器打印两种符号,其中第一种   (称为图形)完全由 0 1 组成(其他称为的符号   第二种),那么该机器将被称为计算机。   如果机器配有空白胶带并开始运动,则启动   从正确的初始m构型中,符号的子序列   由它打印的第一类将被称为计算序列   通过机器

示例中的机器实际上是在磁带上打印0B1B0B1B0...,但是它计算的序列被定义为0B1B0B1B0...的子序列,该子序列仅由0和1组成,即01010...
实际上,图灵允许在二进制数字之间留空格。

我可耻地承认从未读过原始论文,但我想这可能是为了简化计算:允许数字之间的空格使程序员/数学家免于重新紧凑(又无聊)的步骤。
基本上,这允许使用本地暂存器,只要在移动到下一个单元之前将其擦除,就可以在一个数字附近使用任意数量的单元格。