2-SAT简介

本文介绍了2-SAT问题的背景,通过一个开party的故事引入。解释了2-SAT的解决思路,通过构建有向图,利用Tarjan算法找到强连通分量判断问题的可行性。接着,文章总结了2-SAT算法并提供了实践题目,包括POJ2296 Map Labeler和NOI比赛题目,展示了2-SAT在实际问题中的应用。
摘要由CSDN通过智能技术生成

前方是2-SAT蒟蒻版(大雾)

蒟蒻不会打代码啊QAQ,代码有参考

配合洛谷食用风味更佳

2-SAT, 就是2-Satisfiability。 Satisfiability,可满足性。

背景故事

我要请大家开party!– O b l i a Oblia Oblia

O b l i a Oblia Oblia这样想。

因为 O b l i a Oblia Oblia是萌妹子同时是OIer和MOer,所以她可以同时邀请到OI和MO的神犇们。又因为所有已经接受 O b l i a Oblia Oblia邀请的OIer和MOer数量总共 2 n 2n 2n个,但party会场最多只能来 n n n个人,所以她已经先在考虑之后给大家编号并且构建了 n n n个集合,每个集合里面只有两个人,她准备在每个集合中挑选一个人参加party。公平起见,她采用了随机数的方式。

O b l i a Oblia Oblia已经生成了一个序列。正在她准备发出邀请函之前,学姐 L e D e v i a LeDevia LeDevia告诉她,这些人之间是有矛盾的!

热心的 L e D e v i a LeDevia LeDevia O b l i a Oblia Oblia给出了 m m m组的矛盾关系 ( a , b ) (a,b) (a,b),也就是说, a a a b b b是不可以同时参加Party的~~(否则就会搞事情)~~

于是爱好和平的 O b l i a Oblia Oblia就来找了 T y n n Tynn Tynn解决问题。

拒绝别人是不好的。说不定还可以暗箱操作一下


思路

T y n n Tynn Tynn是以神奇方法和龟速出名的dalao。

他是这样想的:

我们假设 x x x所在的集合里面的另外一个元素是 x ′ x' x

因为每一个集合都要选一个人,而对于每一组矛盾关系, ( a , b ) (a,b) (a,b)不能同时选择。所以,如果选择了 a a a,那就必须要选择 b ′ b ' b

上面那个命题的逆命题是:如果选择了 b ′ b' b,就必须选择 a a a

那么,该命题的逆否命题就是,不选择 b ′ b' b,就不可以选择 a a a

由于逆否命题恒成立,所以不选择 b ′ b' b,就不可以选择 a a a一定是对的

因为每个集合必须选一个,所以不选 b ′ b' b就要选 b b b,不选 a a a就必须选 a ′ a' a.

所以,选择了 b b b就必须选择 a ′ a' a

(对吧 o

这个“必须”的关系是可以传递的吧……

dalao就是dalao, T y n n Tynn Tynn马上想到了图论。

每一条“必须”都构边,就变成了有向图。

于是我们发现,这一个图有很强的对称性。

“tarjan陪伴强联通分量
----《膜你抄》

T y n n Tynn Tynn开始哼歌,于是就发现了这一句歌词

强连通分量!!

开始强连通分量缩点。

对于一个强连通分量中的所有元素,只要选择了一个,就必须选择剩下的所有元素

T y n n Tynn Tynn试了几次,发现 T a r j a n Tarjan Tarja

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值