2-sat问题
来源:互联网 发布:大雄的生化危机 知乎 编辑:程序博客网 时间:2024/04/30 09:55
2-SAT问题是这样的:有n个布尔变量Xi,另有m个需要满足的条件,每个条件的形式都是“Xi为真/假或者Xj为真/假”。
(a∨!b)∧(b∨c)∧(!c∨!a)
2-SAT的目标是给每个变量赋值使得所有条件得到满足。
上式令a和b为真而c为假时公式可以得到满足。
( a∨b ) ∧ (a ∨!b ) ∧ (!a ∨b ) ∧ (!a ∨!b )无法满足
利用蕴涵(→,表示如果a则b)将每个字句(a∨b)改写成等价形式(!a → b)∧(!b → a)
建图:对每个变量x,构造两个顶点分别代表x和!x,以→关系为边建立有向图。
如果图上的a点能够到达b点的话,就表示当a为真时b也一定为真。该图中同一个强连通分量中所含的所有文字的布尔值均相同。
如果存在某个布尔变量x,x和!x均在同一个强连通分量中,则无法令整个布尔公式的值为真。反之,如果不存在这样的布尔变量,那么对于每个布尔变量x,让
X所在的强连通分量的拓扑序在!X所在的强连通分量之后↔x为真
(a∨!b)∧(b∨c)∧(!c∨! a)
在实际问题中,2-SAT问题在大多数时候表现成以下形式:有N对物品,每对物品中必须选取一个,也只能选取一个,并且它们之间存在某些限制关系(如某两个物品不能都选,某两个物品不能都不选,某两个物品必须且只能选一个,某个物品必选)等,这时,可以将每对物品当成一个布尔值(选取第一个物品相当于0,选取第二个相当于1),如果所有的限制关系最多只对两个物品进行限制,则它们都可以转化成基本限制关系,从而转化为2-SAT模型。
下面是几道题:
POJ 3905 Perfect Election
POJ 3683 Priest John's Busiest Day
POJ 3648 Wedding
具体详见:http://download.csdn.net/download/boyxiejunboy/8911091(不用积分下载哦)
- 【2-SAT】2sat问题小结
- 2-SAT问题
- 2-SAT 问题
- 2-sat问题
- 2-sat 问题 模板
- 2-sat问题
- 2-sat问题总结
- 2-sat问题
- 2-sat问题
- 2-sat问题
- 2-SAT 问题
- 2-SAT问题
- 2-sat问题
- 2-SAT问题
- 2-SAT问题
- 2-sat问题
- 2-SAT问题
- 2-SAT问题(LA3713)
- leetcode 033 —— Search in Rotated Sorted Array
- The argument is invalid.
- codeforces 558c&558d&558e
- 经常需要对WebView中加载的内容是否完成或者是否加载失败进行判别
- Ubuntu12.04下hadoop-2.7.0编译-配置
- 2-sat问题
- 十六进制 及进制间的转换
- X86 内存布局分析(Memory map)
- HDU-1091-A+B for Input-Output Practice (III)(继续水)
- Chapter 5. Forms
- Delphi LoadUserProfile
- Web应用遇到问题记录
- Leetcode_100Same Tree
- Tinkpad E450 U盘启动