【问题标题】:A turing machine that decides {0^2^n; n>0} that's not the commonly accepted one决定 {0^2^n; 的图灵机; n>0} 这不是普遍接受的
【发布时间】:2018-10-24 14:07:09
【问题描述】:

我们被要求创建一个接受{0^(2^n); n>0} 的图灵机,这不是由 Michael Sipser 发布的普遍接受的。

相反,我们被要求为算法创建一个,如下所示:

  • 在头的第一次通过时,图灵机将划掉一个零。
  • 接下来,它将划掉另一个零。
  • 接下来,它将划掉两个零。
  • 接下来,四个。

它将以这样的方式继续,在每个通道中划掉与之前所有通道组合中划掉的数量一样多的零(1、1、2、4、8、16 等),直到没有零剩余,没有被划掉(接受)或没有零剩余,但有一些剩余要划掉(拒绝)。

现在我的问题显然源于图灵机不存储数据值这一事实。虽然图灵机可以用作计数器(枚举器),但它们不能存储计数的值并对其进行操作。我提出了几个无限长的、非确定性的图灵机,它们使用了这种算法,但没有一个是确定性的。我可以根据需要使用尽可能长的书写字母。

请不要问我,考虑到一种高效、简单的算法已经可用且广为人知,为什么要我创建这样一台无用的机器。老实说,我不能告诉你。

【问题讨论】:

标签: algorithm computer-science dfa turing-machines non-deterministic


【解决方案1】:

图灵机可以存储值。要做到这一点,有时你需要玩一些技巧。鉴于您可能使用较大的字母表,请按以下方式执行每一遍:

  • 在通道开始时,磁带有一定范围的xs 表示已被划掉的内容,然后是一系列尚未划掉的0s。

  • 找到最左边的x。将其更改为y。找到最左边的0。用z 划掉它。只要有xs,就重复。

  • 转到磁带的开头,将yz 更改为x

证明xs的通过次数翻倍后,实现机器。

【讨论】:

    【解决方案2】:

    我相信这是解决问题的最直观的方法。上图可以简化,因为某些过渡是多余的。

    删除替代零的常见解决方案虽然简单,但并不是所有人都能想到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多