通過3SAT證明支配集是NPC問題

往期文章:

  1. NPC簡介

  2. NP-hard問題證明

  3. NPC 證明(一)

  4. NPC 證明(二)

本文介紹如何通過3SAT歸約,進而證明支配集是NPC問題。

3SAT問題

\rightarrow 3-Satisfiability (3Sat)

給定一個有窮的布爾變量集合X={x1,x2,,xn}X=\lbrace x_1,x_2,\ldots,x_n \rbrace,變量xix_i取值爲1或者0,另有一組子句C={c1,c2,,cm}C=\lbrace c_1,c_2,\ldots,c_m \rbraceC=c1c2cm\mathbb{C}=c_1\wedge c_2 \wedge \ldots \wedge c_mci=xjxkxlc_i = x_j \vee x_k \vee x_l。求是否存在一組取值使得C\mathbf{C}爲真,即任意cic_i爲真。

Dominating Set(支配集)

\rightarrow Dominating Set

給定圖GG,正整數kk,是否存在dominating set的大小最多爲kk
Dominating Set DD是點集VV的一個子集,並且對於不在DD中的點vv,至少存在一條邊(u,v)E(u,v)\in EuDu\in D

解題思路:

我們知道將支配集歸約到3SAT進而證明3SAT是NPC是很容易的。CSCI5320的習題裏,要進行相反方向的歸約,將3SAT的問題轉化成支配集的問題進行求解,相對來說比較難。

  1. 對於每個變量xix_i,我們都構造兩個點,xix_ixi\overline{x_i},以及一條邊(xi,xi)(x_i,\overline{x_i})
  2. 對於cic_i當中的三個變量xjxkxlx_j \vee x_k \vee x_l,我們構造一個點cic_i,三條邊(xj,ci)(x_j,c_i),(xk,ci)(x_k,c_i)(xl,ci)(x_l,c_i)。如果布爾表達式取反,那麼我們可以對應的連接(xj,ci)(\overline{x_j},c_i)
  3. 最關鍵的一步,我們如何確保xix_i,xi\overline{x_i}恰好有且僅有一個點落在支配集裏。我們增加一個點yiy_i,並且添加兩條邊(xi,yi)(x_i,y_i)(xi,yi)(\overline{x_i},y_i)

那麼我們可以知道C\mathbb{C}可滿足當且僅當上述構造的圖中有一個大小mm的支配集。

證明:

  1. C\mathbb{C}可滿足時,顯而易見,對應取真的變量構成一個支配集。
  2. 當上述構造的圖中有一個大小爲mm的支配集時,因爲(xi,xi,yi)(x_i,\overline{x_i},y_i)三個點當中最少有一個點在支配集當中,所以支配集的大小最小爲mm。那麼我們可以得到結論(xi,xi,yi)(x_i,\overline{x_i},y_i)三個點恰好有且僅有一個點在支配集當中。當yiy_i在支配集當中時,我們總可以由(xi,xi)(x_i,\overline{x_i})當中的一個點來替換。那麼由此便可得到一個令C\mathbb{C}可滿足的取值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章