📜  图灵机最多接受两个数字

📅  最后修改于: 2021-08-25 10:49:23             🧑  作者: Mango

先决条件–图灵机
问题 :
拉图灵机最多接受两个给定为B0n1C0n2B的一元数n1和n2。如果两个数字相等,则接受两个数字之一。

使用的逻辑:

  1. 对于左侧的每个0,将其替换为X,然后在右侧搜索另一个0。如果找到,将其替换为X并在左侧移动搜索0。
  2. 如果未找到,则表示左侧的数字比右侧的数字多。那就是n1> n2 。因此,将所有X更改为Os并在最左侧停止。
  3. 继续执行步骤1。如果在最右边的转换之后(在右边用X替换值为0的情况下)指向C,则意味着n2> = n1 。因此,将所有Xs转换为右侧的Os并停止。

应遵循的步骤:

  1. 从初始状态q0开始,在接收到0时,将其替换为X并向右移动并更改状态q1。收到C后,向右移动并将状态更改为q7。
  2. 从状态q1开始,在接收到0时继续向右移动。收到C后,向右移动并将状态更改为q2。
  3. 从状态q2开始,接收X保持相同状态,并继续向右移动。收到0时,将其替换为X,向左移动并将状态更改为q5。接收到空白(B)后,向左移动并将状态更改为q3。
  4. 从状态q3开始,在接收到0或C时继续向左移动,在接收到X时继续向左移动,将X替换为0并向左移动。最后,在接收到空格后,向右移动并将状态更改为q4,并接受n1> n2的状态。
  5. 从状态q5开始,在接收到C时向左移动并将状态更改为q6。但是在接收到X或0时保持相同状态,并继续向左移动。
  6. 从状态q6开始,在接收到0时保持向左移动而不改变状态。但是在接收到X时将其替换为0,然后向右移动并将状态更改回q0。
  7. 从状态q7开始,在接收到0时继续向右移动,并在向右移动时将每个X都更改为0。接收到B后,向左移动并将状态更改为q8。
  8. 在状态q8中接收到0时,继续向左移动,在状态C中接收到C时向右移动,并将状态更改为q9,接受n2> = n1的状态。

在此, q0表示初始状态,而q1,q2,…,q9是过渡状态,而q4,q9表示最终状态。
0、1是机器内部的数据, X,Y,C是用于求最大值的变量,即比较数据和R,L表示左右。