我想制作第一个SAT求解器。我知道SAT竞赛和SAT会议,关于这一主题的论文太多了。我是一个初学者,一个不知所措的初学者。我应该从哪里开始?最终,我想推动最先进的技术。我想要一些有关如何开始的专家建议,这样我就不会浪费时间在不必要的东西上。非常感谢。
我想制作第一个SAT求解器。我知道SAT竞赛和SAT会议,关于这一主题的论文太多了。我是一个初学者,一个不知所措的初学者。我应该从哪里开始?最终,我想推动最先进的技术。我想要一些有关如何开始的专家建议,这样我就不会浪费时间在不必要的东西上。非常感谢。
Answers:
以下2009年的文章对初学者进行了很好的概述。
有几种进入技术方面的方法。您甚至可以从原始的Davis-Putnam论文开始。这非常清楚,并有详细的示例。在课程中讨论SAT优化时,我们发现可能有人已经想到了。戴维斯-洛根曼-拉夫兰(Davis-Logeman-Loveland)的论文(我觉得)没有什么指导意义,但篇幅太短,您不妨阅读一下。
有可能赶上未来50年的发展。我会推荐演讲幻灯片。只是搜索“ DPLL”会带来很多教程。如果您浏览它们,我相信在一定程度上薄雾会消失。也有许多有用的调查。Zhang-Malik论文是一个很好的起点。《满意度手册》中有几篇文章可能对您有用。
我赞同米科劳斯的建议。MiniSAT代码是干净的且大小可管理。你可以玩。您可以尝试其他几种求解器。CryptoMiniSat也很干净。您还应该咨询Armin Biere的工作,他编写了SAT解算器,并撰写了有关编写SAT解算器的文章。
从一份好的调查报告开始。对于相同的技术和针对不同技术使用的相同名称,很容易攻击主题的零散并被文献中的不同名称所混淆。如果您不了解最新技术,也很容易重新制定旧的算法之争(例如,出现列表与头尾列表以及两个受监视的DPLL实现文字)。
Gomes等人的“ 满意度求解器”。等 会给你这块土地的粗lay。
使用 Manthey的最新技术改进SAT解算器将使您更接近当前。