TOC中的图灵机
图灵机由 Alan Turing 于 1936 年发明,用于接受递归可枚举语言(由 Type-0 Grammar 生成)。
图灵机由无限长的磁带组成,可以在其上执行读写操作。磁带由无限单元组成,每个单元上都包含输入符号或称为空白的特殊符号。它还包含一个指向当前正在读取的单元格的头指针,它可以双向移动。
TM 表示为 7 元组 (Q, T, B, ∑, δ, q0, F),其中:
- Q是一组有限的状态
- T是磁带字母表(可以写在磁带上的符号)
- B是空白符号(每个单元格都用 B 填充,最初输入字母除外)
- ∑是输入字母表(作为输入字母表一部分的符号)
- δ是映射 Q × T → Q × T × {L,R} 的转移函数。根据其当前状态和当前磁带字母表(由头指针指向),它将移动到新状态,更改磁带符号(可能会或可能不会)并将头指针向左或向右移动。
- q0是初始状态
- F是最终状态的集合。如果达到 F 的任何状态,则接受输入字符串。
让我们为 L={0^n1^n|n>=1} 构造一个图灵机
- Q = {q0,q1,q2,q3} 其中 q0 是初始状态。
- T = {0,1,X,Y,B} 其中 B 表示空白。
- ∑ = {0,1}
- F = {q3}
转移函数δ 在表 1 中给出为:
插图
让我们看看这个图灵机是如何为 0011 工作的。最初 head 指向 0,它有下划线,状态是 q0,如下所示:
移动将是 δ(q0, 0) = (q1, X, R)。这意味着,它将进入状态 q1,将 0 替换为 X,并且 head 将向右移动:
移动将是 δ(q1, 0) = (q1, 0, R) 这意味着它将保持相同状态并且不更改任何符号,它将向右移动:
移动将是 δ(q1, 1) = (q2, Y, L) 这意味着它将移动到 q2 状态并将 1 更改为 Y,它将向左移动:
以同样的方式处理它,机器将到达状态 q3 并且 head 将指向 B,如下所示:
使用 move δ(q3, B) = halt,它将停止并接受。
笔记:
- 在非确定性图灵机中,对于给定的状态和磁带符号,可能有不止一个可能的移动,但非确定性 TM 不会增加任何功率。
- 每个非确定性 TM 都可以转换为确定性 TM。
- 在多磁带图灵机中,可以有多个磁带和相应的头指针,但它不会给图灵机增加任何动力。
- 每个多磁带 TM 都可以转换为单磁带 TM。
问题:单个磁带图灵机 M 有两个状态 q0 和 q1,其中 q0 是起始状态。 M的磁带字母是{0, 1, B},它的输入字母是{0, 1}。符号 B 是用于指示输入字符串结束的空白符号。 M 的转移函数如下表所示。
该表解释如下。 q0 行第 1 列中的条目 (q1, 1, R) 表示如果 M 处于状态 q0 并且在当前磁带方格上读取 1,那么它在同一个磁带方格上写入 1,将其磁带头移动一个位置到右并转换到状态 q1。下列关于 M 的说法正确的是?
- M 不会在 (0 + 1)+ 中的任何字符串上停止
- M 不会在 (00 + 1)* 中的任何字符串上停止
- M 在所有以 0 结尾的字符串上停止
- M 在所有以 1 结尾的字符串上停止
解决方案:让我们看看机器是否在字符串'1' 上停止。初始状态为 q0,head 将指向 1,如下所示:
使用 δ(q0, 1) = (q1, 1, R),它将移动到状态 q1,并且 head 将向右移动:
使用 δ(q1, B) = (q0, B, L),它将移动到状态 q0,并且头部将向左移动:
它将一次又一次地以相同的方式运行,并且不会停止。
选项 D 说 M 在所有以 1 结尾的字符串上停止,但它不是为 1 停止。因此,选项 D 不正确。
让我们看看机器是否在字符串“0”上停止。初始状态为 q0,head 将指向 1,如下所示:
使用 δ(q0, 0) = (q1, 1, R),它将移动到状态 q1,并且 head 将向右移动:
使用 δ(q1,B)=(q0,B,L),它将移动到状态 q0,并且头部将向左移动:
它将一次又一次地以相同的方式运行,并且不会停止。
选项 C 说 M 在所有以 0 结尾的字符串上停止,但它不是为 0 停止。因此,选项 C 不正确。
选项 B 表示 TM 不会因任何字符串(00 + 1)* 而停止。但是 NULL 字符串是 (00 + 1)* 的一部分,TM 将停止 NULL 字符串。对于 NULL字符串,磁带将是,
使用 δ(q0, B) = halt,TM 将停止。由于 TM 因 NULL 而停止,因此该选项也是不正确的。
所以,选项(A)是正确的。