TINISAT in SAT Competition 2008

TINISAT 0.22 uses the following decision heuristic: For each literal a score is kept that is initially the number of its occurrences in the original clauses. On learning a clause, the score of every literal is incremented by 1 for each of its occurrences in clauses that are involved in the resolution process. The scores of all literals are halved once every 128 conflicts. When a decision is called for (Line 2 of Algorithm 1), we pick a free variable with the highest score (sum of two literal scores) from the most recently learned clause that has not been satisfied; if no such clause exists (at most 256 clauses are searched for this purpose) we pick any free variable with the highest score. The variable is then set to a value using a heuristic inspired by (Pipatsrisawat & Darwiche 2006): Each variable has a field called phase, initially set to the value with the higher score. On backtracking, every variable whose assignment is erased has its phase set to that assignment, except for variables set in the latest decision level. When chosen for decision, a variable is set to its phase. However, this heuristic is bypassed if the two values differ in score by more than 32, in which case the value with the higher score is used.

[1]  David Zuckerman,et al.  Optimal speedup of Las Vegas algorithms , 1993, [1993] The 2nd Israel Symposium on Theory and Computing Systems.

[2]  Sharad Malik,et al.  Efficient conflict driven learning in a Boolean satisfiability solver , 2001, IEEE/ACM International Conference on Computer Aided Design. ICCAD 2001. IEEE/ACM Digest of Technical Papers (Cat. No.01CH37281).

[3]  Armin Biere,et al.  Effective Preprocessing in SAT Through Variable and Clause Elimination , 2005, SAT.

[4]  Adnan Darwiche,et al.  SAT Solver Description : Rsat , 2006 .

[5]  Jinbo Huang A Case for Simple SAT Solvers , 2007, CP.

[6]  Jinbo Huang,et al.  The Effect of Restarts on the Efficiency of Clause Learning , 2007, IJCAI.