2-sat

http://www.cppblog.com/MatoNo1/archive/2011/07/13/150766.html

11种  (默认表达式值为1)

1.  x             x必选 (x' ,x)

2. ~x            x必不选(x, x')

3. x&y           x和y必都选 (x',x),(y',y) 

4. x&(~y)      x和y' 都选 (x',x),(y,y')

5. x|y            x,y至少选一个(x',y),(y',x)

6. x|(~y)       x,y'至少选一个(x',y'),(y,x)

7. ~(x&y)     => (~x)|(~y) ,  x',y'至少选一个 (x,y'),(y,x')

8. ~(x|y)     =>(~x)&(~y), x',y'必都选 (x,x'),(y,y')

9. x^y        x,y不可以同时选 ,x',y'也不可以同时选(即x,y取值不同) (x,y'),(y,x'),(x',y),(y',x)

10. ~(x^y)   (x,y取值相同) (x,y),(y,x),(x',y'),(y',x')

11.x^(~y)    (x,y'取值不同,x,y取值相同)  (x,y),(y,x),(x',y'),(y',x')


POJ 3678

2-sat建图题,把每个值是1(a)和0(~a)为两种状态,分清楚各种操作的本质就很简单了

AND 结果为1:建边 ~x->x,~y->y (两个数必须全为1)

AND 结果为0:建边 y->~x,x->~y (两个数至少有一个为0)

OR 结果为1:建边 ~x->y,~y->x (两个数至少有一个为1)

OR 结果为0:建边 x->~x,y->~y (两个数必须全为0)

XOR 结果为1:建边 x->~y,y->~x,~y->x,~x->y (两个数必须不同)

XOR 结果为0:建边 x->y,y->x,~x->~y,~y->~x (两个数必须相同)

  

posted @ 2012-10-26 13:14  快乐.  阅读(209)  评论(0编辑  收藏  举报