何时使用SAT vs约束满意度?


18

如果我遇到难题,一种标准方法是将其表示为SAT实例,然后尝试在其上运行SAT解算器。另一种标准方法是将其表示为约束满足问题,然后尝试使用CSP求解器。两者在某种程度上可以用输入格式自然地表达出什么样的问题,感觉有点相似。

是否有任何准则或经验法则针对特定问题如何识别哪种方法更可能产生良好的结果?对于SAT求解器比CSP求解器能更好地处理哪些类型的问题,是否有人能提供任何指导?反之亦然?

(显然,这两种方法都可以解决一些简单的问题。还有一些困难的问题都无法通过两种方法解决。让我们将它们放在一边。指导最有用的情况是其中任何一个SAT都存在问题求解器的性能优于CSP求解器,或者CSP求解器的性能优于SAT求解器如何识别SAT求解器比CSP求解器更合适,或者CSP求解器比SAT求解器更适合SAT求解器-即首先尝试哪种方法?)


1
请注意,如果您想简化为SAT ,那么问题不会太难
拉斐尔

1
还是为什么只关注SAT / CSP,SMT呢?
Juho

使用约束求解器工具的优势在于,您可以在不太难的实例上轻松尝试一些优化(例如,打破模拟的技巧)(并检查此类优化的有效性)。此外,它们中的许多可以输出标准CNF文件作为中间输出。

好点,@ Juho!SMT也值得考虑-如果您对此有任何想法,请随时比较这三个(SAT,CSP,SMT)。
DW

我也有同样的问题,谢谢提问。
xxx ---

Answers:


8

我认为这是一个很好的问题。您可能还会问:何时使用SMT求解器?我觉得在对问题建模并实际运行CSP / SAT / SMT求解器并找出答案之前可能很难确定。众所周知,即使是不同的求解器,在相同实例上的执行效果也大不相同!我的直觉还来自这样一个事实,即存在许多建模问题的方式。此外,取决于使用哪种约束类型(如果所讨论的形式主义允许使用不同的类型),有许多种进行搜索和推理的方法。

8×89+9+9=2732×32 数独难题,SAT求解器比CSP求解器快。

不同的形式主义能够捕获特定领域的信息,并以不同的方式更好地利用它。有关更多信息,请参见此处的答案和评论

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.