【问题标题】:Turing machine adding two numbers图灵机加两个数
【发布时间】:2009-12-21 20:56:40
【问题描述】:

如何创建图灵机来计算以# 分隔的两个二进制数字之和,例如。 111#101B,其中 B 代表空白?结果可以写在磁带的末尾。

【问题讨论】:

  • 这是作业吗? (只是问)
  • 我们不会给你作业的答案。您至少需要表明您已经尝试过并在遇到问题时提出具体问题。
  • 好的,我明白了。我只是想在下面的答案中有一个线索。谢谢:)

标签: turing-machines


【解决方案1】:
  1. 编写图灵机将两个二进制数转换为一元(保持它们之间的空白)。
  2. 编写图灵机,将空白替换为 1,并从末尾砍掉一个数字。
  3. 编写图灵机将一元数转换为二进制数。
  4. 将这三台机器连接在一起。

【讨论】:

  • 我讨厌玩死灵法师,但是当你在谷歌上搜索“添加二进制数图灵机线性时间”时就会出现这种情况。 no 这绝不是一个有效的解决方案,因为它需要指数级的步骤(在原始输入大小中)。
【解决方案2】:

假设输入 a#(1)b 转换为 a#(1)b#(2)c#(3)BLANK

空白将用总和填充。为“a”的 LSB 制作 2 个案例。为“b”的 LSB 进一步划分 2 个案例。 'c' 是最初为 0 的进位位。为四种情况中的每一种情况分别制作 2 种情况,并在途中更新进位位。路径是根据 'c' 是 0 还是 1 来选择的。

图片显示了一个粗略的草图。

最终结果将是原始总和的反转值。你再把它反过来。用一粒盐拍照。这只是一个粗略的草图。不遵循命名法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2011-05-30
    相关资源
    最近更新 更多