列举SAT问题的所有解决方案


11

我所知道的所有#SAT求解器,例如RelSat,C2D,都只返回可满足要求的实例数。但是我想知道每个实例吗?

是否有这样的#SAT求解器,或者我应该如何修改可用的#SAT求解器来做到这一点?

谢谢。


7
通常将其称为“全解决方案SAT求解器”,但似乎没有现货供应。我可以找到的参考文献讨论了对MiniSAT和其他求解器的修改,通常是通过添加阻塞子句以排除找到的解决方案。另一方面,大多数约束求解器支持将所有解决方案作为标准生成。
安德拉斯·萨拉蒙(AndrásSalamon),

一种方法是CNF→DNF转换,已有大量文献
vzn13 2013年

Answers:


13

您正在寻找ALL-SAT或所有解决方案SAT求解器。这是与#SAT不同的问题。您不必列举所有解决方案即可计算它们。

我不知道有什么工具可以解决您的问题,因为人们将这些算法添加到现有的SAT解算器之上,但似乎很少发布这些扩展。以下两篇论文将帮助您修改CDCL求解器以实现ALL-SAT。

高效存储的全解决方案SAT求解器及其在可达性中的应用,O。Grumberg,A。Schuster,A。Yadgar,FMCAD 2004

这是在arXiv上发布的最新文章。

扩展现代SAT解算器以枚举所有模型,赛义德·雅伯(Jabbour),拉赫达尔·塞伊斯(Lakhdar Sais),雅库布·萨尔希(Yakoub Salhi),2013年

您可以尝试与这些作者联系以实现其实现。


对于第二篇论文,您只需要单击第一个版本v1即可查看。
Tayfun Pay


1
@Kaveh,我相信OP会要求使用ALLSAT求解器或将#SAT求解器转换为ALLSAT求解器的方法。这是有关#SAT下限的论文。我不确定它对OP有帮助。
维杰D

2

我在VLSI会议上发现了关于All-SAT的最新论文(2014年),因此它绝对是面向实用方面的(这似乎与OP的问题相吻合,尽管与cstheory.SE相对较少):

  • 由Yinlei Yu,Pramod Subramanyan,Nestan Tsiskaridze,Sharad Malik,VLSI Design 2014撰写的“使用最小阻塞子句的全SAT” 。doi:10.1109 / VLSID.2014.22

对于没有IEEE订阅的用户,Subramanyan的Princeton网页上有免费的副本。(他使用文件共享服务来存储/分发他的论文副本,但我不确定这些URL的稳定性如何,因此不确定此环岛链接。)

本文的要旨似乎是:

我们的贡献,即Non-Disjoint-Dec算法,生成了非常短的阻塞子句,其中不包含求解器中的任何隐含变量。请注意,通常隐含在满足条件的最小项中的大多数变量。如评估所示,较短的阻塞子句对于求解器的性能非常有益。

它们的实现基于MiniSat。不过,其扩展程序的源代码似乎并未公开可用。this,这似乎是All-SAT领域的习惯,因此包含实验结果的该领域的论文只是建立了一些或多或少的稻草人较简单的算法来击败,并且很少可以直接进行比较(就实验而言)结果)以及其他任何已发布的适用于All-SAT的算法。Jabbour等人的论文。Vijay D提到的也属于此类。

正如我在其他答案中未提到的那样(但仅在安德拉斯·萨拉蒙的评论中提到),[颇受欢迎的]阻塞子句技术被引入:

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.