構建一個用於將二進位制自然數加1的圖靈機?
圖靈機 (TM) 可以用七元組形式描述為:
(Q,X, ∑, δ,q0,B,F)
其中:
Q 是一個有限的狀態集。
X 是帶字母表。
∑ 是輸入字母表。
δ 是一個轉移函式:δ:QxX->QxXx{左移, 右移}。
q0 是初始狀態。
B 是空白符號。
F 是最終狀態。
二進位制數
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
. . .
演算法
步驟 1 - 移動到字串的右端。
步驟 2 - 重複
如果當前單元格包含 1,則寫入 0 並向左移動,直到當前單元格包含 0 或空白。
步驟 3 - 寫入 1。
步驟 4 - 移動到字串的左端並停止。
讓我們稱之為 B。
TM 指令如下:
(0, 0, 0, R, 0) 向右掃描。
(0, 1, 1, R, 0) 向右掃描。
(0,B ,B , L, 1) 找到字串的右端。
(1, 1, 0, L, 1) 寫入 0 並向左移動,帶有進位位。
(1, 0, 1, L, 2) 寫入 1,加法完成。
(1,B , 1, S, Halt) 寫入 1,完成並處於正確位置
(2, 0, 0, L, 2) 向左掃描。
(2, 1, 1, L, 2) 向左掃描。
(2, B, B , R, Halt) 達到字串的左端並停止。
瞬時描述:11 + 1 =2???
狀態 0 - B 1 1 B 向右掃描
狀態 0 - B 1 1 B
狀態 0 - B 1 1 B 掃描完成。
狀態 1 - B 1 1 B 1 變為 0
狀態 1 - B 1 0 B 1 變為 0
狀態 1 - B 0 0 B 0 變為 1
停止 - B 1 0 0 B 完成!
廣告