A Benchmark for Knowledge Compilation

This page is a first attempt at building up a benchmark for evaluating different knowledge compilation (KC) methods. So far, this is a joint work by

In a few words, a knowledge compilation method is a technique which improves the behaviour of an inference method by preprocessing the knowledge base. Today, there exist several knowledge compilation methods

Each method has its strengthes and weaknesses. Furthermore, the different inference algorithms addressed by these methods make it difficult to establish a benchmark for comparing them objectively. For example, Schrag's KC method is more suitable when the base has few implicants while other methods are more suitable when the base has many implicants.

However, there's a number of points which are likely to meet everyone's agreement

To assess the hardness of a base, it's been decided to evaluate the number of nodes explored by a SAT algorithm and to compare it to the number of possible interpretations. If the SAT algorithm explores few nodes, direct inference methods are likely to be efficient and therefore, the base is believed to be easy.

To evaluate the performances of a KC method, we will compare the inference speed using a direct inference method or a KC method. The direct inference method will be based on a SAT test. Several quantities will be measured:

From these figures, we can compute

Of course, these figures heavily depend on the efficiency of the chosen SAT test. However, it's difficult to choose a suitable SAT test for our experiments. Choosing the fastest SAT is not satisfactory since a) this efficiency may come in part from some tricks in the implementation b) the sources of the program may be unavailable or impossible to reuse. For these reasons, it was decided to use a SAT test reasonably fast and simple. This test has been implemented in C language by B.Mazure. You can download its source code.

The DIMACS format has been adopted to represent the bases. This choice results from the ease with which this format can be parsed. However, one of its drawbacks is that it is more adapted to random bases than to bases with a clear semantics. For such bases, we have decided to store the base in the DIMACS format as well as in its original format.

For each base, we detail

