2-sat 入门

                                                 2-sat 入门

    2-sat算法比较固定套路,题目也不是很多.论文方面的话可以参考对称性解决2-satppt,赵爽的2-SAT解法浅析论文.

    什么是2-sat问题呢,抽象来说就是存在一些组选择,每组选择有两个,需要选出一个,他们之间的某些不能共存,是否能选出符合条件的一组解.

    这个算法的关键就在于对称性,如果ab不能共存,则意味着选择了a之后必须选择~b,选择b之后必须选择~a,根据这样建图,那么其中的一个强连通分量就意味着选择一个其他必选,所以很显然,如果存在a~a存在于同一个强连通分量里面就意味着无解.其他情况均是有解的,具体的原理可以参考以上两篇论文.

因为2-sat模式比较固定,所以很多时候分组的状态和他们之间的矛盾关系成为一个难点,此外,2-sat很多情况下用于判定是否存在解,所以很多的时候就会与二分搜索联系起来.

    介绍几道题目.

    http://www.cnblogs.com/ambition/archive/2011/07/30/2-sat.html

    这个博客里面有常见的各种题型,这里就介绍一下比较典型的两道题目,poj2723hdu1816 两道,

    Poj2723说的给定一组钥匙选择,每组钥匙之间只能选一把,然后给定一些组按顺序排列的锁,两把锁之间能开一把就能打开这个门,这题的矛盾就在于,两把锁对应的钥匙不能同时不选择,所以就可以这样建图,如果一组门是ab,那么~b->a,~ab.这样跑tarjan就可以了,这道题需要一个二分,可以简单的证明,如果前K扇门能打开的话,那么i<k扇门必定可以打开,如果k不能打开,那么i>K扇门也必定打不开.

    Hdu1816这道题是上题的升级版,上题中钥匙的选择中必定没有重复的出现所有钥匙,这道题钥匙串中可以出现重复的钥匙,,但是同一把钥匙选出之后,其他的钥匙就会马上消失.所以这题如果还按照上面这样建图的话,就无法找到确切的矛盾关系,因为~a,a可能出现多次.

那么就将一把钥匙的选和不选作为a~a,,如果一组钥匙出现的是a,b.a->~b,b->~a.意味着如果选择了一把钥匙,其他相同钥匙就全部选择了,然后其他的建边就和上题一样,一组锁里的钥匙不能同时不存在.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值