langauge
包含所有
任何一个判定问题对应着一个
对于
deterministic algorithm
一个确定性算法
- 可数集
(定义域) - 可数集
(值域) - 有限的字母表
, - 编码函数
- 转移方程
computation
中间的这些
长度
算法
recognition algorithm
如果
, 那么 称为识别算法 如果
则 称为字符串识别算法 可被
识别的 language 为 如果
那么 被称为字符串映射算法
reducible
我们说
Lemma 1: 如果
且 , 那么
因为存在一个多项式时间算法, 先计算
- 注意: 归约强调的是问题的类别 (计算复杂度); 对于问题的解, 一般要求存在性一一对应 (即
一一对应)
可数集上的
给出一对一编码
, 我们说 可以多项式时间被识别, 如果 并且, 给出
和 以及编码 和 , 那么 当且仅当
nondeterministic algorithm
一个非确定性算法
- 可数集
(定义域) - 可数集
(值域) - 有限的字母表
, - 编码函数
- 转移方程
注意
对于
computation
出现在某个计算中的
recognition algorithm
一个非确定性识别算法
- 可数集
(定义域) - 有限的字母表
, - 编码函数
- 转移方程
结束在
我们说输入
如果
并且
令
称
就是说
则
即
此为
Theorem 1:
当且仅当 被多项式时间运行的非确定图灵机接受 非确定图灵机指, 当遇到了两个决策时, 可以将自身复制一份, 走向两个不同的分支 (重复分裂会导致指数级的复制体); 当任何一个决策路径指向
时即可判定 accepted
如果
如果
假设对于一个 instantaneous description
那么这样的
那么可以构造一个确定性图灵机
这样的图灵机可以在多项式时间内运行, 从而
所以
SAT
一些定义
query machine
一个 Turing machine, 有一个 query tape, 和三个状态 query state, yes state, no state.
-computation
初始
-reducible
一组串
DNF
证明 SAT
Theorem 2: 证明如果一组串
可以被非确定图灵机用多项式时间接受, 那么 可以多项式归约到
证明定理 2 后立即得到任何
假设非确定 Turing machine
对于机器
由于
我们可以假设 tape 上有从左到右从
且
假设字母表
定义几个表达式:
表示在第 步时, 第 个方块包含字母 表示在第 步时 状态为 表示在第 步时方块 被 扫描到 (输入)
那么给出
断言每一步 有且仅有一个方块被扫描到我们有
其中
意思就是至少有一个方块, 且任意两个方块最多有一个在同一时刻扫描到
对于
断言在第 步, 第 个方块有且仅有一个字母“有且仅有一个” 使用与
相同的表示方式 是所有 合取 断言每一步 机器有且只有一个状态 断言初始状态满足:其中
, 是空字母, 是初始状态 , , 断言每一时刻 的值是及时更新的例如
断言在第 步状态为 , 扫描到了字符 , 那么第 步状态为 , 是满足 转移方程的 的后继 断言机器一定会结束在接受状态
至此完成
因此证毕
同时, 原文 一共定义了
corollary 1: 所有
个问题的定义对应的串集合都可以归约到
这是因为这
Complete
定义
- SAT
可数集上的
那么
Lemma 2: 给出可数集
; 和 以及一对一编码 和 , 那么 , 如果存在一个函数 使得
存在一个函数
使得 , 当 有定义时 即
21 个问题
定义
归约
SAT
0-1 integer programming例如对于一个子句
为 的条件是所以
即
所以如果存在
满足 , 说明 SAT 问题可满足, 因此 SAT 问题可归约到 0-1 IP注意: 上面 0-1 IP 问题的定义能否改成
?(因为说到 “规划” 问题, 如线性规划, 一般都是不等式约束条件)
SAT
clique每个子句建出
个点, 一共 个子句, 个点同时, 同一个子句之间的点没有连线, 互为补的两个字符对应的点也没有连线
那么如果原图有
的团, 一定满足每个点恰好来自于一个子句, 并且两两不互补这样就可以调控各字符的取值, 使得 SAT 可满足
一个例子:
图中红色线是互补的两个点省去的线
由于有
个子句, 所以只要有三角形, 就说明原图有 的团, 则 SAT 可满足clique
set packing建一个反图,
表示反图的邻接表那么如果反图中有
个互不相交的集合, 说明集合对应的点两两不相连, 那么在原图中这些点一定是两两相连, 所以这 个点构成一个团clique
node cover建一个反图, 反图中如果有一个
的顶点覆盖 , 那么反图的每条边都至少与一个 中的点相连, 则原图中的每一条边都不与 中的任何一点相连, 所以原图中的所有边一定都连接着 中的点并且一定是两两之间有边, 不然会存在一条反图中不与任何
中点相连的边所以
中的点构成一个团, 大小node cover
set covering把图中的邻接表
选出 个, 如果能够覆盖所有边, 说明这 个集合对应的点是原图的一个大小为 的顶点覆盖node cover
feedback node set直接把原图改成双向的有向图
注意双向的有向边组成了两个点的环, 所以如果这些环都经过了某个
中的点, 说明在原图中所有边都被 中的点覆盖node cover
feedback arc set复制一份图, 同一个点两两连接, 并且对于原图中有的边, 从
号图向 号图连边那么在新图中选择相同编号的点之间的边, 就相当于在原图中选择了这个点, 所以就从选点归约到了选边
node cover
directed hamilton circuit这个太妙了, 只能用个例子讲了
如果 node cover 中 原图
为:其中边集对应的编号是
, 即为 的整数集, 是 边的个数那么构造一个有向图:
其中每种颜色对应了一种边, 没有箭头的边是双向边;
同时图中有两个
, 表示的是同一个点 (只是为了方便连线, 左右各复制了一组 )可以看出, 每次从左到右依次遍历点, 当走到
, 可以从最右边跳回最左边, 算作选择了一个点;如果在选择完
时 或 之前, 将整个图所有点遍历了一遍, 说明在原图 中将所有边都覆盖了, 所以新图的一个 hamilton 环对应了原图的一个 node cover图中一条路径为
表示选择了
两个点走黑色边代表覆盖了第
条边走浅紫色边代表覆盖正反第
条边走紫色边代表从与
相连的第 条边走到第 条边. 这个过程覆盖了与 相连的所有边走蓝色, 红色边代表用
选择某个点作为 node cover 的解directed hamilton circuit
undirected hamilton circuit直接将原图复制成
份, 相同编号点之间连线, 号点向 号点按照原图边集连边- 为什么复制
份? 感觉复制 份也可以?
- 为什么复制
SAT
3-SAT就是可以把所有
的子句递归地拆成 的子句
- 3-SAT
chromatic number
这个画图都说不清楚了, 边太极八多了注意所有子句组成的点集
假设
这是一个不可满足的例子
首先
与 不同色然后
两两相连, 所以他们颜色各不相同, 相当于创建了 种颜色不妨设
接下来
和 保证了 , 即对应第 种字符的颜色就是然后
和 保证了可以看到, 此时 使得 只有 种颜色可用, 但是这些边又要求 颜色互不相同所以不可满足- 3-SAT
chromatic number
clique cover如果 clique cover 中有
个团, 那么所有满足 的边都在 clique cover 的图中所以反图所有的边满足
- chromatic number
exact cover
exact cover 相当于 set packing 和 set covering 的结合版
- chromatic number
exact cover
hitting setexact cover 中的每个集合
对应着 hitting set 中的每个元素 ; exact cover 中的每个元素 对应着 hitting set 中的每个集合如果 hitting set 中
, 说明 exact cover 中对应的 没有被覆盖, 不满足如果 hitting set 中
, 说明 exact cover 中对应的 被覆盖了两次及以上, 不满足 互不相交例如, exact cover 中
那么对应的 hitting set 中
并且 exact cover 中选出的
的下标对应着 hitting set 中 的元素例如
所以对应的
exact cover
steiner tree , 即需要覆盖所有的元素 和根节点从根
向所有 连边, 每条边权为之后将所有满足
的两点间连边, 边权为这样如果能够覆盖所有的
并且没有重复覆盖, 那么边权一定等于exact cover
3D matching3D matching 是说集合
中的每个点两两之间不能有任一维坐标相同, 即这些点每一维的坐标都恰好组成这泰庙辣
是任意的 映射接下来对于
, 要求对于所有集合 对应的边 , 这个映射要将所有边转一遍, 从而构成一个局部的环对于映射
, 我们把所有 拿出来, 这些边正好把 覆盖掉, 此时只有这些边正好组成了对应的 的所有边, 才能保证所有 互不相交同时, 在这个假设下,
中的 项的第一维应该恰好对应集合 中的所有边那么如果这些边
的 都不属于 中的某个下标, 那么 项的第二维选择 , 应该正好在第二, 三维将这些边覆盖掉, 并且两两之间不同这是因为这些边构成了一些置换环, 那么长度为
的环刚好覆盖了某个 的所有边例如, 用
中的例子:那么不妨假设
, 即 是下标最小的包含 的集合那么有
此时有
项 项这里的
决定了我们选择了打对勾的 个点, 加上 的 个点构成了 3D matching 的可以发现
这些点中的 的 刚好为 , 对应着我们在 exact cover 中选择的对应的图为
其中红色便对应着
选择的边, 蓝色表示 中的边如果将
改成 , 此时的 就不存在 exact cover 了而此时的表变成
𝟚 𝟚 𝟛 𝟚 项 项𝟚 𝟙 𝟚 𝟚 𝟚 𝟚 𝟚 𝟚 此时无论选取
还是 , 都会和 项中的坐标重复并且除了这一种
的选取方式, 其他任意一种 都不行所以原问题不存在 exact cover
exact cover
knapsack令
, 可以构造出一个 的常数然后
这里的
相互正交 ( 进制表达), 恰好可以对应原问题的用
表示是否选择 , 即在原问题中是否选择了所以如果有
, 并且knapsack
sequencing按照图中方法转换, 无论
取值, 求出来的解一定对应了原问题的一个解, 使得某一个下标 之前的时间序列满足所以对应着原问题的解
对于这个不等号, 和
中一样, 我们可否改变背包问题的定义为 ?(因为我们一般要求能装下就行, 不要求一定要刚好等于容量)
knapsack
partition如果存在一个分割
, 使得 与 不在同一组, 并且两组和相等那么
移项得到
所以
就是背包的下标解集如果
与 在一组, 那么移项得到
, 不满足 , 舍弃如果想要反着归约 partition
knapsack, 该怎么做?可以尝试将原式同加一个
, 变成所以令
即可
partition
max cut如果满足
, 则有即
这等同于
所以
所以一定满足
, 即所以
是原问题的一个分割
参考 :