计算理论:可判定性与复杂度
Decidability and Complexity
Decidability
Diagonalization method
Diagonalization method 是康托尔提出的一种数学证明方法,用于证明某个集合是不可数的(即无法建立起该集合和自然数集之间的双射)
Uncountable sets
自然数集
一个集合
E.g. 有理数集是 countable 的,但是实数集是 uncountable 的
Proof.
如果实数集是 countable,则存在一个双射
其中
Q.E.D.
Non-RE languages
根据之前的结论,语言之间的包含关系为
regular language
前两个真包含关系已经可以根据形如
证明分为三步
- 证明所有 TM 的集合是 countable 的
- 证明所有 language 的集合是 uncountable 的
- 根据上述结论,不可能存在从 TM 集合到 language 集合的满射
1). 所有 TM 的集合是 countable 的
Proof.
所有 string 的集合
而每个图灵机
Q.E.D.
2). 所有 language 的集合是 uncountable 的
Proof.
所有 string 的集合是 countable 的,则可以将每个 string 编号,得到
即如果第
则如果所有 language 的集合是 countable 则产生矛盾,若
Q.E.D.
由于 TM 的集合是 countable 而 language 的集合是 uncountable,故存在语言不会被任何 TM 接受
The halting problem is undecidable
Halting problem
停机问题的定义是语言
其中
显然这个语言是 RE,模拟
Proof.
以下给出大致的证明流程
假设存在 TM
则定义一个新的 TM
现在考虑将
根据反证法,
Q.E.D.
使用对角法也可以证明该结论,思路与上文类似
RE and co-RE
一个 RE 的补叫做 co-RE,而所有 co-RE 的集合组成了 co-RE 语言(注意 co-RE 不是非 RE)
则有结论:一个语言
Proof.
Q.E.D.
根据上述结论,可以得出 HALT 的补不是 RE。如果 HALT 的补是 RE,则 HALT 是 co-RE,根据上文结论,HALT 为 decidable,而这与之前的结论相矛盾

上述图片阐明了各个语言之间的关系
Undecidable Problems about TM
Reductions
归约(reduction)是一种转换。如果存在一个转换将问题
归约可以说明
归约不要求一定是满射和单射,事实上一般
更为正式的定义如下:
Many-one reduction: 考虑
Computable:
is computable if there exists a TM s. t. on every , halts on with written on its tape
若存在满足的
如果
如果存在一个
- 如果
undecidable,则 undecidable - 如果
是 non-RE,则 是 non-RE
Proof.
考虑陈述 1,如果
陈述 2 同理,可以通过
Q.E.D.
因此 reduction 可以用来证明语言的 undecidable/non-RE
假设已知
- 假设
是 decidable,则存在 decider - 使用
判定 (即构造从 到 的 reduction ,对于任意 ,使用 判定 ) - 这样得出
是 decidable,导出矛盾,根据归谬法, 是 undecidable
is undecidable
而根据上文结论,已知 HALT 是 undecidable 的,那么通过 reduction 可以证明
Proof.
将 HALT 归约到
如果
对于 HALT 的实例
- 如果属于,则说明
halt 并接收 , accept - 如果不属于,则说明
或是 halt 并 reject ,或是在 上无限循环 - 构造
,模拟 的运行,且当 halt 时,若 结果为 accept 则 reject,反之若 结果为 reject 则 accept,若 无限循环则 同样会无限循环 - 判断
是否属于 ,如果属于则说明 在 上 halt 并 reject,则 accept,否则说明无论 在 上都循环, reject
- 构造
由于
Q.E.D.
除了归约的证明,也可以直接用归谬法证明
Proof.
如果
- 如果
则 reject - 如果
则 accept
则考虑
Q.E.D.
is undecidable
Proof.
将
对于
- 如果
accept ,则 accept 其输入 - 否则
reject 其输入
如此构造后
如果
Q.E.D.
事实上
Rice's Theorem
Rice's Theorem: all non-trivial, semantic properties of programs are undecidable
semantic property: Rice's theorem 适用范围是关于语言的属性而非关于机器/程序的属性。E.g. 一个程序是否会在所有输入上 halt 就是一个 semantic property,而程序是否会运行超过 1000 步或 TM 是否有超过 5 个状态就不是 semantic property
如果将 property 看作一个接受 TM 为输入的 language
non-trivial: 一个 trivial 的 property 满足:或是所有语言都有该 property ,或是没有语言有该 property。否则其为 non-trivial
要注意 Rice's Theorem 的适用范围仅限 non-trivial semantic properties
Proof.
将
思路为如果
Q.E.D.
以下 properties 都是 undecidable 的
- 一个 language 是否为空
- 一个 language 是否有限
- 一个 language 是否是 regular language
- 一个 language 是否是 CFL
Complexity
Intractable Problems: problems that cannot to be solvable in polynomial time
Time Complexity
在现实问题中,时间和空间的资源都是有限的,因此需要分析一个 algorithm 所需求的资源
在分析时一般进行 worst-case analysis,一个算法需要的资源是 input string 的长度的函数,而其值是对所有给定长度的 input,算法需要的最大资源数
一个 TM
在考虑 time complexity 时,通常不考虑精确的步数,且只考虑在输入规模很大的情况下的复杂度。具体而言,使用 asymptotic notation (big-Oh notation),只关注
对于函数
,如果存在正整数 满足对任意
则称
具体含义是规模较大的时候
根据 time complexity 即可定义 time complexity class
这里的 TM 指的是 single-tape TM,而对于 multi-tape TM 来说,对于任意
如果定义
则可以定义
对于
其中
Proof.
Q.E.D.
E.g. 最大团问题被定义为
满足图
满足
如果定义
则各个 time complexity class 之间的关系为
而这些语言都是 decidable languages 的子集
Polynomial-Time Reductions
reduction 是一个 computable function
poly-time computable: 对于函数
同样的,这个 reduction 隐含的意义为
则有,如果
Proof.
可以在 poly-time 将
Q.E.D.
称一个语言
如果仅满足第二条约束则称
证明一个语言
- 证明
- 对于已知的
,有 (根据 poly-time reduction 的传递性可得其满足第二条约束)
对于
如果
Proof.
任取
Q.E.D.
SAT 指的是一个布尔表达式是否为 satisfiable 的问题,这个问题是一个
一个布尔表达式是 satisfiable 的,说明存在一个对其中 variable 的 assignment 使得整个表达式为真
其证明的思路分为两部分
- SAT 是
问题:只需要构造一个 NTM 猜测并验证 assignment :令 为判定 的 NTM,则对于输入 ,可以构造一个布尔表达式 ,满足 ,具体构造过程见课本 10.2.3 节
3SAT 是 SAT 问题的一个特例,即一个 3-cnf 的布尔表达式是否为 satisfiable
3SAT 也是
图中的最大独立集(independent set, IS):独立集
图中的最大团(clique):团
图中的最小顶点覆盖(vertex cover, VC):覆盖集
图中的 Hamilton 回路:存在一个环经过每个顶点且仅经过一次,类似的问题还有 TSP 问题
子集和问题(subset sum):对于一个集合