2-SAT学习小计

介绍

2-SAT是一个非常简单的东东,但是网上很多的资料都把这个玩意写得无比复杂。
可能这就是详细把,由于我太菜了,只会记结论。

SAT 是适定性(Satisfiability)问题的简称。一般形式为 k - 适定性问题,简称 k-SAT。而当 k>2 时该问题为 NP 完全的。所以我们只研究 k=2 的情况。

正文

所以说了怎么多东东,2-SAT到底是什么鬼。
其实就是给你很多的两两限制条件,然后要求出某种方案使得能够满足这所有的限制条件。
举例子就是:
在这里插入图片描述
当然,这个例子极其智障。根本看不懂。
比如说,有两个人要派一个人去取钱,可以同时去,但是必须有一个人去。
那么我们就可以看到有3种情况:

  • 两个人都去。
  • 其中一个人不去,那么意味着另一个人必须去。
  • 两个人都不去(显然不行)

那么上面这3中情况中,能产生限制条件的是第二种情况。
那么设 A A A去的状态为 a a a,不去的状态为 a − 1 a^{-1} a1
B B B去的状态为 b b b,不去的状态为 b − 1 b^{-1} b1
那么可以用一条有向边来描述这个限制条件:
a − 1 − > b a^{-1}->b a1>b则表示 A A A不去,则 B B B必须去。
b − 1 − > a b^{-1}->a b1>a则表示 B B B不去,则 A A A必须去。

这样若有众多的限制条件,就可以构造出一个有向图,那么原问题就转化成一个图上的问题,于是各种tarjan之类的算法就可以往上面套了。
听着还是挺简单的,但分析还是有困难的。
那就看例题!

例题

【WC2016模拟】废水回收

学习资料:
https://oi-wiki.org/graph/2-sat/
https://www.cnblogs.com/cjjsb/p/9771868.html
https://blog.csdn.net/jarjingx/article/details/8521690

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值