從P和NP到k-center inapproximability


填上期中的坑

P和NP

判定性問題

P問題和NP問題都是專指一類判定性問題。一般我們說一個問題是P問題或NP問題,都是說這個問題的判定性版本是P問題或NP問題。

例如:

  • 最大點獨立集問題:給出一張無向圖 \(G\),求它的最大點獨立集;
  • 最大點獨立集問題的判定性版本:給出一張無向圖 \(G\) 和常數 \(k\),判斷這張圖是否有大小不超過 \(k\) 的點獨立集。

或者:

  • 旅行商問題:給出一張有向帶邊權圖 \(G\),找一條環路,使得經過每個點恰好一次,且邊權和最小;
  • 旅行商問題的判定性版本:給出一張有向帶邊權圖 \(G\) 和權值 \(v\),判斷是否有一條環路,使得經過每個點恰好一次,且邊權和不超過 \(v\)

形式化地,一個判定性問題 \(X\) 是一個關於實例的集合(在例子中表現為答案為yes的輸入),你需要判斷給定的實例 \(s\) 是否滿足 \(s\in X\).

容易發現,判定性問題是原問題的基礎,且形式統一(都是對給定的輸入判斷yes或no),因此P和NP問題的研究將在判定性問題的范疇。

P問題

P(Polynomial)問題即多項式問題,指存在一種算法,使得對於任意輸入,都能在輸入長度的多項式級別的時間內給出正確的yes和no。

形式化地,判定性問題 \(X\) 是P問題當且僅當存在算法 \(A(\cdot)\),使得對於任意的 \(s\)\(A(s)=\begin{cases}\text{yes, if }s\in X \\\text{no, if }s\notin X\end{cases}\),且 \(\text{time}(A,s)\in\text{poly}(|s|)\),其中 \(|s|\) 表示 \(s\) 的長度。

需要注意的是,對於一個數 \(x\) ,輸入長度是 \(\log x\) 級別的,因此素數判斷(\(\sqrt{x}=2^{\frac12\log x}\))和01背包(\(nm=n2^{\log m}\))等算法不是多項式算法。

NP問題

NP(Non-deterministic Polynomial)問題即非確定性多項式問題,指存在一種算法,使得對於任意的輸入,答案為yes當且僅當存在一個多項式級別的憑據,使得這個算法接收輸入和憑據后會在輸入長度的多項式級別的時間內給出yes。

形式化地,判定性問題 \(X\) 是NP問題當且僅當存在算法 \(B(\cdot,\cdot)\),使得對於任意的 \(s\)\(s\in X\) 當且僅當存在憑據 \(t\),滿足 \(B(s,t_s)=\text{yes}\),且 \(|t|,\text{time}(B,s,t)\in\text{poly}(|s|)\)

這個定義比較抽象,可以簡單理解為可以在多項式時間內驗證一個解(憑據)是否滿足條件,這個解(憑據)用來幫助這個算法去解決原問題。例如,在最大點獨立集問題的判定性版本中,我們很難在多項式時間內解出這張圖是否有滿足條件的點獨立集,但如果給出一個點集,我們能夠輕易地判斷這個點集是否是一個點獨立集以及集合大小是否滿足條件。

另一方面,需要注意到,判斷這樣一個問題的答案為no是很難的,因為“存在”的否命題是“任意”,因此需要枚舉所有的憑據 \(t\) 並判斷是否均不滿足條件,在例子中表現為枚舉所有可能的點集。

顯而易見,P \(\subseteq\) NP,因為在多項式可解的問題中,我們不需要輔助憑據就可以直接解決原問題,即直接令 \(B(s,t)=A(s)\)

注意:NP並不是non-polynomial的縮寫,P和NP是包含而不是互斥的關系。

P=NP嗎?

NP問題是P問題嗎?這是一個世紀難題。遺憾的是,現有的很多NP問題都沒有找到多項式級別的算法,因此目前普遍認為P \(\neq\) NP,雖然仍未得到證實。

NPC和NPH

歸約

注意到多項式的加法、乘法和嵌套所得的依然是多項式,因此在研究多項式與非多項式的范疇時,我們可以任意地進行多項式級別的轉化:如果一個問題是P問題或NP問題,則轉化后的問題仍然是P問題或NP問題。這個轉化過程被稱為歸約。容易發現歸約具有傳遞性。

