📜  半无限图灵机(1)

📅  最后修改于: 2023-12-03 15:22:48.655000             🧑  作者: Mango

半无限图灵机

简介

半无限图灵机是一种比图灵机更加强大的计算模型,它拥有无限的内存空间,但只允许有限的计算时间。

半无限图灵机最初由 Hartley Rogers 在 1967 年提出,在计算理论和复杂性理论中都有重要的应用。

原理

半无限图灵机由三个部分组成:控制器、读/写头和无限长的磁带。

控制器根据当前的状态和读/写头所读到的符号,确定下一步的状态和读/写头的移动方向。读/写头可以读取磁带上的符号,并改变其值。

类似于图灵机,半无限图灵机也可以表示为一个元组 $(Q, \Sigma, \Gamma, \delta, q_0, q_{accept}, q_{reject})$。其中

  • $Q$ 是有限状态集合
  • $\Sigma$ 是输入符号的有限集合
  • $\Gamma$ 是磁带上的符号的有限集合
  • $\delta$ 是转移函数 $Q \times \Gamma \to Q \times \Gamma \times {L, R}$,表示在当前状态和当前读/写头所处的符号下一步可执行的操作(转移到的状态、写入的符号和读/写头的移动方向)
  • $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 完全问题,或者某些语言无法被正则表达式表示等。

同时,半无限图灵机也常常被用于模拟计算机系统中的内存,并且在内存可用空间较小时,半无限图灵机的计算效率比图灵机更高。