输入顺序对约束求解器性能的影响

时间:2020-05-27 06:58:01

标签: z3 solver constraint-programming gecode

输入(布尔和算术方程)的顺序对诸如Gecode的约束求解器和诸如Microsoft Z3的SMT求解器重要吗?如果是的话,只要我可以在Gecode中使用分支功能来利用一些已知的启发式方法,则这两种方法中的哪一种性能会更好?

(注意:我不知道与Gecode中的branch()类似的函数是否在Z3中存在)

1 个答案:

答案 0 :(得分:1)

理论上,不可以;顺序不重要。断言的顺序不应有任何区别。但是在实践中,它们可能会产生影响,因为试探法可能最终会花大量时间在死胡同上。 SMT求解器通常像黑盒子一样工作,即,除非您知道它们的确切内部结构,否则很难看到它们的进度。但是,您可以调高详细程度(使用z3的-v标志),并可以查看输出以查看是否发现任何不同的行为。

对于任何一般的“ SMT求解器性能”问题,都不可能抽象地回答。每个问题实例都有其特定的特征,并且可能会有不同的编码方式,以使求解程序更轻松。如果您发布特定问题,则可以获得更好的建议。