SAT编码的食谱书?


17

SAT求解器在解决大型实例方面越来越有效,并在各种情况下用作后端。每当有人想要使用它们来解决特定领域中的问题时,他/她都必须提出一种即席编码,该编码不仅具有正确的解决方案集,而且可以将约束(甚至是冗余的)形式化这有助于求解器的启发式算法更快地找到解决方案。

在我看来,许多这样的编码将是非常常见的,例如:断言将一组有限的节点链接为树或DAG,或者对列表进行排序...

是否有针对优化解决方案中常见问题的通用编码的存储库/食谱书?


1.这个问题看起来非常有用,但也可能过于宽泛。我认为,如果您将重点放在单个域上可能会是一个更好的问题(是的,可能涉及多个问题,每个域一个-但在询问并向我们展示您的工作之前,请确保进行一些研究)。
DW

2.另外,您做了什么研究?您是否看过SAT前端,例如STP,Alloy和Minion?你有没有看着cs.stackexchange.com/q/12087/755cs.stackexchange.com/q/13188/755cs.stackexchange.com/a/6522/755cs.stackexchange.com/a/12153/ 755?在标记为饱和解算器可满足性的问题上
DW

是的,这个问题可能有点广泛。@DW感谢您提供的链接,其中有些是直接相关的。我应该提到我对解决特定问题不感兴趣,也对提高编码效率的通用方法不感兴趣。我使用的“最佳实践”一词可能会误导我。我对食谱书感兴趣=)
Bordaigorl,2014年

关于领域,我会说(超)图论,但这可能仍然很广泛……
Bordaigorl 2014年

Answers:


9

几年前,我读了一份看起来很相关的调查论文,即MagnusBjörk的“ 成功的SAT编码技术 ”。

抽象:

本文通过分析与许多知名SAT专家的访谈,确定了SAT编码的良好做法。目的是通过分析专家之间是否达成共识来确定对不同编码策略的信心,以及为SAT用户带来隐藏的知识。

人们普遍认为,编码技术通常会对SAT求解器的效率产生巨大影响,找到好的编码通常需要大量工作,并且编码的大小与找到解决方案的难度非常松散相关。被访者不同意的话题包括在SAT问题中包括算术的可行性以及是否将问题表达为条款或回路。

本文介绍了许多在不同情况下都适用的策略,例如表示数字的不同方式以及如何使用增量性。


4

首先阅读《满意度手册》 [1]总是一个好主意(我想它不是免费提供的,对不起)。在这里,第2章的标题为“ CNF编码”。至少,在撰写本文时,本书提供了有关最新技术的文献参考,您可以通过它们进行扩展搜索。

此外,这里这里还有两个有关SAT预处理的最新幻灯片。幻灯片简要概述了预处理技术,并提供了更多参考资料。这个想法是,您不是尝试以有效的方式“手动”对问题建模,而是以最简单的方式对问题进行建模,然后按go键,然后软件会为您提供有效的编码。


[1] Biere,Armin,Marijn Heule和Hans van Maaren编辑。可满足性手册。卷 185. IOS出版社,2009年。


3

不完全是直接的答案,而是另一个越来越紧密相关的角度:其中一些被称为SMT的相对较新的研究领域所覆盖,即满意度模理论。基本思想是将问题编码(例如,整数算术,图形等)组合到SAT解算器中,而且还使用/利用这种耦合产生的额外知识来构建更高级的求解算法。这是一项调查。正如指出的那样,与将即席编码机制与标准SAT求解器组合在一起相比,它们可以更加高效。

  • 满意度模理论:开胃菜 /莱昂纳多·德·莫拉和尼古拉·比约纳

    满意度模理论(SMT)是关于检查一种或多种理论的逻辑公式的可满足性。这个问题来自计算机科学中一些最基本的领域的结合。它结合了布尔可满足性问题和领域,例如在凸优化和术语操纵符号系统中研究的领域。它还借鉴了过去一个世纪符号逻辑中最多产的问题:决策问题,逻辑理论的完备性和不完备性,最后是复杂性理论。将每个领域的专用算法模块化组合的问题与寻找在组合环境下特别有效的新算法一样深奥,并且令人着迷。SMT在软件工程中也扮演着非常有用的角色。现代软件 硬件分析和基于模型的工具正在变得越来越复杂和多方面的软件系统。但是,它们的核心始终是使用符号逻辑来描述它们之间的状态和转换的组件。经过精心调整的SMT求解器会考虑到最新的突破,通常会比定制的临时求解器扩展几个数量级。


这是非常好的一点。但是,即使您使用SMT求解器,也可以从搜索中完全基于SAT的部分中受益于成功的“配方” ...
Bordaigorl 2014年

说存在“纯粹基于SAT的搜索部分”并不完全准确,因为(如前所述/我的理解),它在启发式方法中使用生成实例的特殊已知/构造结构,而“香草”求解器不会“认识”。换句话说,它(即组合)对于组成部分(即编码器加求解器)或仅是另一种标准化的编码系统而言是“不可还原的/不可分离的”。
vzn 2014年

我知道了。我会阅读有关它的更多信息,谢谢!
Bordaigorl 2014年

当然。还请注意,答案集编程有些相似。
vzn 2014年
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.