Fadi A. Aloul and Karem A. Sakallah | |
I. | Introduction | |
II. | Data Formats | |
III. | Publicly available instances, solutions and reference performance results | |
IV. | Executables | |
V. | Common in-memory representations, parsers and other source codes |
GRASP is premised on the inevitability of conflicts during search and its most distinguishing feature is the augmentation of basic backtracking search with a powerful conflict analysis procedure. Analyzing conflicts to determine their causes enables GRASP to backtrack non-chronologically to earlier levels in the search tree, potentially pruning large portions of the search space. In addition, by "recording' the causes of conflicts, GRASP can recognize and preempt the occurrence of similar conflicts later in the search. Finally, straightforward bookkeeping of the causality chains leading up to conflicts allows GRASP to identify assignments that are necessary for a solution to be found.
Experimental results obtained from a large number of benchmarks, including many from the field of test pattern generation, indicate that application of the proposed conflict analysis techniques to SAT algorithms can be extremely effective for a large number of representative classes of SAT instances.
II. Data Formats
The common data format for GRASP is conjunctive normal form (CNF). A CNF formula f on n binary variables x1,..., xn is the conjunction (AND) of m clauses w1,...,wm each of which is the disjunction (OR) of one or more literals, where a literal is the occurrence of a variable or its complement. A formula f denotes a unique n-variable Boolean function f(x1,...,xn) and each of its clauses corresponds to an implicate f.
The GRASP engine reads input in DIMACS format. The following is an example of a data file in DIMACS format:
c Example SAT format file in DIMACS format c It contains a formula in cnf formulation. c c p cnf 4 3 2 3 -4 0 -4 0 2 3 4 0A line starting with 'c' indicates a comment. The line represented as 'p cnf #var #cl' indicates the number of variables and clauses in the CNF formula. A single number '0' at the end of the line identifies the end of the clause.
All programs were compiled with GCC 2.7.2 and run on SUN SPARC 5/85 machine with 64 MByte of RAM.
Two set of benchmarks were tested:
- UCSC benchmarks - DIMACS challenge benchmarks
For the table of results the following definitions apply:
#M : the total number of class members #S : the number of class members for which program terminated in less than 10,000 CPU seocnds. TIME : total CPU time, in seconds, taken to process all members of the class.UCSC Benchmarks
Benchmark Class | #M | GRASP | TEGUS | POSIT | |||
#S | Time | #S | Time | #S | Time | ||
BF-0432 | 21 | 21 | 47.6 | 19 | 53,852 | 21 | 55.8 |
BF-1355 | 149 | 149 | 125.7 | 53 | 993,915 | 64 | 946,127 |
BF-2670 | 53 | 53 | 68.3 | 25 | 295,410 | 53 | 2971 |
SSA-0432 | 7 | 7 | 1.1 | 7 | 1593 | 7 | 0.2 |
SSA-2670 | 12 | 12 | 51.5 | 0 | 120,000 | 12 | 2,826 |
SSA-6288 | 3 | 3 | .2 | 3 | 17.5 | 3 | 0.0 |
SSA-7552 | 80 | 80 | 19.8 | 80 | 3,406 | 80 | 60 |
DIMACS Challenge Benchmarks
Benchmark Class | #M | GRASP | TEGUS | POSIT | |||
#S | Time | #S | Time | #S | Time | ||
AIM-100 | 24 | 24 | 1.8 | 24 | 107.9 | 24 | 1,290 |
AIM-200 | 24 | 24 | 10.8 | 23 | 14,059 | 13 | 117,991 |
BF | 4 | 4 | 7.2 | 2 | 26,654 | 2 | 20,037 |
DUBOIS | 13 | 13 | 34.4 | 5 | 90,333 | 7 | 77,189 |
II-32 | 17 | 17 | 7.0 | 17 | 1,231 | 17 | 650.1 |
PRET | 8 | 8 | 18.2 | 4 | 42,579 | 4 | 40,691 |
SSA | 8 | 8 | 6.5 | 6 | 20,230 | 8 | 85.3 |
AIM-50 | 24 | 24 | 0.4 | 24 | 2.2 | 24 | 0.4 |
II-8 | 14 | 14 | 23.4 | 14 | 11.8 | 14 | 2.3 |
JNH | 50 | 50 | 21.3 | 50 | 6,055 | 50 | 0.8 |
PAR-8 | 10 | 10 | 0.4 | 10 | 1.5 | 10 | 0.1 |
PAR-16 | 10 | 10 | 9,844 | 10 | 9,983 | 10 | 72.1 |
II-16 | 10 | 9 | 10,311 | 10 | 269.6 | 9 | 10,120 |
H | 7 | 5 | 27,184 | 4 | 32,942 | 6 | 11,540 |
F | 3 | 0 | 30,000 | 0 | 30,000 | 0 | 30,000 |
G | 4 | 0 | 40,000 | 0 | 40,000 | 0 | 40,000 |
PAR-32 | 10 | 0 | 100,000 | 0 | 100,000 | 0 | 100,000 |