問題を SMT に変換していますが、sat インスタンスを解くときに SMT ソルバー (MathSat5 および CVC4) が遅いことに気付きました。私の中断は、私の翻訳に何かがあり、翻訳が遅くなっているためです。
サンプルの cnf インスタンスと smt2 の翻訳を参照用に添付しています。以下に、MathSat5、CVC4、および MiniSat を比較するためのより大きなインスタンスのソルバー時間 (翻訳時間を除く) を示しています。
Solver Solver Time (s)
-------------------------------------
MiniSat 0.028062 s
MathSat5 2.629702 s
CVC4 7.488870 s
CVC4(QF_SAT) 1.253978 s
では、これらの時間が大幅に異なる理由を誰かが知っていますか? PS。cvc4 は、5.862 秒を費やしたと言います: 理論 uf symmetry_breaker
Sample cnf:
-------------------------------------
p cnf 20 91
4 -18 19 0
...
4 -16 -5 0
Sample smt2:
-------------------------------------
(set-logic QF_UF)
(set-info :smt-lib-version 2.0)
(set-option :produce-models true)
(declare-fun v1 () Bool)
...
(declare-fun x20 () Bool)
(assert (or v4 (not x18) x19))
...
(assert (or v4 (not v16) (not v5)))
(check-sat)
(get-value ( v1 ... x20))
(exit)
ありがとう