多项式规约

有多项式时间算法的问题和可能没有多项式时间算法的问题

有多项式时间算法可能没有多项式时间算法
最短路问题最长路问题
最小割问题最大割问题
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 XpY Y ≤ p X Y\leq_p X YpX,那么我们用 X ≡ p Y X\equiv_p Y XpY,表示问题 X X X和问题 Y Y Y能够相互多项式时间规约。

由于自规约性,我们以下讨论的都是该问题的判定性问题(决策问题)

① 独立集问题 ≡ p \equiv_p p 顶点覆盖问题
即若 S S S是一个大小为 k k k的独立集当且仅当 V − S V-S VS是一个大小为 n − k n-k nk的顶点覆盖

独立集问题
问题描述:给定一个图 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 VS是一个大小为 n − k n-k nk的顶点集合。
考虑任意一条边 ( 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 uVS,要么 v ∈ V − S v\in V-S vVS,要么都属于 V − S V-S VS
根据顶点覆盖的定义, V − S V-S VS覆盖了任意边 ( u , v ) (u,v) (u,v)
⇐ \Leftarrow
已知 V − S V-S VS是一个大小为 n − k n-k nk的顶点覆盖,则 S S S是一个大小为 k k k的顶点集合。
考虑任意一条边 ( u , v ) ∈ E (u,v)\in E (u,v)E:
因为 V − S V-S VS是一个顶点覆盖, u ∈ V − S u\in V-S uVS,要么 v ∈ V − S v\in V-S vVS,要么都属于 V − S V-S VS
所以要么 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 XV G G G中大小为 k k k的顶点覆盖,则 Y = { S v : v ∈ x } Y = \{S_v: v\in x\} Y={Sv:vx}为大小为 k k k的集合覆盖。
⇐ \Leftarrow 不妨令 Y ⊆ S Y\subseteq S YS为大小为 k k k的集合覆盖,则 X = { v : S v ∈ Y } X=\{v:S_v\in Y\} X={v:SvY} 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) (3SAT)
目标:给定一个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 3SATp独立集问题 ≡ 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问题)。

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值