2SAT总结

做完了POJ的6道2SAT,总结一下

2SAT算法流程

     1.构图

     2.求SCC

     3.判断有无解

     4.缩点反向建图

     5.拓扑排序

     6.染色并输出


构图模型:

    模型一:两者(A,B)不能同时取
      那么选择了A就只能选择B’,选择了B就只能选择A’
      连边A→B’,B→A’
    模型二:两者(A,B)不能同时不取
      那么选择了A’就只能选择B,选择了B’就只能选择A
      连边A’→B,B’→A
    模型三:两者(A,B)要么都取,要么都不取
      那么选择了A,就只能选择B,选择了B就只能选择A,选择了A’就只能选择B’        ,选择了B’就只能选择A’
      连边A→B,B→A,A’→B’,B’→A’
    模型四:两者(A,A’)必取A
      连边A’→A

    例子:poj2749:奶牛有矛盾,这个矛盾是对true 和 false都有影响,即(A,B)不能同时取,(A',B')不能同时取,两个模型一;喜欢即模型三;根据距离建边则是模型一

          poj2723:钥匙不能同时取,模型一;打开门,模型二

          poj3648:太鬼畜,下一个

          poj3678: 经典;AND为1,必须取两个true,所以A->B ,B->A,A'->A,B->B';  AND为0,模型一; OR为1,模型二;  OR为0,与AND1类似; XOR类似模型三

         





你可能感兴趣的:(POJ,图论——2SAT)