Binary 计算2个二进制数之和的图灵机

Binary 计算2个二进制数之和的图灵机,binary,sum,addition,turing-machines,Binary,Sum,Addition,Turing Machines,我如何构建一个图灵机来计算两个二进制数的总和,这些二进制数是为输入给定的X$Y* 例如,假设X=3和Y=5。机器的输入将为#011$101*#。最后的状态应该是1000 我们可以假设X和Y具有相同长度的位。您需要实现一个。这个问题可能是家庭作业,所以我将提供一个高层次的概述。图灵机M具有特殊状态Q(xyc)其中x,y∈ {0,1,U}和c∈ {0,1}。状态Q(xyc)表示X的第i位为X,Y的第i位为Y,进位为c。符号U表示相关输入的第i位未知。状态Q(Uyc)wherey∈ {0,1}无效,因

我如何构建一个图灵机来计算两个二进制数的总和,这些二进制数是为输入给定的
X$Y*

例如,假设
X=3
Y=5
。机器的输入将为
#011$101*#
。最后的状态应该是
1000

我们可以假设
X
Y
具有相同长度的位。

您需要实现一个。这个问题可能是家庭作业,所以我将提供一个高层次的概述。图灵机
M
具有特殊状态
Q(xyc)
其中
x,y∈ {0,1,U}
c∈ {0,1}
。状态
Q(xyc)
表示
X
的第i位为
X
Y
的第i位为
Y
,进位为
c
。符号
U
表示相关输入的第i位未知。状态
Q(Uyc)
where
y∈ {0,1}
无效,因为如果
Y
的第i位已知,则
X
的第i位已知。算法是这样的:

  • M
    的初始状态是
    Q(UU0)
  • 假设正在添加
    X
    Y
    的第i位,进位为
    c
    。然后
    M
    处于
    Q(UUc)
    状态。如果
    i
    大于
    X
    Y
    中的位数,则转到步骤(6)。由于最低有效输入位在步骤(3)和(4)中被覆盖,因此这种情况很容易检测
  • 查找
    x
    的最低有效位
    x
    ,用
    $
    覆盖
    x
    ,并转换到状态
    Q(xUc)
  • 查找
    y
    的最低有效位
    y
    ,用
    *
    覆盖
    y
    ,并转换到状态
    Q(xyc)
  • 在磁带末尾写入适当的总和,转换到状态
    Q(UUd)
    ,其中
    d
    是新进位,然后转到步骤(2)。上述链接中的真值表给出了这些值
  • 如果
    c=1
    ,则在磁带末尾写入
    c
  • 将计算值的背面复制到磁带的开头。清除剩余的磁带
  • 注意,输出是按相反的顺序构造的,因此必须在步骤(7)中反转。剩下的工作包括写入状态和用于遍历/操作磁带的转换