构建一个图灵机来将二进制自然数加2?
图灵机(TM)可以形式化地描述为七元组:
(Q,X, ∑, δ,q0,B,F)
其中:
Q 是有限状态集。
X 是带字母表。
∑ 是输入字母表。
δ 是转移函数:δ:QxX->QxXx{左移,右移}。
q0 是初始状态。
B 是空白符号。
F 是最终状态。
输入 - n 一个自然数
输出 - n + 2
让我们用一元形式表示自然数(例如,3 = 111,5 = 11111),0用空符号表示。
算法
将磁带头移动到第一个1的左侧(如果存在)。
将该空单元格更改为1。
左移并重复。
停止
我们只需要3个状态:0(初始)、1和停止;以及三个指令:
(1): (0, 1, 1, L, 0) 向左移动到空白单元格。
(2): (0, , 1, L, 1) 在单元格中写入1并向左移动。
(3): (1, ❑, 1, S, 停止) 在单元格中写入1并停止。
图形化表示如下
瞬时描述
状态 0:❑ 1 1 1 ❑ 从状态 0 开始
状态 0:❑ 1 1 1 ❑ (1)
状态 1:❑ 1 1 1 1 ❑ (2)
停止:❑ 1 1 1 1 1 ❑ (3)
广告