name more #var #clau #nodes #unit lit time (s)
hanoi4.cnf more 718 4934 0 161 0s00
hanoi5.cnf more 1931 14468 0 412 0s00
hole10.cnf more - - - - -
hole6.cnf more 42 133 719 6538 0s10
hole7.cnf more 56 204 5039 50142 0s88
hole8.cnf more 72 297 40319 435837 8s90
hole9.cnf more 90 415 362879 4234375 1m40s01(=100s01)
ii16a1.cnf more 1650 19368 8130 739338 2m54s81(=174s81)
ii16a2.cnf more 1602 23281 124 23467 9s95
ii16b1.cnf more - - - - -
ii16b2.cnf more 1076 16121 201 45906 11s03
ii16c1.cnf more 1580 16467 0 884 16s75
ii16c2.cnf more - - - - -
ii16d1.cnf more 1230 15901 0 1040 4s88
ii16d2.cnf more 836 12461 0 749 0s55
ii16e1.cnf more - - - - -
ii16e2.cnf more 532 7825 0 494 0s46
ii32a1.cnf more 459 9212 165 20302 8s46
ii32b1.cnf more 228 1374 13 1026 0s08
ii32b2.cnf more 261 2558 322 25765 2s81
ii32b3.cnf more 348 5734 264 26217 10s70
ii32b4.cnf more 381 6918 300 32133 14s83
ii32c1.cnf more 225 1280 2 303 0s05
ii32c2.cnf more 249 2182 4 549 0s10
ii32c3.cnf more 279 3272 324 22945 4s71
ii32c4.cnf more 759 20862 596 125773 1m50s40(=110s40)
ii32d1.cnf more 332 2703 112 6833 0s66
ii32d2.cnf more 404 5153 498 39287 8s01
ii32d3.cnf more - - - - -
ii32e1.cnf more 222 1186 4 437 0s06
ii32e2.cnf more 267 2746 12 1257 0s21
ii32e3.cnf more 330 5020 18 2118 0s73
ii32e4.cnf more 387 7106 14 2194 1s13
ii32e5.cnf more 522 11636 115 17841 9s41
ii8a1.cnf more 66 186 0 45 0s00
ii8a2.cnf more 180 800 0 94 0s03
ii8a3.cnf more 264 1552 0 160 0s06
ii8a4.cnf more 396 2798 0 296 0s10
ii8b1.cnf more 336 2068 0 236 0s06
ii8b2.cnf more 576 4088 3 492 0s16
ii8b3.cnf more 816 6108 60 6204 0s76
ii8b4.cnf more 1068 8214 33 4851 1s05
ii8c1.cnf more 510 3065 0 142 0s55
ii8c2.cnf more 950 6689 7 795 0s63
ii8d1.cnf more 530 3207 1 438 0s23
ii8d2.cnf more 930 6547 29 3963 0s70
ii8e1.cnf more 520 3136 0 289 0s28
ii8e2.cnf more 870 6121 1 524 1s41
jnh1.cnf more 100 850 36 920 0s06
jnh10.cnf more 100 850 14 333 0s05
jnh11.cnf more 100 850 29 611 0s10
jnh12.cnf more 100 850 5 216 0s01
jnh13.cnf more 100 850 20 348 0s08
jnh14.cnf more 100 850 25 482 0s08
jnh15.cnf more 100 850 18 469 0s06
jnh16.cnf more 100 850 547 10810 1s36
jnh17.cnf more 100 850 34 894 0s11
jnh18.cnf more 100 850 97 1786 0s26
jnh19.cnf more 100 850 43 1085 0s13
jnh2.cnf more 100 850 5 216 0s01
jnh20.cnf more 100 850 22 609 0s08
jnh201.cnf more 100 800 2 76 0s01
jnh202.cnf more 100 800 20 459 0s06
jnh203.cnf more 100 800 36 801 0s11
jnh204.cnf more 100 800 209 4365 0s55
jnh205.cnf more 100 800 29 771 0s08
jnh206.cnf more 100 800 53 1326 0s15
jnh207.cnf more 100 800 84 1911 0s23
jnh208.cnf more 100 800 21 533 0s05
jnh209.cnf more 100 800 2 119 0s01
jnh210.cnf more 100 800 6 281 0s03
jnh211.cnf more 100 800 16 321 0s05
jnh212.cnf more 100 800 87 1998 0s23
jnh213.cnf more 100 800 37 718 0s10
jnh214.cnf more 100 800 39 578 0s10
jnh215.cnf more 100 800 40 840 0s11
jnh216.cnf more 100 800 56 1222 0s15
jnh217.cnf more 100 800 71 1351 0s16
jnh218.cnf more 100 800 20 476 0s03
jnh219.cnf more 100 800 46 887 0s11
jnh220.cnf more 100 800 81 1860 0s20
jnh3.cnf more 100 850 73 1584 0s20
jnh301.cnf more 100 900 103 2166 0s26
jnh302.cnf more 100 900 2 68 0s01
jnh303.cnf more 100 900 35 651 0s11
jnh304.cnf more 100 900 6 98 0s01
jnh305.cnf more 100 900 15 217 0s06
jnh306.cnf more 100 900 195 4321 0s60
jnh307.cnf more 100 900 23 405 0s06
jnh308.cnf more 100 900 54 1063 0s18
jnh309.cnf more 100 900 6 236 0s01
jnh310.cnf more 100 900 7 87 0s01
jnh4.cnf more 100 850 17 458 0s05
jnh5.cnf more 100 850 40 706 0s10
jnh6.cnf more 100 850 79 1686 0s25
jnh7.cnf more 100 850 3 147 0s01
jnh8.cnf more 100 850 16 287 0s05
jnh9.cnf more 100 850 16 349 0s03
par16-1-c.cnf more 317 1264 12978 1669981 36s43
par16-1.cnf more 1015 3310 12722 3314464 55s95
par16-2-c.cnf more 349 1392 23277 3318713 1m11s65(=71s65)
par16-2.cnf more 1015 3374 24949 6031577 1m48s46(=108s46)
par16-3-c.cnf more 334 1332 47471 5964042 2m15s90(=135s90)
par16-3.cnf more 1015 3344 47727 12028290 3m31s15(=211s15)
par16-4-c.cnf more 324 1292 7057 580192 16s73
par16-4.cnf more 1015 3324 13329 1735643 42s25
par16-5-c.cnf more 341 1360 13985 1916756 40s61
par16-5.cnf more 1015 3358 10706 2340159 41s91
par32-1-c.cnf more - - - - -
par32-1.cnf more - - - - -
par32-2-c.cnf more - - - - -
par32-2.cnf more - - - - -
par32-3-c.cnf more - - - - -
par32-3.cnf more - - - - -
par32-4-c.cnf more - - - - -
par32-4.cnf more - - - - -
par32-5-c.cnf more - - - - -
par32-5.cnf more - - - - -
par8-1-c.cnf more 64 254 15 420 0s00
par8-1.cnf more 350 1149 15 988 0s03
par8-2-c.cnf more 68 270 5 206 0s00
par8-2.cnf more 350 1157 4 508 0s00
par8-3-c.cnf more 75 298 16 546 0s01
par8-3.cnf more 350 1171 16 1342 0s03
par8-4-c.cnf more 67 266 4 181 0s00
par8-4.cnf more 350 1155 3 563 0s01
par8-5-c.cnf more 75 298 5 207 0s00
par8-5.cnf more 350 1171 5 545 0s00
pret150_25.cnf more - - - - -
pret150_40.cnf more - - - - -
pret150_60.cnf more - - - - -
pret150_75.cnf more - - - - -
pret60_25.cnf more - - - - -
pret60_40.cnf more - - - - -
pret60_60.cnf more - - - - -
pret60_75.cnf more - - - - -
ssa0432-003.cnf more 435 1027 18155 841420 14s20
ssa2670-130.cnf more - - - - -
ssa2670-141.cnf more - - - - -
ssa6288-047.cnf more 10410 34238 0 92 0s00
ssa7552-038.cnf more - - - - -
ssa7552-158.cnf more 1363 3034 0 1261 0s10
ssa7552-159.cnf more 1363 3032 1 1270 0s13
ssa7552-160.cnf more 1391 3126 7 1440 0s18
aim-100-1_6-no-1.cnf more - - - - -
aim-100-1_6-no-2.cnf more - - - - -
aim-100-1_6-no-3.cnf more - - - - -
aim-100-1_6-no-4.cnf more - - - - -
aim-100-1_6-yes1-1.cnf more 100 160 15 209 0s01
aim-100-1_6-yes1-2.cnf more 100 160 343 1691 0s10
aim-100-1_6-yes1-3.cnf more 100 160 14563 67915 2s60
aim-100-1_6-yes1-4.cnf more 100 160 26 295 0s01
aim-100-2_0-no-1.cnf more - - - - -
aim-100-2_0-no-2.cnf more - - - - -
aim-100-2_0-no-3.cnf more 100 198 2252998 10889340 6m04s18(=364s18)
aim-100-2_0-no-4.cnf more - - - - -
aim-100-2_0-yes1-1.cnf more 100 198 5990 37230 1s33
aim-100-2_0-yes1-2.cnf more 100 200 7189 50576 1s61
aim-100-2_0-yes1-3.cnf more 100 200 2296 14034 0s61
aim-100-2_0-yes1-4.cnf more 100 199 36 346 0s01
aim-100-3_4-yes1-1.cnf more 100 340 41 452 0s03
aim-100-3_4-yes1-2.cnf more 100 340 171 2013 0s11
aim-100-3_4-yes1-3.cnf more 100 339 209 2116 0s15
aim-100-3_4-yes1-4.cnf more 100 339 108 1312 0s08
aim-100-6_0-yes1-1.cnf more 100 599 7 149 0s01
aim-100-6_0-yes1-2.cnf more 100 600 2 123 0s01
aim-100-6_0-yes1-3.cnf more 100 600 2 141 0s01
aim-100-6_0-yes1-4.cnf more 100 598 8 177 0s01
aim-200-1_6-no-1.cnf more - - - - -
aim-200-1_6-no-2.cnf more - - - - -
aim-200-1_6-no-3.cnf more - - - - -
aim-200-1_6-no-4.cnf more - - - - -
aim-200-1_6-yes1-1.cnf more 200 320 8 288 0s00
aim-200-1_6-yes1-2.cnf more - - - - -
aim-200-1_6-yes1-3.cnf more 200 319 695 4734 0s38
aim-200-1_6-yes1-4.cnf more - - - - -
aim-200-2_0-no-1.cnf more - - - - -
aim-200-2_0-no-2.cnf more - - - - -
aim-200-2_0-no-3.cnf more - - - - -
aim-200-2_0-no-4.cnf more - - - - -
aim-200-2_0-yes1-1.cnf more - - - - -
aim-200-2_0-yes1-2.cnf more - - - - -
aim-200-2_0-yes1-3.cnf more 200 399 402 2563 0s16
aim-200-2_0-yes1-4.cnf more - - - - -
aim-200-3_4-yes1-1.cnf more 200 680 5549 78236 7s33
aim-200-3_4-yes1-2.cnf more 200 679 7522 98391 9s88
aim-200-3_4-yes1-3.cnf more 200 679 3463 52830 4s60
aim-200-3_4-yes1-4.cnf more 200 677 8378 126869 11s08
aim-200-6_0-yes1-1.cnf more 200 1186 358 8822 1s03
aim-200-6_0-yes1-2.cnf more 200 1193 178 4220 0s53
aim-200-6_0-yes1-3.cnf more 200 1191 247 5520 0s71
aim-200-6_0-yes1-4.cnf more 200 1197 51 1336 0s15
aim-50-1_6-no-1.cnf more 50 76 262 694 0s03
aim-50-1_6-no-2.cnf more 50 80 4098 15903 0s43
aim-50-1_6-no-3.cnf more 50 80 17611 44223 1s51
aim-50-1_6-no-4.cnf more 50 80 588 1973 0s06
aim-50-1_6-yes1-1.cnf more 50 80 14 98 0s00
aim-50-1_6-yes1-2.cnf more 50 79 1 46 0s00
aim-50-1_6-yes1-3.cnf more 50 80 205 581 0s01
aim-50-1_6-yes1-4.cnf more 50 80 3 48 0s00
aim-50-2_0-no-1.cnf more 50 100 3791 20190 0s50
aim-50-2_0-no-2.cnf more 50 100 1220 6939 0s16
aim-50-2_0-no-3.cnf more 50 100 801 4234 0s11
aim-50-2_0-no-4.cnf more 50 98 1344 6577 0s16
aim-50-2_0-yes1-1.cnf more 50 99 361 1320 0s05
aim-50-2_0-yes1-2.cnf more 50 100 2 41 0s00
aim-50-2_0-yes1-3.cnf more 50 100 581 3183 0s08
aim-50-2_0-yes1-4.cnf more 50 100 95 520 0s00
aim-50-3_4-yes1-1.cnf more 50 169 35 398 0s01
aim-50-3_4-yes1-2.cnf more 50 170 3 66 0s00
aim-50-3_4-yes1-3.cnf more 50 170 9 110 0s00
aim-50-3_4-yes1-4.cnf more 50 170 3 90 0s00
aim-50-6_0-yes1-1.cnf more 50 300 2 75 0s00
aim-50-6_0-yes1-2.cnf more 50 300 4 90 0s00
aim-50-6_0-yes1-3.cnf more 50 297 7 97 0s00
aim-50-6_0-yes1-4.cnf more 50 299 0 47 0s00
bf0432-007.cnf more 1040 3668 125709 8693145 5m16s03(=316s03)
bf1355-075.cnf more - - - - -
bf1355-638.cnf more - - - - -
bf2670-001.cnf more - - - - -
dubois100.cnf more 300 396 0 99 0s05
dubois20.cnf more 60 160 3145727 20971516 6m49s31(=409s31)
dubois21.cnf more - - - - -
dubois22.cnf more - - - - -
dubois23.cnf more - - - - -
dubois24.cnf more - - - - -
dubois25.cnf more - - - - -
dubois26.cnf more - - - - -
dubois27.cnf more - - - - -
dubois28.cnf more - - - - -
dubois29.cnf more - - - - -
dubois30.cnf more - - - - -
dubois50.cnf more - - - - -
f1000.cnf more - - - - -
f2000.cnf more - - - - -
f600.cnf more - - - - -
faw.cnf more - - - - -
g125.17.cnf more - - - - -
g125.18.cnf more - - - - -
g250.15.cnf more - - - - -
g250.29.cnf more - - - - -
deputes more 16 20 0 2 0s00
pannes more 16 30 0 5 0s00
logiciens more 11 15 0 3 0s00
couple more 12 16 0 0 0s00
dette more 19 21 0 5 0s01
prof more 10 9 0 2 0s00
type1-76 more 76 75 0 37 0s00
type2-1000 more 1002 1000 0 1000 0s00
type3-11 more 23 12 0 1 0s00
type4-9 more 29 28 0 1 0s00
type5-5 more 21 16 0 5 0s00
type6-11 more 45 44 0 11 0s00
type7-5 more 26 20 0 4 0s00
pigeon-2-3 more 6 11 0 3 0s00
pigeon-3-4 more 12 33 0 6 0s00
pigeon-4-5 more 20 74 0 10 0s01
ramsey-4 more 18 36 0 6 0s00
chandra21 more 24 21 0 3 0s00
chandra24 more 27 24 0 3 0s00
ex1 more 6 14 0 4 0s00
ex2 more 9 24 0 7 0s00
ex3 more 21 106 0 11 0s00
ex4 more 9 26 0 3 0s00
history-ex more 21 17 0 0 0s00
selenoid more 11 19 0 6 0s00
valve more 13 50 0 9 0s00
two-pipes more 15 54 0 9 0s00
three-pipes more 21 82 0 13 0s00
four-pipes more 27 110 0 19 0s00
adder-1 more 5 15 0 3 0s00
adder-2 more 9 29 0 4 0s00
adder-3 more 13 43 0 5 0s00
adder-4 more 17 57 0 6 0s00
adder-5 more 21 71 0 7 0s00
adder-10 more 41 141 0 12 0s00
adder-15 more 61 211 0 17 0s00
adder-20 more 81 281 0 22 0s01
adder-25 more 101 351 0 27 0s01
adder-50 more 201 701 0 52 0s10
adder-75 more 301 1051 0 77 0s23
adder-100 more 401 1401 0 102 0s48
adder-200 more 801 2801 0 202 1s83
adder-300 more 1201 4201 0 302 4s85
adder-400 more 1601 5601 0 402 9s05
nqueens-2 more 4 8 1 3 0s00
nqueens-3 more 9 31 2 14 0s00
nqueens-4 more 16 80 0 12 0s00
nqueens-5 more 25 165 0 19 0s00
nqueens-6 more 36 296 0 27 0s01
mine-2-2 more 52 2088 0 46 0s01
mine-3-2 more 74 3128 0 64 0s01
mine-3-3 more 106 4687 0 91 0s05
mine-4-2 more 96 4168 0 84 0s03
mult-2-2 more 17 135 0 8 0s00
mult-3-2 more 23 203 0 20 0s00
mult-4-2 more 29 271 0 24 0s00
mult-3-3 more 31 304 0 26 0s00
mult-inf-2-2 more 17 138 0 11 0s00
mult-inf-3-2 more 23 210 0 17 0s00
mult-inf-4-2 more 29 279 0 23 0s00
mult-inf-3-3 more 31 311 0 26 0s00
mult-sup-2-2 more 17 138 0 11 0s00
mult-sup-3-2 more 23 210 0 18 0s00
mult-sup-4-2 more 29 279 0 24 0s01
mult-sup-3-3 more 31 311 1 26 0s01
2tree-3 more 6 7 0 3 0s00
2tree-5 more 10 12 0 4 0s00
2tree-7 more 14 17 0 6 0s00
2tree-9 more 18 22 0 8 0s00
2tree-11 more 22 27 0 12 0s00
2tree-13 more 26 32 0 12 0s00
2tree-15 more 30 37 0 15 0s00
cycle1-3 more 10 7 0 2 0s00
cycle1-4 more 13 9 0 2 0s00
cycle1-5 more 16 11 0 2 0s00
cycle1-6 more 19 13 0 2 0s00
type1-50 more 50 49 0 24 0s00
type1-100 more 100 99 0 49 0s00
type1-150 more 150 149 0 74 0s00
type1-200 more 200 199 0 99 0s01
type1-250 more 250 249 0 124 0s03
type1-300 more 300 299 0 149 0s03
type1-350 more 350 349 0 174 0s08
type1-400 more 400 399 0 199 0s08
type1-450 more 450 449 0 224 0s13
type1-500 more 500 499 0 249 0s15
type1-500 more 500 499 0 249 0s15
type1-550 more 550 549 0 274 0s18
type1-600 more 600 599 0 299 0s20
type1-650 more 650 649 0 324 0s25
type1-700 more 700 699 0 349 0s26
type1-750 more 750 749 0 374 0s30
type1-800 more 800 799 0 399 0s35
type1-850 more 850 849 0 424 0s40
type3-50 more 101 51 0 1 0s01
type6-50 more 201 200 0 50 0s03
type6-100 more 401 400 0 100 0s08
type6-150 more 601 600 0 150 0s21
type6-200 more 801 800 0 200 0s38
type6-250 more 1001 1000 0 250 0s61
type6-275 more 1101 1100 0 275 0s66
type6-300 more 1201 1200 0 300 0s80
type7-50 more 251 200 0 27 0s03
type7-100 more 501 400 0 52 0s15
type7-150 more 751 600 0 77 0s33
type7-200 more 1001 800 0 102 0s60
type7-225 more 1126 900 0 114 0s73
type7-250 more 1251 1000 0 127 0s90
type1-6 more 6 5 0 2 0s00
type1-11 more 11 10 0 5 0s00
type1-16 more 16 15 0 7 0s00
type1-21 more 21 20 0 10 0s00
type1-26 more 26 25 0 12 0s00
type1-31 more 31 30 0 15 0s00
type1-36 more 36 35 0 17 0s00
type1-41 more 41 40 0 20 0s00
type1-46 more 46 45 0 22 0s00
type1-51 more 51 50 0 25 0s00
type1-56 more 56 55 0 27 0s00
type1-61 more 61 60 0 30 0s01
type1-66 more 66 65 0 32 0s00
type1-71 more 71 70 0 35 0s00
type1-76 more 76 75 0 37 0s00
type1-81 more 81 80 0 40 0s00
type1-86 more 86 85 0 42 0s00
type1-91 more 91 90 0 45 0s00
type1-96 more 96 95 0 47 0s00
type1-101 more 101 100 0 50 0s01
type1-106 more 106 105 0 52 0s00
type1-111 more 111 110 0 55 0s00
type1-116 more 116 115 0 57 0s00
type1-121 more 121 120 0 60 0s00
type1-126 more 126 125 0 62 0s01
type1-131 more 131 130 0 65 0s00
type1-136 more 136 135 0 67 0s00
type3-1 more 3 2 0 1 0s00
type3-2 more 5 3 0 1 0s00
type3-3 more 7 4 0 1 0s00
type3-4 more 9 5 0 1 0s00
type3-5 more 11 6 0 1 0s00
type3-6 more 13 7 0 1 0s00
type3-7 more 15 8 0 1 0s00
type3-8 more 17 9 0 1 0s00
type3-9 more 19 10 0 1 0s00
type3-10 more 21 11 0 1 0s00
type3-11 more 23 12 0 1 0s00
type3-12 more 25 13 0 1 0s00
type3-13 more 27 14 0 1 0s00
type3-14 more 29 15 0 1 0s00
type3-15 more 31 16 0 1 0s00
type3-16 more 33 17 0 1 0s00
type5-1 more 5 4 0 1 0s00
type5-2 more 9 7 0 2 0s00
type5-3 more 13 10 0 3 0s00
type5-4 more 17 13 0 4 0s00
type5-5 more 21 16 0 5 0s00
type5-6 more 25 19 0 6 0s00
type5-7 more 29 22 0 7 0s00
type5-8 more 33 25 0 8 0s00
type5-9 more 37 28 0 9 0s00
type5-10 more 41 31 0 10 0s00
type5-11 more 45 34 0 11 0s00
type6-1 more 5 4 0 1 0s00
type6-2 more 9 8 0 2 0s00
type6-3 more 13 12 0 3 0s00
type6-4 more 17 16 0 4 0s00
type6-5 more 21 20 0 5 0s00
type6-6 more 25 24 0 6 0s00
type6-7 more 29 28 0 7 0s00
type6-8 more 33 32 0 8 0s00
type6-9 more 37 36 0 9 0s00
type6-10 more 41 40 0 10 0s00
type6-11 more 45 44 0 11 0s00
type6-12 more 49 48 0 12 0s00
type6-13 more 53 52 0 13 0s00
type6-14 more 57 56 0 14 0s00
type6-15 more 61 60 0 15 0s00
type6-16 more 65 64 0 16 0s00
type7-1 more 6 4 0 1 0s00
type7-2 more 11 8 0 1 0s00
type7-3 more 16 12 0 3 0s00
type7-4 more 21 16 0 4 0s00
type7-5 more 26 20 0 4 0s00
type7-6 more 31 24 0 5 0s00