为什么SAT求解器之间存在巨大差异?


25

SAT求解器在代数攻击(例如walksatminisat)中非常重要。

但是,在解决这里可用的基准问题时,两者之间存在巨大的性能差异-Walksat比minisat快得多。为什么是这样?

walksat的这种实现方式似乎在性能上有一些改进-是否有任何理由不将其包含在国际SAT竞赛中


您的第二个问题,就是为什么某种算法被排除在某种竞争之外,可能不在该站点的范围之内。我的第一个问题是,什么使一种算法通常比另一种算法更快,我认为这是公平的游戏,但可能需要重新措辞以使其在理论上更加友好。
列夫Reyzin

简短说明:Minisat很老,似乎没有维护,也没有参加比赛。另外,您所说的“巨大”是什么意思,您指的是哪条轨道(随机/制作/应用)?
Radu GRIGore 2011年

5
@Radu:MiniSAT 2.2.0已于2010年7月发布。我不会说它没有得到维护。而且,代码非常稳定且干净,因此不经常更新可能不是问题。我同意,尽管更新的求解器可以更好地反映最新技术。
维杰D

1
从Crypto.SE问题交叉贴crypto.stackexchange.com/questions/153/...
M. Alaggan

Answers:


33

是的,MiniSAT和WalkSAT之间有很大的区别。首先,让我们澄清一下-MiniSAT是DPLL / CDCL算法通用类的特定实现,该算法使用回溯和从句学习,而WalkSAT是在贪婪步骤和随机步骤之间交替的算法的通用名称。

通常,在结构化 SAT实例上,DPLL / CDCL更快,而在随机 k-SAT 上,WalkSAT更快。工业和应用SAT实例往往具有很多结构,因此DPLL / CDCL在大多数现代SAT求解器中占主导地位。但是,实例化一种技术可能会胜出,这就是投资组合求解器变得如此流行的原因之一。

对于您的说法,WalkSAT在该页面上的实例上比MiniSAT快得多,我对此表示怀疑。一方面,那里有GB的SAT实例-您尝试比较多少个?WalkSAT在大多数结构化实例上根本没有竞争力,这就是为什么它在比赛中不经常出现的原因。

附带说明-Vijay说的对,MiniSAT仍然很重要。事实上,因为它是开源的,写得很好,MINISAT是,为了证明给定的优化是有前途击败求解。许多人调整MiniSAT本身来展示其优化-看看最近的SAT竞赛中的“ MiniSAT hack”类别。


17

一种XÿÿX

一篇好的论文有关这一主题的阅读是这样一个由诺德尔曼。本文的全部重点是确定SAT实例的易于计算的功能,这些功能可以告诉您哪些算法可能表现良好,哪些算法表现不佳。使用此技术,可以构建基于投资组合的算法,该算法可以快速分析问题实例,然后使用最合适的算法解决实例。在那之后有大量的论文。谷歌搜索SATzilla将提供很多阅读材料。

一种

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.