如何在SAT求解器中构造文字

时间:2016-02-22 17:31:22

标签: solver sat

我正在研究minisat的来源,这里有一个跟随内联函数

 typedef int Var;
 inline  Lit  mkLit     (Var var, bool sign) { Lit p; p.x = var + var + (int)sign; return p; }

将整数var(DIMAC文件的整数)作为输入重新输入并返回文字p,我不明白为什么用var添加var然后添加符号?你能帮忙理解一下吗?

1 个答案:

答案 0 :(得分:0)

假设p.x只是一个常规int,似乎正在发生的事情是var映射到2*var,如果sign为false,则2*var + 1 1}},如果sign为真。大概这样做的目的是在文字中,p.x % 2将告诉你var是否对应于否定或非否定变量,偶数p.x对应于否定变量和奇数p.x对应于非否定变量。原var很容易被p.x/2恢复。此函数允许您将(int,bool)对编码为单个int。