algorithm - 为什么 N-State 忙碌的海狸不能一直向右走?

标签 algorithm computer-science automata

我正在阅读有关 Busy Beavers 的文章,但如果他们有无限长的磁带,为什么他们不能一直向右无限打印 1?为什么他们要一直左转右转

最佳答案

由于我的评论可能不足以解决您的问题,因此我会稍微详细说明一下。你 build 了一个只向右移动的忙碌的海狸吗?让我们尝试 N = 2:

  • 状态 A,磁带 0 ==> 写 1,向右移动,转到状态 A/B(选择你喜欢的)
  • 状态B,磁带0 ==>写1,向右移动,进入状态A/B(选择你喜欢的)
  • (磁带 1 的定义无关紧要,仅在向右移动时不会发生)

可以看到这样会写很多的!但它永远不会停止,游戏规则是编写一个停止的图灵机。

所以我们必须修改它来停止:

  • 状态A,磁带0 ==>写1,向右移动,进入状态B
  • 状态 B,磁带 0 ==> 写入 1,向右移动,进入状态 HALT
  • (带 1 的定义无关紧要,不会发生这种情况)

但现在我们可以看到我们是多么低效,完全忽略了很多可用的选项。因此,我们将向左移动添加到我们的武器库中以提高效率。我现在将简写符号,希望它更容易阅读。

  • A, 0 => 1, 右, B
  • B, 0 => 1, Left, A(我们必须在这里向左走以避免永远停止)
  • A, 1 => 1, 左, B
  • B, 1 => 1, , HALT(最后一个选项,必须是暂停)

所以我们得到的执行是:

  1. ...0 0 0 0 0..., A => 1, 右, B
  2. ...0 0 1 0 0..., B => 1, 左, A
  3. ...0 0 1 1 0..., A => 1, 左, B
  4. ...0 0 1 1 0..., B => 1, 左, A
  5. ...0 1 1 1 0..., A => 1, 右, B
  6. ...1 1 1 1 0..., B => 1, , 暂停

因此最终磁带在 6 个步骤后有 4 个 1,这比我们只向右移动时获得的结果要好得多。

关于algorithm - 为什么 N-State 忙碌的海狸不能一直向右走?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599949/

相关文章:

algorithm - 链表 :How can we tell if the usage of a dummy node is absolute necessity?

automata - 设计一个包含 0's and 1' 的所有字符串的 PDA,使得 1's is twice the number of 0' 的数量

c++ - 在 int 中测试 4 个字节的零

algorithm - 使用逻辑运算符进行 TRIE 搜索

java - StackOverflowError - 向堆中添加一个值

mysql - 在sql中,当我在将其中一列作为主键后使用 'group by'时,它没有在所需的组中显示输出?

algorithm - 具有 2 个键的二叉搜索树

computer-science - 规则引擎与专家系统

regex - 正则表达式中的顺序无关紧要吗?

algorithm - 如何在自动机上应用 Kleene 星?