Automata05 TM
Published:
Intro
图灵机最早是作为一种计算模型出现的,目的是讨论在这样一种机器上能解决什么样的问题。
形式化的图灵机定义为七元组 $(Q,\Sigma,\Gamma,\delta,q_0,B,F)$,含义分别为:状态集、输入符号集、纸带符号集、转移函数、初始状态、空符号、接受状态集。
和 PDA 的最大区别在于
- TM 的纸带两端无限长
- TM 可以读/写纸带
- TM 的读写头可以左右移动
别的没有本质区别。
对于 TM 的 ID $(q,\alpha,\text{Head})$,寸晷要求可以这么写:$\gamma q\beta$,其中 $\alpha=\gamma\beta$,且读头在 $\beta$ 的第一个字符上。
ID 间的转移写作 $ID\vdash ID’$
Recursive Enumerable
给定 TM $M$,有两种定义其接收语言的方法
- 定义 $H(M)=\Set{w\mid M(w)\text{ 停机}}$
- 定义 $L(M)=\Set{w\mid q_0w\vdash^* ID(q,\alpha,\text{Head})\wedge q\in F}$
由 TM 定义的语言叫做递归可枚举语言(Recursive Enumerable Language)
定理:
- 任给 $L=L(M)$,存在 $M’$ 使得 $L(M)=H(M’)$;
- 任给 $L=H(M)$,存在 $M’’$ 使得 $H(M)=L(M’’)$
证明:
- 对 $M$ 稍作修改即可得到 $M’$
- 把所有接收状态的所有后继状态都删掉
- 对于非接收状态的未定义后继状态,设成一个死循环(永远往右走)
- 同样对 $M$ 稍作修改即可得到 $M’’$
- 把所有未定义后继状态的转移都重定向到新造的接受状态
注意到1的证明可能会删去一些路径:先进入接收状态,然后走出去,再次进入后停机。在修改过后这样的trace就没法出现了。但是根据定义可知,$w\in L(M)$ 当且仅当存在一个 $ID$ 使得 $q_0w\vdash^* ID$ 且 $ID$ 是接收状态,因此我们仍然可以接收这个串。即只要有一次进入接收态就算接收。
Recursive
给定 TM $M$,且保证 $M$ 停机,则称 $L(M)$ 是递归语言(Recursive Language)
这样的 $M$ 也叫算法(Algorithm)
这样的定义意味着纯粹的 TM 不一定停机,也可能从未进入接收状态。
Variation
这些变体都是等价的,即它们作为整体接收的语言都是同一类语言——递归可枚举语言。
Multiple Tracks
原本纸带上的每个位置只有一个符号,现在纸带上的每个位置可以有 $k$ 个符号。例如内存是以字节(8位)为单位的。
通过简单的编码就可以证明计算能力(capability)与单个纸带的等价性。
Marks
利用 Multiple Track 可以给不同的位置打上标记
Registers
状态集可以带上寄存器,其中装着有限长度的串。
Semi-infinite Tape
即单边无限的纸带。注意到存在平凡双射 $\mathbb N\mapsto \mathbb Z$ ,因此正常 TM 的操作同样可以在 ST-TM 上完成。
Multiple Tapes
注意和 Multiple Tracks 的区别,这里是可以有 $k$ 个读写头独立操作的。
这仍然和一般路过 TM 在计算能力上等价,即单个读写头可以模拟多个读写头并行操作的情况(单核CPU仍然可以跑多任务)。
Nondeterministic
NTM $N$ 的每一步有多种选择可以走。定义 $L(N)$ 为所有能走到接收状态的串 $w$。
注意到 $N$ 本身也是可以编码的,可以用一个 TM $M$ 来 bfs 模拟 $N$ 的执行,也就是做 model checking。
并且由于前面这些等价的拓展,我们可以假定被编码的 TM 尽可能简单(例如都是 ST-TM),而作为 host 的外层 TM 可以尽可能复杂(例如可以有多个读写头),这样会比较方便。
Key-Value Store
新开两条纸带分别存 Key 和 Value。插入和删除都在纸带上扫。
Closure Property
不加解释说明是递归语言和递归可枚举语言共同具有的特性。
$L(M_1)\cup L(M_2)$
构造 $M$:
- 有两个纸带,分别跑 $M_1,M_2$
- 任意一个接收都接收。
$L(M_1)\cap L(M_2)$
和上面是类似的
$\overline{L(M)}$
对递归语言而言是封闭的。由终止性可知 $M$ 必然会给出判定,只需要把结果取反即可。
对递归可枚举语言而言是不封闭的。证明:
若 $L$ 和 $\bar L$ 都是递归可枚举的,那么可以取 $M,\bar M$ 分别为判定 $L,\bar L$ 的 TM。
- 对于输入 $w$ 分别喂给 $M,\bar M$
- 若 $M$ 停机,则停机进入接收态
- 若 $\bar M$ 停机,则停机进入非接收态
这说明 $L$ 将会是递归语言。
注意到我们的论证仅依赖于 $L$ 及 $\bar L$ 是递归可枚举的,因此一切递归可枚举语言都是递归语言。
上面这条很容易举出反例(例如后面会说的停机问题),矛盾;故假设不成立。
$LR$
对于递归语言的联,只需要枚举分界线,然后用两个 TM 分别判定就可以了。为了避免麻烦的停机,这里的分界线枚举可以用 NTM。
对于递归可枚举语言需要保证两个 TM 是并行跑的(调度公平即可)
$L^R$
只需要用 TM 把输入翻转一次就好了。
$f^{-1}(L)$
对于输入 $w$ 得到 $f(w)$,然后放在 $L$ 的 TM 上跑一下得到结果。
