首页 > 其他 > 详细

2-sat

时间:2021-05-16 10:12:57      阅读:18      评论:0      收藏:0      [点我收藏+]

算法讲解

  • 算法用途:
    就是2判定性问题,是一种特殊的逻辑判定问题。有n个集合,每个集合里有两个元素且必须选一个(这里我们用\(A_i\),\(A_i‘\)表示),再给出若干条限制条件,判断是否有解或者输出解。

  • 算法流程
    建边:只建必须满足该逻辑条件的边。
    性质1:边满足传递性->原图满足对称传递性->图中的环分别对称
    显然一个环内满足传递性,因此该环内的点判定性相同,我们将该图缩点(这里我们由A->S)。
    性质2:新图中,同样具有对称传递性(同样反图也满足)。
    性质3:若问题无解,则必然存在\(A_i\), \(A_i‘\) ,使得\(A_i\), \(A_i‘\)属于同一个环。(此性质可以解决很多只询问判定性的问题)
    性质4:对于任意一对\(S_i\), \(S_i‘\)的后代节点与\(S_i‘\)的前代节点相互对称。
    如果选择\(S_i\),那么对于所有\(S_i\) \(S_j\)\(S_j\)都必须被选择。(性质2)
    \(S_i‘\)必定不可选,这样\(S_i‘\)的所有前代节点也必定不可选(将这一过程称之为删除)。
    因此,为了方便我们先建\(S\)的反图,用拓扑排序,传递不可选标记(即删除)即可。

2-sat

原文:https://www.cnblogs.com/bestime/p/14773143.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!