2-SAT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-SAT相关的知识,希望对你有一定的参考价值。
2-SAT
2-SAT 问题:给 $n$ 个布尔变量 $f_1, f_2, ..., f_n$ ,以及 $m$ 个二元限制条件,问是否存在解、构造一组特殊解。
构建一个由 $n$ 个点对的图 $G$ 。
点:将 $f_x$ 拆成两个点 $x, x‘$ ,选择点 $x$ 表示 $f_x = 1$ ,选择点 $x‘$ 表示 $f_x = 0$ 。
边:若 $p \rightarrow q$ ,则点 $p$ 向点 $q$ 连一条有向边。
问题变为:对一个左右对称的图 $G$ ,在每个点对中选择 $1$ 个点,使得对于每个被选择的点,它的所有后继都被选择。
举个例子,$f_x ~ or ~ f_y$ 如何连边?
$f_x ~ or ~ f_y \Leftrightarrow x‘ \rightarrow y, y‘ \rightarrow x$
必要性:当 $f_x = 0$ 时,$f_y = 1$ ,对应 $x‘ \rightarrow y$ ,取逆否关系得 $y‘ \rightarrow x$ 。
充分性:反设 $f_x ~ or ~ f_y = 0$ ,则 $f_x = f_y = 0$ ,与 $x‘ \rightarrow y$ 矛盾。
由构图方式得知图 $G$ 左右对称。
将 $G$ 用 Tarjan 算法缩点,得到新图 $G‘$ 。
由于 $G$ 左右对称,由 $n$ 个点对组成,所以 $G‘$ 左右对称,由若干个点对组成。
设 $G$ 中点 $u$ 在 $G‘$ 中对应点 $p_u$ ,对 $G‘$ 的每一个点 $x$ 根据退栈顺序标号为 $L_x$ 。
标号引理:若 $x, y \in G‘$ ,则 $L_x > L_y$ 。
根据 Tarjan 算法,$y$ 一定在 $x$ 之后退栈,所以 $L_x > L_y$ 。
2-SAT 定理:2-SAT 问题有解,当且仅当对于任意标号 $x$ ,$p_x \ne p_{x‘}$ 。
记 $A$ 为 “ 2-SAT 问题有解 ” ,$B$ 为 “ 对于任意标号 $x$ ,$p_x \ne p_{x‘}$ ” ,只需要证明 $\neg B \Rightarrow \neg A$ 且 $A \Rightarrow B$ 。
先证明 $\neg B \Rightarrow \neg A$ 。当存在点 $x$ ,$p_x = p_{x‘}$ 时,选择了点 $x$ 必须要选择点 $x‘$ ,选择了点 $x‘$ 必须要选择点 $x$ ,无解。否则对于任意的点 $x$ ,保证 $x$ 和 $x‘$ 不在同一个强连通分量内。
再证明 $A \Rightarrow B$ 。首先如果强连通分量中的某个点被选择了,则这整个强连通分量都要被选择。所以现在的问题变为:对 $G‘$ 的每个点对选择一个点,满足若一个点被选择,那么它的所有后继都要选择。考虑构造性证明有解:对 $x \in G‘$ ,选择 $L_x$ 与 $L_{x‘}$ 中较小的点。反设 $x \Rightarrow y$ ,$x$ 被选择,$y$ 没有被选择,则可以推出矛盾:
$\begin{aligned} L_x & < L_{x‘} & 选择了 x 而不是 x‘ \\ & < L_{y‘} & 对称性,标号引理 \\ & < L_y & 选择了 y‘ 而不是 y \\ & < L_x & 标号引理 \end{aligned}$
综上,2-SAT 问题有解,当且仅当对于任意标号 $x$ ,$p_x \ne p_{x‘}$ 。更多地,还找到了求 2-SAT 问题的一组解的线性做法:通过 Tarjan 算法求出 $L_{p_u}$ ,对于 $u \in G$ ,选择 $L_{p_u}$ 与 $L_{p_{u‘}}$ 中较小的。
对于一元限制条件 $f_x$ ,$f_x \Leftrightarrow x‘ \rightarrow x$ 。
必要性:当 $f_x$ 时,显然选择 $x$ ,所以若选择了 $x‘$ ,就要选择 $x$ ,钦定这种选法是非法的。
充分性:反设选择了 $x‘$ ,则要选择 $x$ ,而只能选择一个点,矛盾。
2-SAT 定理能否兼容一元限制条件?
对 $x \rightarrow x‘$ ,选择选择 $x‘$ 。而根据标号引理,$L_x > L_{x‘}$ ,根据 2-SAT 引理,我会选择 $x‘$ 。综上,二者得以统一!
逻辑命题
列几个与 2-SAT 相关的等值公式。
(1)$P \lor (Q \land R) = (P \lor Q) \land (P \lor Q)$
理解:$P$ 成立,或者 $Q, R$ 都成立,等价于 $P$ 或 $Q$ 成立,且 $P$ 或 $R$ 成立。
(2)$\neg (P \lor Q) = \neg P \land \neg Q$
理解:有一个成立都不行, 即两个都不成立.
练习
[CF 875C] National Property
题意
给定字符集大小 $m(m \le 100000)$ ,每种字符有两种字母:小写字母,大写字母。任意大写字母小于小写字母。
给定 $n(n \le 100000)$ 个总和不超过 $100000$ 的由小写字母组成的单词,问是否存在一种将某些小写字母替换成大写字母的方案,使得这 $n$ 个单词按照字典序排列。
分析
我观察到每种字母有两种选择:不改,改。这有点像经典的 two-sat 问题。
对于相邻两个字符串 $S$ , $T$ ,注意到相同的前缀不会影响,找到第一个不相同的位置,不妨设靠前的字符串的这个位置是 $x$ ,靠后的是 $y$ 。当 $x$ 不存在时,一定有 $S \le T$ ;当 $x$ 存在,且 $y$ 不存在时,一定有 $S > T$ ,矛盾;当 $x < y$ 时,若选择了 $x$ ,必须选择 $y$ ,若选择了 $y‘$ ,必须选择 $x‘$ ;当 $x > y$ 时,必须选择 $x‘$ 和 $y$ 。
以上是关于2-SAT的主要内容,如果未能解决你的问题,请参考以下文章
2-CNF SAT如何在P中,而3-CNF SAT在NPC中?