2 SAT問題的小結

2022-10-10 09:36:14 字數 635 閱讀 3352

什麼是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

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

需要的可前往:

模板 2 SAT 問題 2 SAT

2 sat 問題 模板 有n個布林變數 x 1 x n 另有m個需要滿足的條件,每個條件的形式都是 x i 為true false或 x j 為true false 比如 x 1 為真或 x 3 為假 x 7 為假或 x 2 為假 2 sat 問題的目標是給每個變數賦值使得所有條件得到滿足。輸入格式...

學習筆記 2 SAT 小結

目錄從sat說起布林可滿足性問題 boolean satisfiability problem sat 屬於決定性問題,也是第乙個被證明屬於np完全的問題。此問題在電腦科學上許多領域的皆相當重要,包括電腦科學基礎理論 演算法 人工智慧 硬體設計等等。摘自某百科 如 有三個bool變數,三個人要求的取...

關於2 SAT問題

就是有一些布林變數,然後它們之間有一些關係,比如說某些異或起來等於1,或者某兩個and等於0之類的 要判斷是否無解或找出一組可行解 那麼把每個變數拆成兩個點x和x 代表true和false,選x代表這個變數為true,選x 代表這個變數為false 然後按照上面的關係進行連邊,一條邊x連向y代表選了...