开始SAT求解器论文


24

我想制作第一个SAT求解器。我知道SAT竞赛和SAT会议,关于这一主题的论文太多了。我是一个初学者,一个不知所措的初学者。我应该从哪里开始?最终,我想推动最先进的技术。我想要一些有关如何开始的专家建议,这样我就不会浪费时间在不必要的东西上。非常感谢。


6
您已经实现了DPLL算法吗?您是否已对实现进行了微调和完善,以使其运行得非常快?
Jukka Suomela 2011年

5
可满足性手册-amazon.co.uk/…(也许要检查图书馆,成本很高)。
MGwynne,2011年

1
@Jukka:评论->回答?
Suresh Venkat

4
我不同意Jukka。为什么要重新发明轮子?没有理由重做MiniSAT已经提供的开源软件。如果您有兴趣添加到CDCL框架中,那么您添加的内容将显示在MiniSAT性能上。而且,仅DPLL本身是不够的。已经做了很多改进。基本上,遵循Mikolas的回答!
哈克·贝内特

Answers:


18

以下2009年的文章对初学者进行了很好的概述。

有几种进入技术方面的方法。您甚至可以从原始的Davis-Putnam论文开始。这非常清楚,并有详细的示例。在课程中讨论SAT优化时,我们发现可能有人已经想到了。戴维斯-洛根曼-拉夫兰(Davis-Logeman-Loveland)的论文(我觉得)没有什么指导意义,但篇幅太短,您不妨阅读一下。

有可能赶上未来50年的发展。我会推荐演讲幻灯片。只是搜索“ DPLL”会带来很多教程。如果您浏览它们,我相信在一定程度上薄雾会消失。也有许多有用的调查。Zhang-Malik论文是一个很好的起点。《满意度手册》中有几篇文章可能对您有用。

我赞同米科劳斯的建议。MiniSAT代码是干净的且大小可管理。你可以玩。您可以尝试其他几种求解器。CryptoMiniSat也很干净。您还应该咨询Armin Biere的工作,他编写了SAT解算器,并撰写了有关编写SAT解算器的文章。


17

我建议首先了解哪种技术确实可以提高求解器的性能,为此,我建议进行以下概述和分析

然后,我建议下载minisat的源代码并阅读其描述

它当然可能是个人的,但我发现查看源代码最有价值。


9

如果您不知所措,那么为什么不开始假装没有人为这个问题做过准备呢?如果您的目标是最终建立一个有竞争力的SAT解算器,那将是一个相当长的旅程。可以这么说,通过仅在不“检查解决方案”的情况下进行测试就可以使您获得而不是失去。

ññ

ñ


9

从一份好的调查报告开始。对于相同的技术和针对不同技术使用的相同名称,很容易攻击主题的零散并被文献中的不同名称所混淆。如果您不了解最新技术,也很容易重新制定旧的算法之争(例如,出现列表与头尾列表以及两个受监视的DPLL实现文字)。

Gomes等人的“ 满意度求解器”。等 会给你这块土地的粗lay。

使用 Manthey的最新技术改进SAT解算器将使您更接近当前。

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.