SAT解算器实际成功的理论解释?


43

对于SAT解算器的实际成功有什么理论上的解释,有人可以给出“维基百科式”的概述和解释,将它们全部绑在一起吗?

以此类推,单纯形算法的平滑分析arXiv版本)很好地解释了为什么它在实践中如此有效,尽管事实是在最坏的情况下它花费指数时间并且是NP强大的arXiv版本)。

我已经听说了一些有关后门,子句图的结构和相变之类的信息,但是(1)我看不到它们如何组合在一起以提供更大的图像(如果有的话),以及(2)我不知道这些是否真的能解释为什么SAT求解器在例如工业实例上如此出色地工作。此外,当涉及子句图的结构时:为什么当前的求解器能够利用某些子句图的结构?

至少在我目前有限的理解中,我仅发现部分满足此要求的相变结果。相变文献是关于随机 k-SAT 实例的,但这真的可以解释有关真实实例的任何信息吗?我不希望SAT的实际实例看起来像随机实例。我是不是该?是否有理由认为,相变即使看起来并不像随机实例,也可以直观地告诉我们有关真实实例的信息?

相关问题虽然有帮助,但并不能完全回答我的问题,尤其是要求将事物捆绑到一张连贯的图片中的要求:


5
这不是答案,但我认为没有多少人仍然相信图结构/后门程序可以解释SAT求解器的性能。它们似乎与更困难的问题(例如#SAT,QBF或知识汇编)更相关,在这些问题中,您确实需要找到聪明的因式分解,因为您必须以某种方式探索整个结构。对于您的问题,我很想回答“没人真正知道,这是一个活跃的研究领域”。但是我需要收集参考资料以显示人们正在尝试什么,并且可能有人比我更广阔的视野可以提供更好的答案。
Holf

2
@Joshua:单形方法甚至是PSPACE强大的(Fearnley和Savani,STOC 15)。
Rahul Savani

1
usually

3
@TayfunPay:我不是在问您的经历-实际上,我100%相信“现实”问题会转化为与相变不相近的SAT实例。但是我不认为这可以解释这种情况的难易程度,因为这些情况并非是随机的,因此相变(理论上)应该很少提及(硬度或难易程度)。
约书亚·格罗夫

2
这已经在其他地方提到过,但是必须注意,子句可变的密度和相变仅与随机k-SAT有关,与由工业或组合问题引起的实例的硬度无关。因此,上面的大多数讨论都没有重点。另外,值得注意的是,对于随机k-SAT,没有真正的易-难-易模式-对于证明系统,其中对于随机生成的k-CNF公式具有下界,对于任意大的常数,公式仍然保持指数级的困难密度高于阈值。
雅各布·诺德斯特罗姆

Answers:


21

我假设您是在CDSAT SAT求解器上参考SAT竞赛中使用的基准数据集。这些程序基于许多启发式方法和许多优化。2014年,在班夫的应用SAT解决理论理论基础研讨会上有一些很好的介绍 (视频)。

这些算法基于DPLL回溯算法,该算法试图通过在找到冲突时将值设置为变量和回溯来找到令人满意的分配。人们已经在研究这些启发式方法的影响。例如看

这些SAT求解器在基准上的效率似乎主要来自两种两种启发式方法(及其变体):

  1. VSIDS启发式冷杉选择下一个要分支的变量。
  2. CDCL:冲突驱动的子句学习启发式,可从冲突中学习新的子句。

众所周知,DPLL证明与分辨率证明相对应。没有CDCL,我们只能获得的分辨率证明是比一般分辨率证明要弱得多的树分辨率证明。

CDCL的结果表明,我们可以获得任何一般的分辨率证明。但是有一些警告,它们需要许多人工重启,人工分支和/或特定的预处理,因此尚不清楚它们与这些程序在实践中有多接近。有关更多详细信息,请参见例如以下论文:


CDCL本质上是在搜索领域中削减分支机构。有多种方法可以从冲突中得出新的学习条款。理想情况下,我们将添加一组暗示冲突的最小子句,但实际上这可能会很大并且计算起来会很昂贵。顶级SAT求解器通常会定期删除学到的条款,这在实践中会有所帮助。


αF(v,i)i0<α<1vn

i<nF(v,i)α(ni)

直觉上可以说这试图强调最近冲突始终存在的变量 。您也可以将其视为预测下一个冲突将涉及哪些变量的一种简单但极其廉价的方法。因此,VSIDS首先在这些变量上分支。可以说该算法本质上是一种快速失败算法,可以快速找到冲突。快速与较少数量的变量集有关,这意味着阻塞搜索树的大子树。但这主要是直觉,afaik尚无人将其正式化为非常仔细的在SAT数据集上进行测试的方法。在其中一个数据集上运行SAT解算器并不便宜,更不用说将其与最佳决策(当前赋值到变量的最小扩展,否则会违反条款之一)进行比较。VSIDS还取决于每次冲突时我们碰撞哪些变量,有多种方法来定义变量何时涉及冲突。


结果表明,这些思想的特定实现对应于动态图中顶点的时间加权中心。

还有建议建议排除对抗实例,例如基于NP难题和密码基元的实例以及随机实例(CDCL SAT求解器不擅长的随机实例),其余实例来自结构良好的事物,例如软件和硬件验证,以及某种程度上CDCL SAT求解器利用了结构(提到了很多想法,例如后门,冻结变量等),但afaik大多是想法,没有足够的理论或实验证据来支持它们。我认为必须严格定义正确的方法,并证明这些算法可以很好地运行的实例具有该属性,然后证明这些算法可以利用这些属性。


有些人一直坚持认为子句比率和阈值是该镇唯一的游戏。这绝对是错误的,因为任何对工业SAT求解器的工作原理略有了解或对证明复杂性有任何了解的人都会知道。在实践中,有很多因素会使SAT解算器在实例上无法正常工作,子句比率只是其中可能涉及的事情之一。我认为以下调查是了解证明复杂性与SAT解算器和透视图之间的联系的一个很好的起点:

有趣的是,甚至阈值现象也比大多数人想象的要复杂,Moshe Vardi在他的演讲“ 相变和计算复杂性 ”中指出,对于阈值之后的随机3SAT公式,GRASP的中值运行时间仍保持指数级,但指数却降低了(afaik,尚不清楚它的下降速度有多快)。


我们为什么要研究SAT求解器(作为复杂性理论家)?我认为答案与其他算法相同:1.比较它们,2.找到它们的局限性,3.设计更好的算法,4.回答复杂性理论的基本问题。

在对启发式模型进行建模时,我们经常用不确定性代替启发式。问题就变成了“公平”的替代?公平地说,我的意思是该模型在帮助我们回答上述问题方面有多接近。

当我们将SAT求解器建模为证明系统时,我们在某种程度上证明了它的局限性,因为该算法对于证明系统中具有较低边界的语句效率不高。但是,算法实际发现的内容与证明系统中的最佳证明之间仍然存在差距。因此,我们还需要证明反向,即算法可以找到与证明系统中的证明一样好的证明。我们尚未回答这个问题,但是被不确定性取代的启发式方法的数量定义了模型与证明系统的接近程度。我不希望我们完全放弃使用不确定性来代替启发式算法,否则会得到自动化结果,从而对加密等方面的开放性问题产生影响。

因此,查看模型时的问题变成:这些模型对解释SAT解算器A优于SAT解算器B的原因有多少帮助?他们在开发更好的SAT解算器方面有多大帮助?SAT求解器在实践中是否找到与模型中的最佳证明接近的证明?...我们还需要对实际实例进行建模。

关于CDCL SAT求解器“利用实际实例的结构”(无论结构是什么)的直觉,我认为是公认的直觉。真正的问题是对这意味着什么给出令人信服的解释,并证明它确实是真实的。

另请参阅Jakob Nordstrom自己的答案,以获取更多最新动态。


1
这是否适用于从整数分解衍生的SAT实例?
Mohammad Al-Turkistany

1
heuristicheuristics
Tayfun Pay

1
@Martin,没有CDCL,我们只能获得非常有限的决议形式(我不记得确切的意思了)。Paul Beame和其他人的结果表明,使用CDCL和重新启动,您基本上可以得到任何通用的分辨率证明(但是重新启动点和分支的选择是人为的),有关详细信息,请参见Beame的论文。
卡夫

3
@马丁,也看到雅各布Nordstrom的调查显示:csc.kth.se/~jakobn/project-proofcplx/docs/...
卡韦赫

1
关于证明的复杂性和CDCL,它是由Pipatsrisawat和Darwiche所示sciencedirect.com/science/article/pii/S0004370210001669和独立地被Atserias,费希特和Thurley jair.org/papers/paper3152.html该CDCL视为证明系统可以多项式模拟分辨率(论文陈述了不同的结果,但是两篇论文中的证明都可以用来获得另一篇论文中的结果)。与以前的论文在这一研究领域的一个重要区别是,在这些CDCL模型中没有人为因素。[待续...]
雅各布·诺德斯特罗姆

17

由于时间紧迫,我很快就打了这个字(由于同样的原因,我什至没有更早地做出响应),但是我想我至少会花掉我的两分钱。

我认为这是一个真正的好问题,并且在过去几年中花费了大量的时间进行了研究。(完全披露:我已经获得了我当前资金的很大一部分,目的是试图找到此类问题的答案,然后有可能将对SAT的更深入的了解转化为更有效的SAT解算器。)

如果有人要给出一句话的答案,那么我认为

没有人真正知道,这是一个活跃的研究领域

非常好。除了有更多的空间可以进行更多的活动外,特别是从理论上讲。

在其他答案和评论中已经讨论过的一些建议的解释(不是互斥的)是

  • (a)后门,
  • (b)参数化复杂度注意事项,
  • (c)CNF问题的图结构,
  • (d)证明复杂性的考虑,以及
  • (e)相变。

从(e)末尾开始,关于相变似乎有些混乱。简短的回答是,没有任何理由可以相信子句与变量的比率与应用问题或理论组合问题(也称为精心设计的实例)有关。但是出于某种原因,在SAT社区的应用部分中,不太常见的误解是条款与变量之比应该以某种方式成为普遍适用的度量。子句与变量的比率与随机k-SAT非常相关,但与其他模型无关。

我的感觉是后门(a)是一种流行的解释,但是我个人还没有真正看到令人信服的证据来证明它在实践中正在发生什么。

参数化的复杂度(b)提供了有关SAT某些方面的漂亮理论,一个非常有吸引力的假设是SAT实例很容易,因为它们趋于“接近于某些易于处理的岛”。我认为这一假设为研究开辟了许多令人振奋的方向。正如在某些答案中指出的那样,(a)和(b)之间有很多联系。但是,到目前为止,我还没有真正看到任何证据表明参数化复杂性与实践中存在太多的关联。特别是,在实践中,易于处理的实例似乎非常非常困难,而没有任何后门的实例仍然非常容易。

对于我来说,对于工业实例而言,最令人信服的解释是(c),即所讨论的CNF公式的(图形)结构应与实际SAT性能相关联。这里的想法是,可以将工业实例的变量和子句聚集到相互之间几乎没有联系的,相互连接的社区中,并且SAT求解器可以某种方式利用此结构。不幸的是,要更严格地确定这一点似乎很困难,同样不幸的是,这一领域遭受了相当大的炒作。到目前为止,我在论文中看到的拟议解释都不能令人满意,模型似乎很容易理解。问题似乎是,如果一个人真的想彻底做到这一点,那么数学就会变得非常困难(因为这是一个难题),并且也变得非常混乱(因为您需要模型与现实足够接近才能获得相关结果)。尤其是,我看到的论文解释说,对于变量选择,VSIDS(可变状态独立衰减总和)启发式算法的性能很好,因为它探索实例的图形表示中的社区是非常令人信服的,尽管这样的假设仍然存在非常吸引人。

我个人进行的一项研究是,实际的SAT性能是否与所讨论的CNF公式的证明复杂性度量相关。不幸的是,简短的答案似乎是确实没有明确和令人信服的联系。可能仍然存在非平凡的相关性(我们目前正在以不同的方式对此进行研究),但是理论似乎太好,太干净,太漂亮了,而现实也太混乱了,以至于没有真正好的匹配。(关于SAT的证明复杂性测度和实践难度的论文由Järvisalo,Matsliah,Nordström和Živný在CP '12上得出的结果表明,更详细的实验提供了更为复杂的图景,但结论却不太明确-我们希望现在能获得有关这十年的完整期刊报道,但它很复杂,尽管仍然很有趣。)

证明复杂度方面的另一个相关工作是将最先进的SAT求解器建模为证明系统,并在这些模型中证明定理以推导相应求解器的属性。但是,这有点雷区,因为从理论模型的角度来看,小的选择和看似无害的设计选择可能导致结果与实际情况几乎完全无关。另一方面,如果人们想要一个与现实足够接近的理论模型来给出相关结果,那么该模型将变得极为混乱。(这是因为SAT求解器的性能取决于迄今为止以非平凡的方式发生的所有事情的全局历史记录,这意味着该模型无法以我们通常设置的证明系统的方式进行模块化-是否需要特定的推导步骤“正确”

但是,有两篇真正应作为例外的论文是[Pipatsrisawat和Darwiche 2011]和[Atserias,Fichte和Thurley 2011],这表明以自然方式建模的冲突驱动子句学习SAT解算器具有以下特点:多项式模拟完整的一般分辨率的潜力。在[PD11]和[AFT11]之前有相当长的论文列表,它们基本上声称相同的结果,但是它们在建模方面都存在严重的问题。(确实,[PD11]和[AFT11]也需要一些假设才能起作用,但是除非您要提供的论文也表明参数化的复杂性层次结构崩溃,否则它们几乎是您期望的最低假设。)

再次,我很快就写完了所有这些内容,但是如果对上述内容有足够的兴趣,我可以尝试阐述(尽管可能需要一段时间才能再次返回到此状态,如果有的话,请随时与我联系是您要我发表评论的任何内容)。作为提供参考的一种快速方法,让我做一些无耻的自我插入(尽管当我看到一些评论也引用了其中一些参考时,羞耻有所降低):

2016年国际暑期学校关于满意度,满意度模理论和自动推理的教程式演讲,关于证明复杂性和SAT解决之间的相互作用,幻灯片末尾有大量完整参考资料:http : //www.csc .kth.se /〜jakobn / research / TalkInterplaySummerSchool2016.pdf

从2017年初开始进行的较新的,简短的调查报告理解冲突驱动的SAT解决方案(通过证明复杂性的视角解决)(末尾也提供完整参考):http : //www.csc.kth.se/~jakobn/research /TalkProofComplexityLensCDCL1702.pdf

证明复杂度与SAT解决方案之间的联系的调查:http : //www.csc.kth.se/~jakobn/research/InterplayProofCplxSAT.pdf [参考书目:JakobNordström。证明复杂性与SAT解决之间的相互作用。 ACM SIGLOG新闻,第2卷,第3期,第19-44页,2015年7月。(精简版,修正了一些错字。)]

带有CDCL的SAT '16论文忠实地建模为证明系统:http : //www.csc.kth.se/~jakobn/research/Trade-offsTimeMemoryModelCDCL_SAT.pdf [参考书目:Jan Elffers,Jan Johannsen,Massimo Lauria,Thomas Magnard ,JakobNordström和Marc Vinyals。在更严格的CDCL SAT解算器模型中,时间与内存之间的权衡。第十九届国际满意度测试理论和应用会议(SAT '16)的会议记录中,计算机科学讲义,第9710卷,第160-176页,2016年7月。]


16

即使我从未真正从事过该领域的工作,也请允许我再加上两分钱的理解力。

您在问两个问题之一:“对于某种类型的实例,证明某种SAT求解器的理论效率的所有已知方法是什么”和“为什么SAT求解器实际上是有效的”。

对于前一个问题,我将指导您进行Stefan Szeider的研究。在我看来,他似乎是SAT的后门和FPT参数化主题中目前最活跃的领域(这包括结构方法,例如树宽类型的度量和所谓的后门集,以及两者的某种混合)。

老实说,对于后一个问题,确切的问题已经在我参加过的每个SAT解决问题研讨会(包括最近几年)中都进行过辩论,因此这不是一个解决的问题。但是我的印象如下。

首先,您需要量化或限制“实际”的含义。SAT求解器不是解决您遇到的任何问题(当然)的通用解决方案,这是不正确的,而且在不同问题之间您最终需要使用不同的策略。例如,最近有几项成功,其中数学猜想已经通过SAT求解器辅助的大量计算机搜索得到了验证或加强。显然,在这种情况下,很多时候现代SAT求解器通常采用的巧妙的CDCL风格改进和启发式方法并不能真正为您带来太多购买力,而且游戏归结为一种巧妙的方法,可以将您的源问题分解为零件,然后(基本上)是蛮力分支算法,其运行时间中的常数因子较小。

我可能会稍微夸大这一点,但是我的意思是,当SAT解算器攻击诸如鄂尔多斯差异猜想时,它们成功的原因与解决电路测试衍生的工业实例的原因不同。

因此,我们不得不问,为什么基于CDCL的求解器在工业实例(例如电路验证(电路等效测试))中表现得如此出色?我觉得最有力的观点(或共识观点)是CDCL求解器的搜索策略,与这些实例的结构非常吻合。例如,这意味着电路由相对复杂的部分(称为簇)组成,通过相对而言较少和较简单的连接(可能以分层方式)互连。并且CDCL求解器具有所有启发式功能,非常善于(事实上)利用这一点并将这些簇“投影”到共享变量上,无论采用哪种方式或顺序对验证手头电路最有用。但是,这似乎还不足以达成共识(例如,我们可能无法仅通过引用实例的图结构来理论上解释CDCL SAT求解器在该领域的效率)。

那么难处理的参数化是否可以解释后者呢?老实说,我不知道。我认为可能会产生强大的影响,即现实世界中的实例并不是最坏的情况,根据我们能够处理的任何实例分布,它们也不(可能)是真正的平均情况。但这也许仍然值得一问。


2
Magnus,到目前为止,您在此领域的经验肯定比其他任何尝试回答此问题的人都要多。当我说“我的两分钱”时,我指的是我只研究了一组特定的NP-完全问题,以及CSP和SAT求解器如何尝试解决这些问题的许多情况。我在工作场所使用CSP和SAT求解器也有大约一年的经验,但是再一次,这甚至与您在该领域的10多年经验还差得很远。您的“两分钱”可能值得“两个金块”。一个问题。
Tayfun Pay

1
您在回答中指出以下内容:“ SAT解算器并不是您遇到的任何问题的通用解算器。” 您是否能够查看这些实例的子句与变量的比率c = m / n?换句话说,它们是否位于c =〜4.2的困难区域?因为我所经历的是,当您将CSP实例简化为SAT实例时,最终会遇到很多变量,并且通常是由于该原因而不是因为它实际上位于困难区域,所以SAT解算器需要花费更长的时间是时候解决了。
Tayfun Pay

1
另一方面,如果您知道这些实例最终出现在SAT的硬区域,c =〜4.2,那么我是否可以知道这个现实问题是什么?我很想知道哪些现实问题最终会在SAT的困难区域中最终解决。谢谢
Tayfun Pay

2
老实说,我几乎没有实践SAT解决的经验。我所有的实际工作都在这个问题的纯理论方面。但是,就您的问题而言,可能是这样:我的印象是,随机k-SAT和子句密度(您提到的)的结果实际上仅在您的输入实例实际上是统一随机公式的情况下适用。还要注意,〜4.2的边界仅适用于公式为3-SAT的情况,而不是混合长度CNF公式。
MagnusWahlström'17

1
通过“ SAT求解器无法很好解决的问题”,我主要指的是被认为是真正棘手的问题,例如破解一个好的加密货币。但是,由于证明论的下界,也有CDCL求解器无法有效求解的公式,例如鸽子洞原理公式。我已经看到至少有一个关于“ CDCL SAT求解器使我失败的消息”的谈话,其中的一些挖掘表明,他们的问题编码隐藏了类似鸽子洞的方面(例如,包含分配问题的某些变体)。不幸的是,我不记得细节了。
MagnusWahlström'17

15

Matt'Järvisalo,Arie Matsliah,JakobNordström和StanislavŽivný在CP '12上发表了一篇论文“ SAT的证明复杂性度量与相关硬度 ”,该论文试图将CDCL求解器求解某些公式的难易程度与分辨率证明联系起来复杂性度量,特别是分辨率证明空间。结果有些不同,但我认为这是朝正确方向迈出的一步。


不幸的是,简短的答案似乎是与证明复杂性度量之间确实没有明确且令人信服的联系。可能仍然存在非平凡的相关性,但似乎理论太过整洁,现实太混乱了,以至于没有一个真正好的匹配。关于“有关证明复杂性的方法”的论文,事实证明,更详细的实验提供了更为复杂的图景,而结论却不太明确-我们希望现在能获得有关这十年的完整期刊报告,但这很复杂,尽管仍然很有趣。
雅各布·诺德斯特罗姆

15

我不是该领域的专家,但是我认为随机SAT /相变材料或多或少完全与工业/实际应用无关。

例如,我相信随机实例的非常好的求解器(例如https://www.gableske.net/dimetheus)是基于统计物理方法(信仰传播等)的,而我认为非常好的“通用”求解器(例如我相信,因为http://fmv.jku.at/lingeling/)正在使用无关的技术(更像Kaveh所说的那样)。

但是,正如我说的那样,也许不要相信我。这是由一定的非专家提供的。


是。随机SAT和工业SAT是完全不同的游戏,所使用的方法也不同。而且,此外,如果您想解决非常困难的组合实例,那么其他技术会更加成功(例如,如果问题足够困难,那么进行子句学习并不会真正奏效,除非是非常本地化的)。但是以某种方式似乎是一个相当普遍的误解(至少在SAT社区的应用方面),子句与变量的比率应该以某种方式与任何CNF SAT实例相关,而不仅与随机实例相关。
雅各布·诺德斯特罗姆
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.