往期文章:
-
NPC簡介
-
NP-hard問題證明
-
NPC 證明(一)
-
NPC 證明(二)
本文介紹如何通過3SAT歸約,進而證明支配集是NPC問題。
3SAT問題
→ 3-Satisfiability (3Sat)
給定一個有窮的布爾變量集合X={x1,x2,…,xn},變量xi取值爲1或者0,另有一組子句C={c1,c2,…,cm},C=c1∧c2∧…∧cm,ci=xj∨xk∨xl。求是否存在一組取值使得C爲真,即任意ci爲真。
Dominating Set(支配集)
→ Dominating Set
給定圖G,正整數k,是否存在dominating set的大小最多爲k。
Dominating Set D是點集V的一個子集,並且對於不在D中的點v,至少存在一條邊(u,v)∈E,u∈D。
解題思路:
我們知道將支配集歸約到3SAT進而證明3SAT是NPC是很容易的。CSCI5320的習題裏,要進行相反方向的歸約,將3SAT的問題轉化成支配集的問題進行求解,相對來說比較難。
- 對於每個變量xi,我們都構造兩個點,xi和xi,以及一條邊(xi,xi)
- 對於ci當中的三個變量xj∨xk∨xl,我們構造一個點ci,三條邊(xj,ci),(xk,ci)和(xl,ci)。如果布爾表達式取反,那麼我們可以對應的連接(xj,ci)。
- 最關鍵的一步,我們如何確保xi,xi恰好有且僅有一個點落在支配集裏。我們增加一個點yi,並且添加兩條邊(xi,yi)與(xi,yi)。
那麼我們可以知道C可滿足當且僅當上述構造的圖中有一個大小m的支配集。
證明:
- 當C可滿足時,顯而易見,對應取真的變量構成一個支配集。
- 當上述構造的圖中有一個大小爲m的支配集時,因爲(xi,xi,yi)三個點當中最少有一個點在支配集當中,所以支配集的大小最小爲m。那麼我們可以得到結論(xi,xi,yi)三個點恰好有且僅有一個點在支配集當中。當yi在支配集當中時,我們總可以由(xi,xi)當中的一個點來替換。那麼由此便可得到一個令C可滿足的取值。