例如:對於最大點獨立集問題的判定性版本,如果我們將每個點看作包含這個點及其相鄰點的集合,則原問題就轉化為互斥集合問題的一個特殊情況。我們稱最大點獨立集問題的判定性版本可以歸約到互斥集合問題。

如果 \(X\) 問題可以歸約為 \(Y\),則可以理解為解決 \(Y\) 的難度不小於解決 \(X\),因為此時歸約后的 \(X\)\(Y\) 的一種特殊情況。

NP-Hard

NP-Hard是指一類問題(不一定是判定性問題),使得所有的NP問題都可以歸約到這個問題。

這樣的問題真的存在嗎?答案是肯定的,因為所有NP問題的算法 \(B\) 都要依賴於圖靈機的特性。由此可以證明,SAT問題是NP-Hard的,也因此所有SAT可以歸約到問題都是NP-Hard的。

當 P \(\neq\) NP時,由反證法可知所有NP-Hard都不可能通過多項式算法解決。

NP-Complete

NP-Complete問題是NP問題和NP-Hard問題的交集,即一方面問題本身是NP問題,另一方面所有的NP問題都可以歸約到這個問題。上述提到的SAT問題就是一個NPC問題。

由SAT問題得到的常見NPC問題還有:3-SAT問題、最小點覆蓋問題、集合覆蓋問題、最大點獨立集問題、最大團問題、最小支配集問題、哈密頓路徑問題、3維匹配問題、子集和問題、01背包問題、3染色問題、3划分問題等等。

容易發現,如果一個問題的判定性版本是NPC問題,那么這個問題至少是一個NP-Hard問題。

\(k\)-center及其近似算法

定義

我們稱帶邊權完全圖 \(G(V,E)\) 是一張度量圖當且僅當:

  • \(d(u,u)=0\)
  • \(d(u,v)=d(v,u)\)
  • \(d(u,v)\le d(u,w)+d(w,v)\)

其中 \(d(u,v)\) 表示 \(u\)\(v\) 之間邊的邊權。

\(k\)-center問題被定義為:給出一張度量圖 \(G(V,E)\) 和正整數 \(k\)。一個點集 \(S\) 的半徑 \(r(S)=\max\limits_{v\in V}\min\limits_{s\in S} d(s,v)\)。你要找出一個點集 \(S\), 滿足 \(|S|\le k\),且 \(r(S)\) 最小。

通過從最小支配集問題歸約可知,這個問題本身的判定性問題是NPC的。

2-近似

\(k\)-center問題有很多的 2-近似算法,即找到的 $r(\hat{S})\le2r^* $

這些算法大體思路都是:對所有的 \(s\in S\) 定義 \(V_s=\{v\in V|s=\arg\min\limits_{s_0\in S}d(v,s_0)\}\),由三角不等式可知 \(V_s\) 中的任意兩點距離不超過 \(2r^*\),進而通過一些算法從每個 \(V_s\) 中找到一個點即為原問題的 2-近似。

下面介紹一種延拓性比較強的算法:

  • 猜測一個最優解,記為 \(r_0\)
  • 任選一個點加入點集,並刪掉所有與該點距離小於等於 \(2r_0\) 的點,重復此過程直到所有的點都被刪完;
  • 如果最終加入點集的點數小於 \(k\),則找到了一組答案為 \(2r_0\) 的解;
  • 否則,報告猜測的 \(r_0\) 過小,無法用這個算法找到解;
  • 通過不斷猜測可能的 \(r_0\) (可能情況只有 \(n^2\) 種),最小的可行解就是一個 2-近似解。

分析算法,當 \(r_0\ge r^*\) 時,每個 \(V_s\) 至多會選出一個點,因此一定能找到一組答案為 \(2r_0\) 的解;而當 \(r_0< r^ *\) 時,則可能會找不到解。因此 \(2r^ *\) 是一個緊界,即通過這個算法不能保證找到一組優於 \(2r^ *\) 的解。

\(k\)-center inapproximability

以下都是個人定義,如有錯誤歡迎指正!

強算法與弱算法

