2-CNF-SAT问题图形解法的C++实现
CNF(conjunctive normal form)是指由多个子句(clause)通过AND关系连接组成的布尔公式,每个子句由若干个文字(literal)通过OR关系连接而成,每个literal可能是一个布尔变量或者布尔变量取反。2-CNF中每个clause含有2个或两个以下的literal,而2-CNF-SAT(2-conjunctive normal form satisfiability)问题就是找出一个2-CNF公式是否有对布尔变量赋值的方法使2-CNF公式的最终结果为1。例如:
引用:
(x1 OR !x2) AND (x1 OR x2) (这里!表示NOT)
就是一个2-CNF公式,如果取x1 = 1, x2 = 0,它的值为(1 OR 1) AND (1 OR 0) = 1,因此这是一个可以满足2-CNF的变量赋值,这个公式属于2-CNF-SAT集。这里介绍一种图形算法解决2-CNF-SAT问题的方法以及C++实现。...