目录
- NP完全问题的证明
- 一、限制法
- 最小覆盖问题(VC)
- 子图同构问题
- 0-1背包(Knapsack)
- 三元集合的恰当覆盖(X3C)
- 集中集
- 有界度的生成树
- 多处理机调度
- 二、局部替换法
- 3SAT问题
- 两点间的哈密顿通路问题
- 区间排序
- 分量设计法
- 最小拖延排序
NP完全问题的证明
一、限制法
最小覆盖问题(VC)
- 问题实例 集合\(S\)的子集的集合\(C\),正整数\(k\)。问\(C\)是否有\(S\)的大小不超过\(k\)的覆盖,即是否包含子集\(C' \subseteq C\)使得 \(|C'|=k\)且 \(\bigcup C'=S\)。
- 证明方法:限制 \(\forall c \in C\),\(|c|=3\),\(|S|=sk\),则为X3C问题。
子图同构问题
- 问题实例
图\(G=(V_1,E_1)\),\(H=(V_2,E_2)\)。
问\(G\)中是否有同构于\(H\)的子图,即是否有子集\(V \subseteq V_1\),\(E \subseteq E_1\),使得 \(|V|=|V_2|\),\(|E|=|E_2|\) ,且存在双射函数\(f:V_2 \to V\),使得 \((u,v) \in E \Longleftrightarrow (f(u),f(v)) \in E_2\) - 证明方法:限制\(H\)为完全图,且 \(|V_2|=k\)
0-1背包(Knapsack)
- 问题实例
有穷集\(U\),\(\forall u \in U\),大小\(s(u)\in Z^+\),价值\(v(u)\in Z^+\),大小的约束\(B \in Z^+\),价值目标\(K \in Z^+\)。
问是否有子集\(U' \subseteq U\),使得
\[\begin{equation} \sum_{\boldsymbol{u} \in U} \boldsymbol{s}(\boldsymbol{u}) \leq \boldsymbol{B}, \quad \sum_{\boldsymbol{u} \in \boldsymbol{U}^{\prime}} \boldsymbol{v}(\boldsymbol{u}) \geq \boldsymbol{K} \end{equation}\]
- 证明方法:限制 \(\forall v \in U\),
\[s(u)=v(u) \]
\[B=\left\lfloor\frac{1}{2} \sum_{u \in U} s(u)\right\rfloor, \quad K=\left\lceil\frac{1}{2} \sum_{u \in U} v(u)\right\rceil \]
则成为均分问题。
三元集合的恰当覆盖(X3C)
- 问题实例
有穷集\(S\) ,\(|S|=3q\) ,\(S\) 的三元子集\(C\)。
问是否有\(C' \subseteq C\),使得\(S\)的每个元素恰好出现在\(C'\) - 证明方法:限制
- \(S=W \cup X \cup Y\)
- \(|W|=|X|=|Y|=q\)
- \(C=\{(w,x,y)|(w,x,y) \in W \times X \times Y)\}\) 则 \(|C'| = q\) ,且\(C'\)
集中集
- 集合\(S\)的子集的集合\(C\),正整数\(k\)。问\(S\)是否包含\(C\)的大小不超过\(k\)的集中集,即是否有\(S' \subseteq S\),\(|S'| \leq k\),使得\(S'\)至少包含\(C\)的每个子集的一个元素。
- 证明方法:限制 \(\forall c \in C\) ,\(|c|=2\),令\(V=S\),\(E=C\),则构成图 \(G=(V,E)\)
有界度的生成树
- 问题实例
图\(G=(V,E)\)
问\(G\)是否包含一棵顶点度数不超过\(k\)的生成树,即是否有子集\(E'\subseteq E\),\(|E'|=|V|-1\),图\(G'=(V,E')\) 是连通的,且\(V\)中每个顶点至多包含在\(E'\) 的\(k\) - 证明方法:限制\(k=2\)
多处理机调度
- 问题实例 有穷任务集\(A\),\(\forall a \in A\),长度\(l(a) \in Z^+\),处理机台数\(m \in Z^+\),截止时间\(D \in Z^+\)。
问是否存在不交的集合\(A_1,A_2,...,A_m\)使得
\[A=A_{1} \cup A_{2} \cup \ldots \cup A_{m} \]
\[\max \left\{\sum_{a \in A_{i}} l(a): 1 \leq i \leq m\right\} \leq D \]
- 证明方法:限制\(m=2\),
\[D=\left\lfloor\frac{1}{2} \sum_{a \in A} l(a)\right\rfloor \]
则成为均分问题。
二、局部替换法
选择已知完全问题的实例中的某些元素作为基本单位,然后把每个基本单元替换成指定结构,从而得到目标问题的对应实例。
3SAT问题
两点间的哈密顿通路问题
区间排序
分量设计法
最小拖延排序