2-SAT

warning:本文语言极为口语化(不规范)并具有严重个人风格,后续(也许)会改正

  • 简述:

按照逻辑关系建图,在新图上跑完 Tarjan 后,对于其 Tarjan 所在点双的序号大小可推出其在图中的拓扑序大小(与点双序相反)。对于一种选择,选择拓扑序最大的对应方案即可。

  • 适用:

对于每个对象仅有两种方案:\(0\)\(1\),即要么选这个对象,要么不选。

  • 为什么要选择拓扑序尽量大的对应方案呢:

在 DAG 上,对拓扑序越靠后的点,想要满足选择它的话,那么必然是在先前条件都满足的情况下成立的,这样保证了正确性。

  • 其他注意事项:
  1. 一般的 2-SAT 问题不可做为模板去解决其他的 K-SAT 问题(\(k>2\)),但有种情况不要弄混

  2. 2-SAT 不可解决带边权问题,也不可解决每个对象可以选 \(0\) 还是必选 \(0\) 等类似问题。

  3. 一般的 2-SAT 不能求合法方案数,但有一种特殊情况:P3513

配套练习:极需要回锅

posted @ 2023-06-06 18:25  Pwtking  阅读(11)  评论(0)    收藏  举报