struct VarData

1 struct VarData { CRef reason; int level; };

在解析cnf时,S.nVars()使用

 1 template<class B, class Solver>
 2 static void readClause(B& in, Solver& S, vec<Lit>& lits) {
 3     int     parsed_lit, var;
 4     lits.clear();
 5     for (;;){
 6         parsed_lit = parseInt(in);
 7         if (parsed_lit == 0) break;
 8         var = abs(parsed_lit)-1;
 9         //如果var大于当前变量数
10         while (var >= S.nVars()) S.newVar();
11         /**
12          *  parsed_lit     正文字                  1   2   3      负文字                  -1  -2   -3
13          *  var            绝对值-1                0   1   2      绝对值-1                0    1    2
14          *  mkLit      var+var+(int)sign          0   2   4      var+var+(int)sign       1    3    5
15          **/
16         lits.push( (parsed_lit > 0) ? mkLit(var) : ~mkLit(var) );
17     }
18 }
1 inline int      Solver::nVars         ()      const   { return vardata.size(); }
1 vec<VarData>        vardata;          // Stores reason and level for each variable.

用来存储每个变量的原因和级别

初始化reason = CRef_Undef,  level = 0;

posted on 2020-10-12 16:16  QzZq  阅读(151)  评论(0)    收藏  举报

导航