zoukankan      html  css  js  c++  java
  • 2-SAT学习小计

    介绍

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

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

    正文

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

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

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

  • 相关阅读:
    PHP—字符串编码
    使用html模板
    创建html模板
    默认.htpl改为.htpl
    eclipse导入项目前面有感叹号
    eclipse点不出方法
    eclipse界面混乱
    面试题
    多线程
    瀑布流
  • 原文地址:https://www.cnblogs.com/RainbowCrown/p/13492983.html
Copyright © 2011-2022 走看看