目录
2-SAT详解
SAT 是适定性(Satisfiability)问题的简称。一般形式为 k - 适定性问题,简称 k-SAT。而当 k > 2 k>2 k>2 时该问题为 NP 完全的。所以我们只研究 k = 2 k=2 k=2 的情况。
定义
2-SAT,简单的说就是给出 n n n 个集合,每个集合有两个元素,已知若干个 < a , b > <a,b> <a,b>,表示 a a a 与 b b b 矛盾(其中 a a a 与 b b b 属于不同的集合)。然后从每个集合选择一个元素,判断能否一共选 n n n 个两两不矛盾的元素。显然可能有多种选择方案,一般题中只需要求出一种即可。
现实意义
比如邀请人来吃喜酒,夫妻二人必须去一个,然而某些人之间有矛盾(比如 A 先生与 B 女士有矛盾,C 女士不想和 D 先生在一起),那么我们要确定能否避免来人之间没有矛盾,有时需要方案。这是一类生活中常见的问题。
使用布尔方程表示上述问题。设 a a a 表示 A 先生去参加,那么 B 女士就不能参加( ¬ a \neg a ¬a); b b b 表示 C 女士参加,那么 ¬ b \neg b ¬b 也一定成立(D 先生不参加)。总结一下,即 ( a ∨ b ) (a \vee b) (a∨b)(变量 a , b a, b a,b 至少满足一个)。对这些变量关系建有向图,则有: ¬ a → b ∧ ¬ b → a \neg a\to b\wedge\neg b\to a ¬a→b∧¬b→a( a a a 不成立则 b b b 一定成立;同理, b b
2-SAT问题详解

本文详细介绍了2-SAT问题的概念、定义及现实应用场景,并提供了基于Tarjan算法的解决方案。此外,还介绍了暴力搜索方法,并通过具体例题展示了如何实现2-SAT问题的求解。
最低0.47元/天 解锁文章
337

被折叠的 条评论
为什么被折叠?



