Description
COunting for Rank k formulas (COR v1.0) is
implemented in Java.
The class files
can be downloaded freely for evaluation from here
(Copyright of its respective owners).
All tests have been conducted on Red Hat Linux 9.0 Pentium 4,
2.0 GHz processor, and 1 GB of memory Java SDK1.4.2_03.
To run COR, simply type the command:
java -Xmx512m COCOR <input_DIMACS_CNF_file> > <output_results>
Experimental results
COunting for Rank k formulas (COR v1.0) is
compared against some of state-of-the-art SAT solvers, namely
SATO,
GRASP, and
zChaff.
We start our comparison with GRASP. We observe
that the bigger the input data, the larger the gap between COR and
GRASP will be. Moreover, if we would know in advance that the input
clausal formula F belongs already to the coupled-regular class, then
there is no need to solve the membership problem for F. If this is
the case, then COR is 100 to 300 faster than GRASP.
Regarding the comparison with SATO and zChaff, we shall refer only
to the execution times of COR spend
for determinant computation (by skiping the membership problem).
So, the determinant computation of COR outperforms SATO in 6 out of
10 cases, and zChaff in all cases with a order of magnitude of 18 to 26.
It must be noted that while our COR solver is a first prototype
solver that we have built, the other SAT solvers are state-of-art
solvers that have been subjected to performance engineering.
Our approach is based on the more general #SAT problem.
- The input test750-1800DIMACS.txt written in DIMACS format:
- test750-1800DIMACSoutputSATO.txt
- test750-1800DIMACSGRASP.txt
- test750-1800DIMACSoutputZCHAFF.txt
- test750-1800DIMACSCOCOR.txt
- The input test900-2000DIMACS.txt written in DIMACS format:
- test900-2000DIMACSoutputSATO.txt
- test900-2000DIMACSoutputGRASP.txt
- test900-2000DIMACSoutputZCHAFF.txt
- test900-2000DIMACSoutputCOCOR.txt
- The input test1000-2200DIMACS.txt written in DIMACS format:
- test1000-2200DIMACSoutputSATO.txt
- test1000-2200DIMACSoutputGRASP.txt
- test1000-2200DIMACSoutputZCHAFF.txt
- test1000-2200DIMACSoutputCOCOR.txt
- The input test1100-2400DIMACS.txt written in DIMACS format:
- test1100-2400DIMACSoutputSATO.txt
- test1100-2400DIMACSoutputGRASP.txt
- test1100-2400DIMACSoutputZCHAFF.txt
- test1100-2400DIMACSoutputCOCOR.txt
- The input test1200-2600DIMACS.txt written in DIMACS format:
- test1200-2600DIMACSoutputSATO.txt
- test1200-2600DIMACSoutputGRASP.txt
- test1200-2600DIMACSoutputZCHAFF.txt
- test1200-2600DIMACSoutputCOCOR.txt
- The input test1300-2900DIMACS.txt written in DIMACS format:
- test1300-2900DIMACSoutputSATO.txt
- test1300-2900DIMACSoutputGRASP.txt
- test1300-2900DIMACSoutputZCHAFF.txt
- test1300-2900DIMACSoutputCOCOR.txt
- The input test1500-3500DIMACS.txt written in DIMACS format:
- test1500-3500DIMACSoutputSATO.txt
- test1500-3500DIMACSoutputGRASP.txt
- test1500-3500DIMACSoutputZCHAFF.txt
- test1500-3500DIMACSoutputCOCOR.txt
- The input test1750-4000DIMACS.txt written in DIMACS format:
- test1750-4000DIMACSoutputSATO.txt
- test1750-4000DIMACSoutputGRASP.txt
- test1750-4000DIMACSoutputZCHAFF.txt
- test1750-4000DIMACSoutputCOCOR.txt
- The input test2000-5000DIMACS.txt written in DIMACS format:
- test2000-5000DIMACSoutputSATO.txt
- test2000-5000DIMACSoutputGRASP.txt
- test2000-5000DIMACSoutputZCHAFF.txt
- test2000-5000DIMACSoutputCOCOR.txt
- The input test2500-6000DIMACS.txt written in DIMACS format:
- test2500-6000DIMACSoutputSATO.txt
- test2500-6000DIMACSoutputGRASP.txt
- test2500-6000DIMACSoutputZCHAFF.txt
- test2500-6000DIMACSoutputCOCOR.txt
- The input test3000-7000DIMACS.txt written in DIMACS format:
- test3000-7000DIMACSoutputSATO.txt
- test3000-7000DIMACSoutputGRASP.txt
- test3000-7000DIMACSoutputZCHAFF.txt
- test3000-7000DIMACSoutputCOCOR.txt