Z3 SAT解算器与相位节省

Z3 SAT解算器与相位节省,z3,sat-solvers,dpll,Z3,Sat Solvers,Dpll,通常应用启发式。其思想是记住每个变量的最后一个赋值,并在分支中首先使用它 为了试验分支极性和相位节省的效果,我尝试了几个SAT解算器并修改了相位设置。所有端口都是Windows 64位端口,以单线程模式运行。我总是使用相同的中等复杂度的示例输入(5619个变量,11261个子句,在解决方案中,所有变量的4%为真,96%为假) 产生的运行时间如下所示: 这可能只是(坏)运气,但差别非常大。以我为例,miniat的性能超过了所有现代解算器,这是一个特别的惊喜 我的问题: 这些差异有什么解释吗? 极

通常应用启发式。其思想是记住每个变量的最后一个赋值,并在分支中首先使用它

为了试验分支极性和相位节省的效果,我尝试了几个SAT解算器并修改了相位设置。所有端口都是Windows 64位端口,以单线程模式运行。我总是使用相同的中等复杂度的示例输入(5619个变量,11261个子句,在解决方案中,所有变量的4%为真,96%为假)

产生的运行时间如下所示:

这可能只是(坏)运气,但差别非常大。以我为例,miniat的性能超过了所有现代解算器,这是一个特别的惊喜

我的问题:

这些差异有什么解释吗?
极性和相位节省的最佳实践?


从你的测试中不能推断出任何结论。已知DPLL和基于它的解算器根据初始搜索条件表现出重尾行为。这意味着同一解算器在同一实例上可以同时具有短运行时间和长运行时间,具体取决于随机重启发生的时间等因素。不同解算器之间的搜索时间可能会有很大差异,这取决于(例如)他们选择决策变量的方式,即使没有阶段保存和随机重新启动的额外复杂性。

从测试中无法推断出任何结论。已知DPLL和基于它的解算器根据初始搜索条件表现出重尾行为。这意味着同一解算器在同一实例上可以同时具有短运行时间和长运行时间,具体取决于随机重启发生的时间等因素。不同解算器之间的搜索时间可能会有很大差异,这取决于(例如)它们选择决策变量的方式,即使没有阶段保存和随机重新启动带来的额外复杂性