Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
0   140   1   -
0   16   -   0
0     -  
1    
 
  IOrder       Line # 37 0 1 - -1.0
 
No Tests
 
1    /*
2    * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2006 Daniel Le Berre
3    *
4    * Based on the original minisat specification from:
5    *
6    * An extensible SAT solver. Niklas E?n and Niklas S?rensson. Proceedings of the
7    * Sixth International Conference on Theory and Applications of Satisfiability
8    * Testing, LNCS 2919, pp 502-518, 2003.
9    *
10    * This library is free software; you can redistribute it and/or modify it under
11    * the terms of the GNU Lesser General Public License as published by the Free
12    * Software Foundation; either version 2.1 of the License, or (at your option)
13    * any later version.
14    *
15    * This library is distributed in the hope that it will be useful, but WITHOUT
16    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17    * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
18    * details.
19    *
20    * You should have received a copy of the GNU Lesser General Public License
21    * along with this library; if not, write to the Free Software Foundation, Inc.,
22    * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23    *
24    */
25    package org.sat4j.minisat.core;
26   
27    import java.io.PrintWriter;
28   
29    /**
30    * Interface for the variable ordering heuristics. It has both the
31    * responsability to choose the next variable to branch on and the phase of the
32    * literal (positive or negative one).
33    *
34    * @author daniel
35    *
36    */
 
37    public interface IOrder<L extends ILits> {
38   
39    /**
40    * Method used to provide an easy access the the solver vocabulary.
41    *
42    * @param lits
43    * the vocabulary
44    */
45    void setLits(L lits);
46   
47    /**
48    * Method called each time Solver.newVar() is called.
49    *
50    */
51    @Deprecated
52    void newVar();
53   
54    /**
55    * Method called when Solver.newVar(int) is called.
56    *
57    * @param howmany
58    * the maximum number of variables
59    * @see Solver#newVar(int)
60    */
61    void newVar(int howmany);
62   
63    /**
64    * Selects the next "best" unassigned literal.
65    *
66    * Note that it means selecting the best variable and the phase to branch on
67    * first.
68    *
69    * @return an unassigned literal or Lit.UNDEFINED no such literal exists.
70    */
71    int select();
72   
73    /**
74    * Method called when a variable is unassigned.
75    *
76    * It is useful to add back a variable in the pool of variables to order.
77    *
78    * @param x
79    * a variable.
80    */
81    void undo(int x);
82   
83    /**
84    * To be called when the activity of a literal changed.
85    *
86    * @param p
87    * a literal. The associated variable will be updated.
88    */
89    void updateVar(int p);
90   
91    /**
92    * that method has the responsability to initialize all arrays in the
93    * heuristics. PLEASE CALL super.init() IF YOU OVERRIDE THAT METHOD.
94    */
95    void init();
96   
97    /**
98    * Display statistics regarding the heuristics.
99    *
100    * @param out
101    * the writer to display the information in
102    * @param prefix
103    * to be used in front of each newline.
104    */
105    void printStat(PrintWriter out, String prefix);
106   
107    /**
108    * Sets the variable activity decay as a growing factor for the next
109    * variable activity.
110    *
111    * @param d
112    * a number bigger than 1 that will increase the activity of the
113    * variables involved in future conflict. This is similar but
114    * more efficient than decaying all the activities by a similar
115    * factor.
116    */
117    void setVarDecay(double d);
118   
119    /**
120    * Decay the variables activities.
121    *
122    */
123    void varDecayActivity();
124   
125    /**
126    * To obtain the current activity of a variable.
127    *
128    * @param p
129    * a literal
130    * @return the activity of the variable associated to that literal.
131    */
132    double varActivity(int p);
133   
134    /**
135    * indicate that a literal has been satisfied.
136    *
137    * @param p
138    */
139    void assignLiteral(int p);
140    }