有多项式时间算法的问题和可能没有多项式时间算法的问题
有多项式时间算法 | 可能没有多项式时间算法 |
---|---|
最短路问题 | 最长路问题 |
最小割问题 | 最大割问题 |
2元可满足性问题 | 3元可满足性问题 |
平面图4着色问题 | 平面图3着色问题 |
二部图顶点覆盖问题 | 一般图顶点覆盖问题 |
匹配问题 | 3D匹配问题 |
素性测试问题 | 质因子分解问题 |
线性规划问题 | 整数线性规划问题 |
多项式规约
问题
X
X
X能多项式规约到问题
Y
Y
Y:
对于任意一个问题
X
X
X的实例,进行多项式时间的标准计算步骤,加上多项式时间对
Y
Y
Y问题求解方法的调用,最终能求解出问题
X
X
X,则问题
X
X
X能多项式规约到问题
Y
Y
Y。
Note:
问题
Y
Y
Y比问题
X
X
X要更难,或者难的核心在
Y
Y
Y上。
可以空跑问题
Y
Y
Y算法,只是单纯的多项式时间的标准计算步骤
如果问题 X X X和问题 Y Y Y能够相互多项式时间规约,即 X ≤ p Y X\leq_p Y X≤pY且 Y ≤ p X Y\leq_p X Y≤pX,那么我们用 X ≡ p Y X\equiv_p Y X≡pY,表示问题 X X X和问题 Y Y Y能够相互多项式时间规约。
由于自规约性,我们以下讨论的都是该问题的判定性问题(决策问题)
① 独立集问题
≡
p
\equiv_p
≡p 顶点覆盖问题
即若
S
S
S是一个大小为
k
k
k的独立集当且仅当
V
−
S
V-S
V−S是一个大小为
n
−
k
n-k
n−k的顶点覆盖
独立集问题
问题描述:给定一个图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)和一个整数
k
k
k,是否存在一个大小为
k
k
k的顶点子集,使子集中任意两个顶点不邻接。
顶点覆盖问题
问题描述:给定一个图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)和一个整数
k
k
k,是否存在一个大小为
k
k
k的顶点子集,使图中每一条边至少有一个顶点在上述顶点子集中。
如下图黑色顶点集合为大小为6的独立集,白色顶点集合为大小为4的顶点覆盖:
证明:
⇒
\Rightarrow
⇒
已知
S
S
S是一个大小为
k
k
k的独立集,则
V
−
S
V-S
V−S是一个大小为
n
−
k
n-k
n−k的顶点集合。
考虑任意一条边
(
u
,
v
)
∈
E
(u,v)\in E
(u,v)∈E:
因为
S
S
S是一个独立集,要么
u
∉
S
u\notin S
u∈/S,要么
v
∉
S
v\notin S
v∈/S,要么都不属于
S
S
S。不可能都属于,因为那样
S
S
S就不是独立集了。
所以要么
u
∈
V
−
S
u\in V-S
u∈V−S,要么
v
∈
V
−
S
v\in V-S
v∈V−S,要么都属于
V
−
S
V-S
V−S。
根据顶点覆盖的定义,
V
−
S
V-S
V−S覆盖了任意边
(
u
,
v
)
(u,v)
(u,v)
⇐
\Leftarrow
⇐
已知
V
−
S
V-S
V−S是一个大小为
n
−
k
n-k
n−k的顶点覆盖,则
S
S
S是一个大小为
k
k
k的顶点集合。
考虑任意一条边
(
u
,
v
)
∈
E
(u,v)\in E
(u,v)∈E:
因为
V
−
S
V-S
V−S是一个顶点覆盖,
u
∈
V
−
S
u\in V-S
u∈V−S,要么
v
∈
V
−
S
v\in V-S
v∈V−S,要么都属于
V
−
S
V-S
V−S。
所以要么
u
∉
S
u\notin S
u∈/S,要么
v
∉
S
v\notin S
v∈/S,要么都不属于
S
S
S。
因此
S
S
S是一个独立集。
证毕!
②顶点覆盖问题 ≤ p \leq_p ≤p集合覆盖问题
集合覆盖问题
问题描述:给定集合
U
U
U,
S
S
S集合中每个元素都是集合
U
U
U的子集,给定整数
k
k
k。问能否用
S
S
S集合中
≤
k
\leq k
≤k个元素,使它们的并集等于原集合
U
U
U。
如图所示,下列集合覆盖大小为
k
=
2
k=2
k=2:
目标:任意给一个顶点覆盖问题的实例,都能构造出对应的集合覆盖实例。集合覆盖大小为
k
k
k当且仅当顶点覆盖大小为
k
k
k。
构图思路如下:
原顶点覆盖的顶点相当于集合覆盖中的子集合,原顶点覆盖的边相当于集合覆盖的子集合中元素。
⇒
\Rightarrow
⇒不妨令
X
⊆
V
X\subseteq V
X⊆V为
G
G
G中大小为
k
k
k的顶点覆盖,则
Y
=
{
S
v
:
v
∈
x
}
Y = \{S_v: v\in x\}
Y={Sv:v∈x}为大小为
k
k
k的集合覆盖。
⇐
\Leftarrow
⇐不妨令
Y
⊆
S
Y\subseteq S
Y⊆S为大小为
k
k
k的集合覆盖,则
X
=
{
v
:
S
v
∈
Y
}
X=\{v:S_v\in Y\}
X={v:Sv∈Y}为
G
G
G中大小为
k
k
k的顶点覆盖。证毕!
③三元可满足性问题
≤
P
\leq_P
≤P独立集问题
三元可满足性问题
问题描述:多个文字的并集构成一个从句,多个从句的交集构成一个合取范式
(
C
N
F
)
(CNF)
(CNF)。给定一个合取范式,问是否存在使合取范式为真的分配方案,为一般的
S
A
T
SAT
SAT问题。若限定每个从句中文字的数量为3个,则为三元可满足性问题
(
3
−
S
A
T
)
(3-SAT)
(3−SAT)。
目标:给定一个3-SAT问题的实例
ϕ
\phi
ϕ,我们都能构造出一个图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)独立集问题的实例。3-SAT问题有解,当且仅当
G
G
G中有个大小为
k
=
∣
ϕ
∣
k=|\phi|
k=∣ϕ∣,
∣
ϕ
∣
|\phi|
∣ϕ∣大小为合取范式中从句的个数。
构图思路如下:
- G G G中三个顶点构成一个三角形表示一个从句,每个节点表示一个文字
- 每个顶点与其对立节点连线
证明:
⇒
\Rightarrow
⇒(偏说明性)
若对于合取范式
ϕ
\phi
ϕ我们找到一个分配方案使其为真,则我们对于图
G
G
G每个三角形中选择分配方案中文字为真对应的一个顶点。一共
∣
ϕ
∣
|\phi|
∣ϕ∣个三角形,每个三角形按照上述方案选择一个顶点,选完后构成的
∣
ϕ
∣
|\phi|
∣ϕ∣个顶点的集合为图
G
G
G的独立集。
⇐
\Leftarrow
⇐(偏说明性)
令
S
S
S是一个大小为
k
k
k的独立集,则由于构图性质,对于每个三角形中有且仅有独立集中的一个顶点。令这些顶点对应合取范式中的文字为真,则合取范式
ϕ
\phi
ϕ可满足。
总结
3 − S A T ≤ p 3-SAT\leq_p 3−SAT≤p独立集问题 ≡ p \equiv_p ≡p顶点覆盖 ≤ p \leq_p ≤p集合覆盖
补充
目标:决策问题、搜索问题、优化问题这三个问题可以相互多项式规约
- 决策问题:是否存在一个大小为 k k k的顶点覆盖
- 搜索问题:找到一个大小为 k k k的顶点覆盖
- 优化问题:找到一个最小的顶点覆盖
由于上述三种问题多项式等价,因此我们之后只以决策问题为例,讨论该问题的性质(该问题属于 P P P问题、 N P NP NP问题还是 N P C NPC NPC问题)。