L24 NPC
Outline:
- NPC = P ?
- NPC判定问题
- 规约: 等价
Ref:
- 算法设计与分析(Algorithm design and analysis) by 黄宇
- 优化问题 → 判定问题: 优化问题往往有某个结构,结构有指标, 给指标选定一个阈值k,对k做判定
NPC = P ?
许多NPC看似是P,但证明是错误的。 即: 目前还无法证明NP = P
- Clique问题的一种错误的规约是“伪Clique问题”,后者是“对给定的k,判断是否存在k顶点的Clique”,该问题是P的。 但是Clique问题的正确表述是“对任意k,判定是否有k顶点的Clique”,即k为变量而不是常数,因此Clique问题不是P的。 错误在于问题的转换不对。
- 不过,对NPC的某个参数转变成常数可以将其转化为P,这是一种解NPC的思路
- ChangeCoin代价是\(O(nN)\)是P, 但它不是NP, 因为在该问题最合理的建模下,数值用k位表示,代价是\(O(n2^k)\). 所以背包问题不是多项式可解
- 规约是有代价的( 如范式间的转换,不一定是P )
- DNF是多项式可解的,而CNF转换到CNF不是多项式时间的, 所以CNF不是多项式时间可解(不是P)
NPC判定问题
已知特例为NPC,可以比较容易地判定Genaral是否为NPC, 即: 特例归约到general比较简单。
Example
- Clique是稠密子图问题的特例, 所以Clique \(\leq_P\) 稠密子图. 所以稠密子图是NPC
- 已知划分问题是NPC, 它是背包问题的特例, 所以背包问题是NPC
归约:等价
独立集和点覆盖问题是等价的
Proof
设有独立集I,点覆盖集C, 对G中任意边 e = (u,v),存在点u不属于I(若u,v都属于I,则与独立集矛盾), 所以u在I的补集中。 即任何一条边,至少有一个点在I的补集中,所以I的补集是C。
支配集(Domination Set)与集合覆盖问题是等价的.