多核SAT解算器


12

我正在尝试解决25k子句5k变量SAT问题。由于它已经运行了一个小时(precosat),因此我想在以后解决更大的问题,因此我正在寻找一种多核SAT-Solver。

由于似乎有许多SAT解算器,我很迷茫。

有人能指出我最适合我的情况吗?

如果有人可以给我大概的时间(如果可能的话),我也很高兴。


1
您在寻找现成的程序吗?那么这不是最好的网站。您想了解有关SAT解决的知识吗?欢迎!您说您已经搜索过;你找到了什么?是什么让您感到困惑?
拉斐尔

好吧,我在几个StackExchange论坛上查看了SAT相关线程的数量。我最终也不得不在理论CS和CS之间进行选择(然后选择后者)。我应该在哪里要求提供成名计划?谢谢。
multsatsolv

Answers:


8

看看今年SAT 2013竞赛结果。基于这些结果,绝对可以尝试Lingeling。Plingeling是它的并行变体。

如果您不需要证明不满足要求(也许您知道实例是可满足的,并且只需要知道使其成为SAT的分配),那么您也可以尝试使用本地搜索方法。


谢谢。我来看看(P)Lingeling。另外,我不知道它是否可以满足(尽管更好,否则我会卡住)。
multsatsolv

+1。根据我们的经验,摆布无疑是您首先应该尝试的方法(至少如果您有一台具有多核和大量内存的计算机)。为了获得更高的性能,请尝试查找具有尽可能多节点的计算群集,并使用不同的随机种子运行多个lingeling(或plingeling)实例。
Jukka Suomela

4

我不确定是否存在实用的多核sat-solver,但是有一些项目和论文:

我还发现了一个有趣的问题:您可以对同一个问题并行运行带有不同种子的常规sat-solver多次,以获得多核效应。

编辑:在这里合并我对vzn的想法的评论:

k2k


(如果有人可以给我大概的时间(如果可能的话)解决X子句Y变量SAT问题,我也会很高兴。)

mnm,n


感谢您的链接。我会读一些。我希望我的问题不太难解决。
multsatsolv

@multsatsolv取决于问题。它还取决于编码。SAT求解器可以不同地处理同一问题的不同编码。而且不同的SAT求解器在一种编码上可能比另一种更好。这没有科学依据(在SAT求解器的快速发展中,确实有,但值得尝试理解):唯一要做的是尝试编码和求解器的不同组合。
Realz Slaw

3

实际上,有一种非常简单的方法可以将任何SAT求解器转换为并行版本,因为在以下意义上SAT 令人尴尬地并行的。

2nn2n


nk

3
这种方法在实践中似乎不太好用。对于肯定的实例,如果您有很多计算机,则以下方法通常更好:仅运行例如,在相同实例但不同随机种子的情况下运行,然后等到一个求解器找到解决方案。
Jukka Suomela

n

1
@vzn:您建议的方法。要了解为什么它不能很好地工作,请在实际实例中进行尝试,并将其与我的建议进行比较。:)如果您使用的是朴素的回溯搜索算法,那么您的方法将很有意义,但是现代的SAT求解器不仅仅包含朴素的回溯搜索。
Jukka Suomela

很好,但是您可以用言语解释问题所在吗?您的方法可能适用于可满足的实例,但无论运行多少个单独的实例,都不会花完全相同的时间并行地发现不满足的实例?如果没有,也许有个引用来引用这个主题...
vzn13年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.