我最近才开始阅读一些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
如果我开始进行此操作,那么请执行以下几个步骤:
结果:
0
0 1
0 1 0
0 1 0 1
因此,基本上它可以正常工作,但是纸张清楚地指出,该机器应打印出010101
,磁带上没有任何空白。但是由于打印后我们总是向右移动两次,所以那意味着我们总是在胶带上留下一个空白方块。有人可以帮助我了解我在做什么错吗?
答案 0 :(得分:1)
图灵通过以下方式定义了机器计算的序列:
计算机。
如果一台机器打印两种符号,其中第一种 (称为图形)完全由 0 和 1 组成(其他称为的符号 第二种),那么该机器将被称为计算机。 如果机器配有空白胶带并开始运动,则启动 从正确的初始m构型中,符号的子序列 由它打印的第一类将被称为计算序列 通过机器 。
示例中的机器实际上是在磁带上打印0B1B0B1B0...
,但是它计算的序列被定义为0B1B0B1B0...
的子序列,该子序列仅由0和1组成,即01010...
。
实际上,图灵允许在二进制数字之间留空格。
我可耻地承认从未读过原始论文,但我想这可能是为了简化计算:允许数字之间的空格使程序员/数学家免于重新紧凑(又无聊)的步骤。
基本上,这允许使用本地暂存器,只要在移动到下一个单元之前将其擦除,就可以在一个数字附近使用任意数量的单元格。