📅  最后修改于: 2023-12-03 15:22:48.655000             🧑  作者: Mango
半无限图灵机是一种比图灵机更加强大的计算模型,它拥有无限的内存空间,但只允许有限的计算时间。
半无限图灵机最初由 Hartley Rogers 在 1967 年提出,在计算理论和复杂性理论中都有重要的应用。
半无限图灵机由三个部分组成:控制器、读/写头和无限长的磁带。
控制器根据当前的状态和读/写头所读到的符号,确定下一步的状态和读/写头的移动方向。读/写头可以读取磁带上的符号,并改变其值。
类似于图灵机,半无限图灵机也可以表示为一个元组 $(Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject})$。其中
以下是一个简单的半无限图灵机示例,它接受一个由 ${0,1}$ 组成且以 1 结尾的二进制数,并将其转换为十进制数。其中 $\cup$ 表示集合的并集,$\cdot$ 表示字符串的连接。
Q = {q_0, q_1, q_2, q_3, q_4, q_5, q_6, q_7}
Σ = {0, 1}
Γ = {0, 1, B}
δ = {
(q_0, 1) → (q_1, 1, R)
(q_0, 0) → (q_0, 0, R)
(q_1, 1) → (q_1, 1, R)
(q_1, 0) → (q_2, 0, R)
(q_2, 1) → (q_3, 0, L)
(q_2, 0) → (q_2, 0, R)
(q_3, 1) → (q_3, 1, L)
(q_3, 0) → (q_4, 1, L)
(q_4, 1) → (q_4, 1, L)
(q_4, 0) → (q_5, 0, R)
(q_5, 1) → (q_6, 0, R)
(q_5, 0) → (q_5, 0, R)
(q_6, 1) → (q_6, 1, R)
(q_6, 0) → (q_7, 1, R)
}
q_0 = q_0
q_accept = q_7
q_reject = q_7
其中状态 q_7 是一个附加状态,表示在磁带上的输入串中出现非法字符或字符串不以 1 结尾。
以下是该半无限图灵机对输入 $\texttt{1011}$ 的执行过程:
q_0 1 0 1 1 B // 初始状态,读入 1,向右移动到位置 1
q_1 1 0 1 1 B // 读到 1,向右移动到位置 2
q_1 1 0 1 1 B // 读到 0,向右移动到位置 3
q_2 1 0 0 1 B // 读到 1,向右移动到位置 4
q_3 1 0 0 1 B // 读到 1,向左移动到位置 3
q_4 1 0 1 1 B // 读到 0,向左移动到位置 2
q_5 1 0 0 1 B // 读到 1,向右移动到位置 3
q_6 1 0 0 1 B // 读到 1,向右移动到位置 4
q_6 1 0 0 1 1 // 读到 B,写入 1,结束
半无限图灵机在计算理论和复杂性理论中都有重要的应用。比如它可以用于证明某些 NP 问题是 NP 完全问题,或者某些语言无法被正则表达式表示等。
同时,半无限图灵机也常常被用于模拟计算机系统中的内存,并且在内存可用空间较小时,半无限图灵机的计算效率比图灵机更高。