目錄
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'\) 中任兩個元素都不相交,成為3DM問題。
集中集
- 集合\(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 \]
則成為均分問題。
二、局部替換法
選擇已知完全問題的實例中的某些元素作為基本單位,然后把每個基本單元替換成指定結構,從而得到目標問題的對應實例。