【问题标题】:Store 2D data matrix on a Turing Machine tape在图灵机磁带上存储 2D 数据矩阵
【发布时间】:2019-12-15 14:06:42
【问题描述】:

我有一个可能无限的 N*N 矩阵,被一些任意编程语言使用。在这种编程语言中,矩阵的每个字段都包含一个整数(从零到无穷大)。在这种编程语言中,我们只能通过在其中一个轴上移动一步然后读取当前值来访问该数组的字段。当前字段的值也可以递增或递减。

现在我的任务是将其实现为图灵机。默认情况下,磁带字母包含 {0, 1, blank} 但可以扩展。我也可以使用多个磁带。

现在我遇到的问题是如何将整数存储在磁带上。我不能为每个数字指定一定数量的“位”,因为最大值不受限制。 我也不确定最终的图灵机将如何有效地访问这些值。

有没有有效的方法来实现这一点?从本质上讲,我应该能够将任何代码从所述语言转换为图灵机,但我不知道如何。

【问题讨论】:

    标签: computer-science turing-machines


    【解决方案1】:

    如果你只是想要一些表示,这里有一个例子。

    您可以将矩阵本身表示为带分隔符的字符串,其中分隔标记表示行。您可以通过在输入字符串前面包含一些特殊分隔符标记之前的矩阵维度来扩展它。为了效率和简单性,您可以使用其他磁带来随时访问矩阵尺寸,并使用其他磁带来跟踪您在矩阵中的当前坐标。因此,您的 TM 状态可能如下所示:

    tape 1: 4,4:0101;1100;1101;0010.
    tape 2: 4                ^
    tape 3: 4
    tape 4: 2
    tape 5: 3
    

    通过此设置,您可以判断是否可以向右或向左、向上或向下移动;并且您可以随心所欲地移动(向上或向下移动相当于向左或向右移动等于磁带 2 值的空格数)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多