2-SAT
warning:本文语言极为口语化(不规范)并具有严重个人风格,后续(也许)会改正
- 简述:
按照逻辑关系建图,在新图上跑完 Tarjan 后,对于其 Tarjan 所在点双的序号大小可推出其在图中的拓扑序大小(与点双序相反)。对于一种选择,选择拓扑序最大的对应方案即可。
- 适用:
对于每个对象仅有两种方案:\(0\) 或 \(1\),即要么选这个对象,要么不选。
- 为什么要选择拓扑序尽量大的对应方案呢:
在 DAG 上,对拓扑序越靠后的点,想要满足选择它的话,那么必然是在先前条件都满足的情况下成立的,这样保证了正确性。
- 其他注意事项:
-
一般的 2-SAT 问题不可做为模板去解决其他的 K-SAT 问题(\(k>2\)),但有种情况不要弄混
-
2-SAT 不可解决带边权问题,也不可解决每个对象可以选 \(0\) 还是必选 \(0\) 等类似问题。
-
一般的 2-SAT 不能求合法方案数,但有一种特殊情况:P3513
配套练习:极需要回锅

浙公网安备 33010602011771号