2-SAT
2-Satisfiability
2可滿足性,2-SAT或僅2SAT是將值賦值給變量的計(jì)算問題,每個(gè)變量具有兩個(gè)可能的值,以滿足變量對的約束系統(tǒng)。這是一般布爾可滿足性問題的一個(gè)特例,它可能涉及對兩個(gè)以上變量的約束,以及約束滿足問題,這可以允許對每個(gè)變量的值進(jìn)行兩次以上的選擇。但與NP完全的那些更一般的問題形成對比,可以在多項(xiàng)式時(shí)間內(nèi)求解2-可滿足性。
個(gè)人理解
多個(gè)約束條件每個(gè)約束有兩個(gè)限制,判斷是否存在滿足所有條件的合理解
思路
對于這樣的一組限制 AAA和BBB不能同時(shí)存在,我們可以轉(zhuǎn)化成滿足AAA的條件下BBB就不能滿足,對應(yīng)建圖的時(shí)候我們把每個(gè)點(diǎn)拆成兩個(gè)情況選or不選,根據(jù)情況建邊
1.是否存在解
hihoCoder #1467
Tarjan縮點(diǎn),如果一個(gè)強(qiáng)連通分量里面存在矛盾(一個(gè)點(diǎn)選和不選同時(shí)存在)就不存在解
2.求一個(gè)字典序最小的解
hihoCoder #1468
暴力DFS O(NMNMNM)
首先SAT建邊,然后對于每個(gè)點(diǎn)先從小的序號(hào)DFS,之后判斷標(biāo)記的點(diǎn)中是否存在矛盾,如果拆成的兩個(gè)點(diǎn)都存在矛盾,那就無解
總結(jié)
- 上一篇: hihoCoder #1468 : 2-
- 下一篇: Codeforces Round #54