使用模数的方程式图灵机

时间:2017-09-25 11:01:19

标签: turing-machines

我需要为

创建一个游览机
Z =(Xi + Ki)mod 2

但我完全迷失了为2的模数创建一个游览机.X和K是二进制输入,其中i是字符串的长度。输入如下:

XYK

Y只是作为二进制字符串X和K的分隔符,其长度可以变化。我现在遇到的问题是关于等式的模数部分。我如何从mod 2开始,以及我应该注意什么?

1 个答案:

答案 0 :(得分:0)

基于此,我认为你要求的是Z,这样Z_i = X_i + Y_i(mod 2):

 (X0 X1 X2 ... Xi
+ K0 K1 K2 ... Ki)
%  2  2  2 ...  2
= Z0 Z1 Z2 ... Zi

鉴于此和输入磁带如BXX ... XY ... KK ... KBB ...其中B为空白,XX ... X是一个i位二进制数,Y是分隔符和KK ... K是另一个i-digit二进制数,问题很简单:

  1. 在输入后将新的分隔符V写入第一个非空白单元格。确保您可以将其与X,Y,K区分开来。返回磁带的开头。
  2. 向右移动直至找到属于X的0或1(如果找到Y,请跳过下方)。输入状态X1如果1和X0为0.在磁带上写入W并在Y之后向右移动到第一个0或1.如果在0或1之前找到Y,则将V复制到磁带的前面,然后写入空白在其他一切和停止接受。
  3. 如果处于状态X0并且您看到0,或者如果您在X1中并且看到1,则输入状态Z0。否则,输入状态Z1。
  4. 在录像带上写下一个W,并在V。
  5. 之后向右移动到第一个空白单元格
  6. 如果在Z0中写0,或在Z1中写1。
  7. 移回磁带的开头并重复此过程,直到您在步骤2中找到Y.
  8. 示例:0011 + 1010

    B0011Y1010BBBBB...
    ^
    
    B0011Y1010VBBBB...
    ^                 move to the end of input, write V separator, reset head
    
    B0011Y1010VBBBB...
     ^                move right to first 0
    
    BW011Y1010VBBBB...
          ^           enter X0, write W, move right to first 1 after Y
    
    BW011YW010VBBBB...
               ^      enter Z1, write W, move right to first blank after V
    
    BW011YW010V1BBB...
    ^                 write 1, return to beginning, repeat
    
    BWW11YWW10V10BB...
    ^                 find 0, X0, find 0, Z0, write 0, return to start, repeat
    
    
    BWWW1YWWW0V100B...
    ^                 find 1, X1, find 1, Z0, write 0, return to start, repeat
    
    BWWWWYWWWWV1001...
    ^                 find 1, X1, find 0, Z1, write 1, return to start, repeat
    
    B1001BBBBBBBBBB...
    ^                 find Y, copy from after V to beginning, erase rest, halt.