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)
wherey∈ {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