计算理论基础
出处说明
本文内容摘自外部资源,为方便学员快速学习相关前置数学知识而整理在一起。内容可能较原文有删减,仅保留本课程所需的前置内容,以便学员快速掌握必备知识。
问题
语言
一个 字母表(alphabet) 是一个非空有限集合,该集合中的元素称为 符号/字符(symbol)。
令
需要注意的是,这里的「语言」是一个抽象的概念,通常意义上的字符串是语言,所有的有向无环图也可以是一个语言(01 串与有向图之间可以建立双射,具体方式无需了解)。
由于任何语言都可以转化成 01 串的形式,所以在下文中不加说明时
判定问题
判定问题就是只能用 YES/NO 回答的问题,本质上是判定一个串是否属于一个语言,即:
判定问题由于其简洁性而常常被作为计算理论研究的对象。本文中不加说明时,「问题」都指「判定问题」,当然,有时一些命题也能简单地推广到其它问题上。
一个语言也可以代指「判定一个串是否属于这个语言」这个判定问题,因此,「语言」和「问题」可以视作同义词。
功能性问题
功能性问题的回答不止 YES/NO,可以是一个数或是其它。如,「求两个数的和」就是一个功能性问题。
任何功能性问题都可以转化为一个判定问题,如,「求两个数的和」可以转化为「判定两个数的和是否等于第三个数」。
判定问题也可以转化为一个功能性问题:求这个判定问题的指示函数,即上文中判定问题定义里的
图灵机
确定性图灵机
不加说明时,「图灵机」往往指「确定性图灵机」,本文中也是如此。
图灵机有很多不同的定义,这里选取其中一种,其它定义下的图灵机往往与下面这种定义的图灵机计算能力等价。
图灵机是一个在一条可双向无限延伸且被划分为若干格子的纸带上进行操作的机器,其有内部状态,还有一个可以在纸带上进行修改与移动的磁针。
正式地说,图灵机是一个七元组
是一个有限非空的 状态集合; 是一个有限非空的 磁带字母表; 是 空字符,它是唯一一个在计算过程中可以在磁带上无限频繁地出现的字符; 是 输入符号集,是可以出现在初始磁带(即输入)上的字符; 是 初始状态; 是 接受状态,如果一个图灵机在某个接受状态停机,则称初始磁带上的内容被这个图灵机 接受。 是一个被称作 转移函数 的 partial function(即只对定义域的一个子集有定义的函数)。如果 在当前状态下没有定义,则图灵机停机。
图灵机从初始状态与纸带起点起,每次根据当前的内部状态
其实,知道图灵机的工作细节是不必要的,只需建立直观理解即可。
图灵机
图灵机与冯·诺依曼计算机解决问题的时间复杂度差别在多项式级别内,所以研究复杂度类时可以使用图灵机作为计算模型。
非确定性图灵机
非确定型图灵机是图灵机的一种,它与确定型图灵机的不同在于:确定型图灵机的每一步只能转移到一个状态,而非确定型图灵机可以「同时」转移到多个状态,从而在多个「分支」并行计算,一旦这些「分支」中有一个在接受状态停机,则此非确定性图灵机接受这个输入。
事实上,任何确定型图灵机都可以用类似于迭代加深搜索的方式在指数级时间内模拟一台非确定型图灵机多项式时间内的行为。
在现实生活中,确定型图灵机相当于单核处理器,只支持串行处理;而非确定型图灵机相当于理想的多核处理器,支持无限大小的并行处理。
可计算性
不可计算问题
对于一个判定问题,若存在一个总是在有限步内停机且能够正确进行判定的图灵机,则这个问题是一个 图灵可计算 的问题,否则这个问题是一个 图灵不可计算 的问题。
由于图灵机可以被自然数编码,所以图灵机的个数是可数无穷,而语言(即二进制串的集合)的个数是不可数无穷,而每个图灵机最多判定一个语言,所以一定存在图灵不可计算的问题。
停机问题
停机问题是一个经典的图灵不可计算问题:给定
复杂度类
复杂度类有很多,本文只会介绍其中较为常见的一小部分。
DTIME
如果存在一台确定性图灵机能够判定一个语言,且对于任何输入
P
复杂度类
线性规划、计算最大公约数、求图的最大匹配的判定版本都是
EXPTIME
复杂度类
停机问题的弱化版——给定一个图灵机的编码以及一个正整数
NTIME
如果存在一台非确定性图灵机能够判定一个语言,且对于任何输入
NP
复杂度类
所有
NP-hard
如果所有
换句话说,如果可以在一单位的时间内解决 NP-hard 的问题
NP-complete
如果一个问题既是
一些经典的 NPC 问题:旅行商问题的判定版本、最大独立集问题的判定版本、最小点覆盖问题的判定版本、最长路问题的判定版本、0-1 整数规划问题的判定版本、集合覆盖问题、图着色问题、背包问题、三维匹配问题、最大割问题的判定版本。
NPC 问题的功能性版本往往是 NP-hard 的,例如:「判定一张图中是否存在大小为
类似地,其它复杂度类也会有「XX-complete」,如所有
NP-intermediate
如果一个问题是
就人们目前的了解,图同构问题、离散对数问题和因数分解问题可能是 NP-intermediate 的。
Ladner 定理指出,如果
NEXPTIME
复杂度类
复杂度类之间的关系
P?=NP
复杂度类
若
为什么 NP?=co-NP 不是显然的?
由于
实际上,上面所说的这种方法确实能够解决该
若
若
参考资料
Wikipedia 的相关词条以及这些词条的参考资料。