码迷,mamicode.com
首页 > 其他好文 > 详细

2-SAT

时间:2017-10-27 23:07:43      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:通过   存在   大写   如何   字符集   font   逻辑   观察   等价   

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

标签:通过   存在   大写   如何   字符集   font   逻辑   观察   等价   

原文地址:http://www.cnblogs.com/Sdchr/p/7389219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!