NP完全性证明
完全性证明
六个基本的NPC问题
问题
六个基本的
三元可满足性问题 (3SAT)
三维匹配问题 (3DM)
顶点覆盖问题(VC)
团的问题
哈密顿回路 (HC)
均分问题
基本NP完全问题的证明
基本N 完全问题的证明
NP完全问题的证明方法
1
基本 完全问题
基本NP完全问题: 3SAT
三元可满足性问题:3SAT
实例: 有穷布尔变量集U 和U上的子句集
实
元可满足性问题
句
布
U={u1, u2, …, un}
C={c1, c2, ... , c }
C {c1, c2, ... , cm}
其中|ci|=3, 1≤ i≤ m
问: 对于U 是否存在满足C中所有子句的真值赋值?
问: 对于U 是否存在满足C中所有子句的真值赋值?
2
基本 完全问题
基本NP完全问题: 3DM
三维匹配问题 3DM
三维匹配问题:3DM
实例: 集合M ⊆ W×X×Y, 其中W, X, Y互不相交, 且
|W|=|X|=|Y|=q
问: M是否包含一个匹配, 即是否存在子集 M’⊆ M 使
问 是否 含 个 配, 即是否存在子集 ⊆ 使
|M’|=q 且M’中任意两个元素的三个坐标都不相同?
肯定实例
肯定实例:
W={a1,a2,a3,a4}, X={b1,b2,b3,b4}, Y={c1,c2,c3,c4}
M={ (a1,b2,c1) , (a1,b1,c1), (a2,b1,c2) , (a2,b2,c1),
(a3,b3,c3), (a4,b4,c4) , (a4,b2,c1)}
3
基本 完全问题
基本NP完全问题: VC
顶点覆盖:VC
顶点覆盖:VC
实例: 图G=(V,E), 正整数 K ≤ |V|
问: G中是否存在大小不超过 K 的顶点覆盖, 即是否存在子集
问: G中是否存在大小不超过 K 的顶点覆盖, 即是否存在子集
V’⊆V,使得 |V’|=K, 且对每条边{u,v}∈E 都有u∈V’或 v∈V’?
团团
实例: 图G=(V,E), 正整数 J ≤ |V|.
问: G是否包含大小不小于 J 的团, 即是否存在子集V’⊆V,使
得 |V’| ≥ J, 且 V’ 中每两个顶点都由 E 中的一条边连接?
独立集
实例:图G=(V,E),正整数 J ≤ |V|
问:G 中是否包含大小不小于 J 的独立集,即是否存在V’⊆V,
使得|V’| ≥ J,且∀ u,v∈V’,{ u, v }∉E?
使得
且
4
顶点覆盖 团与独立集问题关系
顶点覆盖、团与独立集问题关系
设 G = (V, E)为图,V’⊆V, 是G 的补图, 则
设
是 的补图 则
为图
G
V’是 G 的顶点覆盖
⇔ V−V ’是G 的独立集
集
⇔ V−V ’是 的团G
G 含有大小不超过 K 的顶点覆盖
⇔ G 中含有大小不小于|V|−K 的独立集
⇔ 中含有大小不小于|V|−K 的团
G
5
均分
基本NP完全问题: HC,均分
基本 完全问题
HC
HC
实例: 图 G=(V,E), |V|=n.
问: G中是否包含一条哈密顿回路, 即是否有G 的顶点
问 中是否包含 条哈密顿回路 即是否有 的顶点
排列
<
v
j
1
<≤
ni
v
{,
,
v
j
1
j
n
}
∈
E
?
,...,
j
2
v
,
vv
,
{
ij
j
i
1
+
v
}
nj
∈
>
使得
E
1,
均分
实例: 有穷集合 A, ∀a∈A 有 “大小” S(a)∈Z+
问: 是否存在子集 A’⊆A 使得
aS
)(
)(
∑
∑
Aa
'
∈
aS
)(
)(
∑=
∑
AAa
'
−∈
6
归约次序
归约次序
SAT
3SAT
3SAT
3DM
VC
均分 HC 团(独立集)
7
证明证明:3SAT∈NPC
思路 思路:
3SAT∈NP
将SAT的实例变换成 3SAT 的实例
将SAT的实例变换成 3SAT 的实例
根据子句中的文字个数 k 分别处理
1个子句转变成多个子句
保证每个子句含有3个文字
转变前与转变后的真值不变
证 显然3SAT属于NP
设 U={u1, u2, ... , un}, C={c1, c2, ... , cm}是 SAT的任何实 例
n},
的任何实 例
, m}是
{ 1,
2,
设 { 1,
对于C中任意子句
2,
,
cj = { z1, z2, ... , zk }
j
构造新增的变量集Uj’和子句集Cj’
k
1
2
8