我所知道的所有#SAT求解器,例如RelSat,C2D,都只返回可满足要求的实例数。但是我想知道每个实例吗?
是否有这样的#SAT求解器,或者我应该如何修改可用的#SAT求解器来做到这一点?
谢谢。
我所知道的所有#SAT求解器,例如RelSat,C2D,都只返回可满足要求的实例数。但是我想知道每个实例吗?
是否有这样的#SAT求解器,或者我应该如何修改可用的#SAT求解器来做到这一点?
谢谢。
Answers:
您正在寻找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年
您可以尝试与这些作者联系以实现其实现。
我在VLSI会议上发现了关于All-SAT的最新论文(2014年),因此它绝对是面向实用方面的(这似乎与OP的问题相吻合,尽管与cstheory.SE相对较少):
对于没有IEEE订阅的用户,Subramanyan的Princeton网页上有免费的副本。(他使用文件共享服务来存储/分发他的论文副本,但我不确定这些URL的稳定性如何,因此不确定此环岛链接。)
本文的要旨似乎是:
我们的贡献,即Non-Disjoint-Dec算法,生成了非常短的阻塞子句,其中不包含求解器中的任何隐含变量。请注意,通常隐含在满足条件的最小项中的大多数变量。如评估所示,较短的阻塞子句对于求解器的性能非常有益。
它们的实现基于MiniSat。不过,其扩展程序的源代码似乎并未公开可用。this,这似乎是All-SAT领域的习惯,因此包含实验结果的该领域的论文只是建立了一些或多或少的稻草人较简单的算法来击败,并且很少可以直接进行比较(就实验而言)结果)以及其他任何已发布的适用于All-SAT的算法。Jabbour等人的论文。Vijay D提到的也属于此类。
正如我在其他答案中未提到的那样(但仅在安德拉斯·萨拉蒙的评论中提到),[颇受欢迎的]阻塞子句技术被引入: