2-SAT問題的小結


簡介

  什么是2-SAT呢?就是有一些集合,每個集合中有且僅有兩個元素,且不能同時選取兩個元素,集合間的元素存在一定的選擇關系,求解可行性及可行方案。

算法

1、連邊

2、跑tarjan

3、判可行性,即同一集合中的兩個點是否同屬一個強連通塊

4、縮點建新圖,連反邊

5、拓撲序,若當前點沒有被訪問過,則選擇該點,不選擇其另外的點

連邊

2-SAT算法本身並不難,關鍵是連邊,不過只需要充分理解好邊的概念:a->b即選a必選b。

a、b不能同時選:選了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必須選:a'->a。

一些題目

POJ 3683 輸出方案

POJ 3678 連邊練習

BZOJ 1823 判斷可行性

某不知名字的題目

題意:一開始有一些點與點的關系,問刪除一些點之后,方案是否可行。

分析:刪除點之后,原有的關系的連邊會有所改變,因此對於每刪除一些點,就要重新構圖,跑2-SAT

資料

  以上只是為了個人總結所用,所以並不是很詳細。

  需要的可前往:http://blog.csdn.net/jarjingx/article/details/8521690

  

 


免責聲明!

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



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