2-SAT速成

本文只作總結性說明html

2-SAT

2-SAT是k-SAT問題的一種,k-SAT問題在\(k>=3\)時已經被證實是NP徹底問題優化

2-SAT問題定義比較簡單spa

有n個布爾變量\(x_1-x_n\)。給出\(m\)個限制關係,每一個關係最多隻對兩個變量進行限制。求一組取值使得知足全部限制。htm

這裏的限制例如:選\(A\)必選\(B\) 或是 \(A,B\)至少選一個blog

解決方法

2-SAT問題所構成的圖具備對稱性排序

對於兩個點來講get

即若選\(A\)必選\(B\),那麼選\(B\)必選\(A\)class

根據這種性質,前人總結出了一種方法變量

將一個點\(A\)拆爲\(A,A'\)方法

1.若選\(A\)必選\(B\),那麼從\(A\)\(B\)連一條邊

2.tarjan縮點(把時間從\(O(NM)\)優化至\(O(n)\))

3.判斷是否\(A'A\)是否在同一強聯通份量中

對於須要輸出方案的題目

4.根據縮完點的圖,建出其反圖

5.對反圖進行拓撲排序

6.根據拓撲排序的順序標記答案

經典模型

  • 二者(A,B)不能同時取

那麼選擇了A就只能選擇B’,選擇了B就只能選擇A’

連邊A→B’,B→A’

  • 二者(A,B)不能同時不取

那麼選擇了A’就只能選擇B,選擇了B’就只能選擇A

連邊A’→B,B’→A

  • 二者(A,B)要麼都取,要麼都不取

那麼選擇了A,就只能選擇B,選擇了B就只能選擇A,選擇了A’就只能選擇B’,選擇了B’就只能選擇A’

連邊A→B,B→A,A’→B’,B’→A’

  • 二者(A,A’)必取A

  連邊A’→A

\(A'A\)不能同時出現,選\(A'\)必選\(A\),故只能單獨選\(A\)

例題

由簡單到簡單2333

POJ 3207

BZOJ 1823

洛谷 P3209

BZOJ 2199

POJ 3683

相關文章
相關標籤/搜索