2-SAT 学习笔记
SAT 是适定性(Satisfiability)问题的简称。一般形式为 k - 适定性问题,简称 k-SAT。而当
时该问题为 NP 完全的。所以我们只研究 的情况。
定义
2-SAT,简单的说就是给出
现实意义
比如邀请人来吃喜酒,夫妻二人必须去一个,然而某些人之间有矛盾(比如 A 先生与 B 女士有矛盾,C 女士不想和 D 先生在一起
使用布尔方程表示上述问题。设
常用解决方法
Tarjan SCC 缩点
算法考究在建图这点,我们举个例子来讲:
假设有
然后通过这样子建边我们跑一遍 Tarjan SCC 判断是否有一个集合中的两个元素在同一个 SCC 中,若有则输出不可能,否则输出方案。构造方案只需要把几个不矛盾的 SCC 拼起来就好了。
输出方案时可以通过变量在图中的拓扑序确定该变量的取值。如果变量
显然地,时间复杂度为
暴搜
就是沿着图上一条路径,如果一个点被选择了,那么这条路径以后的点都将被选择,那么,出现不可行的情况就是,存在一个集合中两者都被选择了。
那么,我们只需要枚举一下就可以了,数据不大,答案总是可以出来的。