是否存在一個優秀的 \((2-\varepsilon)\)-近似算法(\(0<\varepsilon<1\))呢?對於原問題,直接分析會很困難,但是我們可以借鑒上述的 \(2\)-近似算法的思路。我們作出如下定義:

  • 強算法:對於給定的 \(G\)\(k\)\(A_s(G,k)\) 會給出一組解 \(\hat{S}\),滿足 \(r(\hat{S})\le(2-\varepsilon)r^*\)
  • 弱算法:對於給定的 \(G\)\(k\),以及猜測的 \(r_0\),當 \(r_0\ge r^*\)\(A_w(G,k,r_0)\) 一定會報告yes並給出一組解 \(\hat{S}\),滿足 \(r(\hat{S})\le(2-\varepsilon)r_0\);而當 \(r_0< r^ *\) 時,\(A_w(G,k,r)\) 可能會返回報告no。

強算法和弱算法是可以相互轉化的:

  • 強算法 \(\to\) 弱算法:直接令 \(A_w(G,k,r_0)=\begin{cases}A_s(G,k)\text{, if }r(A_s(G,k))\ge(2-\varepsilon)r_0 \\ \text{no, otherwise}\end{cases}\) 即可;
  • 弱算法 \(\to\) 強算法:猜測所有可能的 \(r_0\) (可能情況只有 \(n^2\) 種),最小的可行解就是一個 \((2-\varepsilon)\)-近似解,即 \(A_s\) 的一組解。

進而我們可以得知,強算法是NP-Hard當且僅當弱算法是NP-Hard。因此對於這個原近似算法也就是強算法,我們只需要分析弱算法的難度即可。

約定性問題

通過轉化得到的弱算法依舊有一個問題:這個算法是有一定的非確定性的。當 \(r_0< r^*\) 時,弱算法並不保證給出no,因此弱算法的問題本身並不是一個完美的判定性問題。

我們現在要做的,就是對給定的輸入加一些約定,使得這個算法的輸出應該是確定性的。這樣弱算法的問題就變成了一個判定性問題,進而可以通過歸約來解決。

注意到我們始終遺漏了一個條件 \(r^*\) 是問題的最優解。因此:

  • 當弱算法報告yes並給出解 \(\hat{S}\) 時,一定有 \(r^*\le r(\hat{S})\le(2-\varepsilon)r_0\)
  • 當弱算法報告no時,一定有 \(r_0< r^*\)

這樣當 \(r_0< r^*\le(2-\varepsilon)r_0\) 時,弱算法的輸出是非確定性的,而除此以外的情況,弱算法的報告(yes或no)都是確定的。那么我們干脆刪掉這種情況,即對弱算法的問題的輸入加上約定:要么 \(r^ *\le r_0\),要么 \(r^*>(2-\varepsilon)r_0\),這樣弱算法的問題就變成了一個確定的、完美的判定性問題。

此時我們可以重新陳述這個約定性問題:

  • 給出圖 \(G\)、正整數 \(k\) 以及 \(r_0\)保證要么 \(r^ *\le r_0\),要么 \(r^*>(2-\varepsilon)r_0\)。判斷究竟是這兩種情況中的哪一種。

約定性問題的歸約

在此我們只剩下最后一步:通過將其它NPC問題歸約到這個約定性問題,進而證明這個問題是NPC問題。

我們考慮支配集問題。對於支配集問題中的圖 \(G'\),我們構造度量圖 \(G\),使得對任意的 \(u\neq v\)\(d(u,v)=\begin{cases}1\text{, if }(u,v)\in G' \\ 2\text{, otherwise}\end{cases}\)

此時令約定性問題的 \(k\) 為支配集問題中的 \(k'\)\(r_0\)\(1\),則 \(G'\) 中存在一個大小不超過 \(k'\) 的支配集當且僅當 \(r^ *\le r_0\)。進而我們說明了支配集問題可以歸約到該約定性問題。

於是我們有:支配集(NPC)\(\to\)約定性弱算法的問題(NPC)\(\to\)弱算法的問題(NP-Hard)\(\to\)強算法的問題(NP-Hard),也即對任意的 \(0<\varepsilon<1\)\(k\)-center 的 \((2-\varepsilon)\)-近似是NP-Hard的。

當 P \(\neq\) NP 時,NP-Hard問題不能在多項式時間內解出,因此不存在一個多項式時間的 \((2-\varepsilon)\)-近似算法。

Q&A

Q:這些東西有什么用?
A:幫助你更好地理解NP、NPH、NPC的關系以及\(k\)-center inapproximability的思考過程。
Q:這些東西有什么用?
A:幫助你更好地理解算法設計課上的內容,從而應對期中考試。
Q:這些東西有什么用?
A:……我不知道(
Q:你寫的太爛了!
A:以下是原筆記:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM