2 sat相關複習

2022-03-01 03:15:04 字數 1305 閱讀 9513

noi曾經考過,誰能說得準呢

通俗的sat問題表述一般是這樣的:有很多個集合,每個集合裡面有若干元素,現給出一些取元素的規則,要你判斷是否可行,可行則給出乙個可行方案。如果所有集合中,元素個數最多的集合有k個,那麼我們就說這是乙個k-sat問題。

k-sat是np問題,當k>2時,所以在oi裡,我們只討論2-sat問題的解決。

一般形式(模板):n個點,每個點有個01變數,給出m個限制,讓你找出符合限制的一組合法解

限制條件一般為\(x_ \oplus }=0,x_1\&y_0=1\)之類的.

我們利用限制條件來構出圖來

乙個限制條件如果是選\(a\)則必須選\(b\)

那麼,\(a -> b\)(顯性條件)

\(b' -> a'\)(隱性條件)

就是說第一條邊就是限制條件所說。

第二條邊就是說選了\(b'\),則再選擇了\(a\)會與條件矛盾,所以只能選擇\(a'\)

這樣我們構出的圖就有對稱性了

2-sat的構圖總是有對稱性的

舉例子選1不選4,選2不選3,選7不選3

我們首先選1,則3,8是必須選的(4,7必須不選),5,6隨便選乙個

矛盾的情況就是乙個組都選了(上下兩個點)

然後列舉一組沒有確定過的點,進行判定,如果矛盾,則選另乙個a',不矛盾就選擇a。

得不到答案無解,得到就是一組解

為何上面沒被確定的點就可以繼續判定,

也就是說這組點沒有被之前的點所連,他們與之前的組是沒有關係的(邊即關係)

這也是得到一組字典序最小解的方法(應該是求字典序最小的唯一方法)

複雜度\(o(n*m)\)

我們發現,乙個環內,要不都不要,要不都要,就是說這些點都可以用乙個點表示

喂喂喂,你別忘了這是2-sat問題誒,你乙個點要有兩個屬性誒,縮點了如何保證啊。

emm,不用管。

我們之前建邊的對稱有啥用呢?

如果乙個環是a->b->c->d->e->a

那麼根據前面建邊的對稱,一定有a'

那麼我們就說這兩個環對稱

那麼我們建立的新圖自然就是對稱的,也就保證了2-sat的兩個屬性。

環內如果一組都在裡面,則無解(因為兩個點必須有乙個選和乙個不選)。

那麼我們先tarjan縮下點,判一下無解

我們選擇了乙個點,則它的所有連線著的點都要被選(還有連線著的連線著的點……),很麻煩

那我們先找入讀為0的點,這麼就沒影響了。

就是拓撲排序,不過拓撲的是反圖(邊都反過來)。

不過tarjan的時候就是按拓撲序來的,所以根本不用再在寫拓撲了(寫也沒關係啦),嘻嘻。

模板 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不是NPC呢 2 SAT學習筆記

我們舉乙個簡單的例子 機房裡有三位大佬小s,小l,小m和乙個蒟蒻tqr,他們刷題時有不同的要求 因為蒟蒻什麼題都不會做,故不列舉 大佬 要求 小s小l 小m 要求1 不包含數論知識 a 包含數論知識 a 不包含數論知識 a 要求2包含幾何知識 b 包含幾何知識 b 不包含幾何知識 b 要求3不包含圖...

2 SAT學習筆記

由對稱性解2 sat問題 2 sat解法 上面兩篇 很清楚的介紹了什麼是2 sat以及一些原理演算法 2 sat問題是圖論中乙個比較有意思的問題,重點是建圖,對於邊的意思,就是如果你選了i,就必須選j。2 sat問題有個很明顯的地方就是對於每個i,i包含兩個點,i表示選第乙個點,i 表示選第二個點,...