SAT的最佳上界


43

另一篇文章中,乔·菲茨西蒙斯(Joe Fitzsimons)问到“ 3SAT的当前最佳下限”。

我想走另一条路:3SAT 当前最好的上限是多少?换句话说,最有效的SAT求解器的时间复杂度是多少?

尤其是,可以找到针对SAT的次指数(但超多项式)算法吗?


2
我不知道分析结果,但是您可以在这里找到实验结果baldur.iti.uka.de/sat-race-2010/results.html(请参阅“ HTML”链接)
Radu GRIGore 2010年

1
这个问题的标题有点误导,因为存在这个问题:cstheory.stackexchange.com/questions/1295/sat-solver-download。我认为您可能会改写为“ SAT的最佳上限”?
Suresh Venkat 2010年

@Suresh:您所指的问题与“ #SAT”有关,而这个问题与SAT有关。另外,这个问题在此之后一周左右被问到。无论如何,您仍然建议更改此标题吗?
MS Dousti

是的,因为“ SAT解算器”是特定的众所周知的对象-解决SAT的实际代码库。Google会感到困惑,并将人们重定向到此处寻找代码的人:)。
Suresh Venkat 2010年

4
关于这个问题的动机,我认为几个人已经在17x17实例上尝试过SAT解算器。这似乎是SAT求解器可以处理的前沿领域。您可以尝试使用并行求解器,但是基于Bill Gasarch的帖子,我对您的印象是,您需要进行大量的工作。您也可以应用具有适当理论的SMT求解器,或使用实现具有有效传播子的全局约束的约束求解器。在每种情况下,新的想法都是表达一个难以使用子句实现的重要属性。
安德拉斯·萨拉蒙(AndrásSalamon)2010年

Answers:


38

有两种“最佳” SAT求解器,一种用于理论,一种用于实践。

理论

  • 岩间和雄(Kazuo Iwama),濑户和久(Kazuhisa Seto),高田忠(Tadashi Takai),玉木S(Suguru Tamaki),“ 改进的3-SAT随机算法 ”,ISAAC,2010年。

3SAT的随机O(1.32113n)

3SAT的随机O(1.321n)

3SAT的确定性O(1.439n)

实践

检查SAT会议以获取每年的比赛结果。


我找到了与岩间等人的链接。那么,真的是到目前为止解决SAT的最新最好结果吗?O(1.32113n)
MS Dousti

// @ Sadeq:我是这样认为的,但只针对3-SAT,而不是SAT。
Tian Liu 2010年

2
现在,最好的算法是Timon Hertli,Robin A. Moser和Dominik Scheder 在时间内完成的。O(1.321n)
刘天2010年

10
另一个更新:在FOCS 2011中,Timon Hertli(arxiv.org/abs/1103.2165)证明了PPSZ算法可以在次时间内解决每个3SAT实例。1.308n
瑞安·威廉姆斯

21

我不知道有什么 SAT的零错误随机算法(或coNE / Eadvice算法
)比已知的确定性算法具有更好的范围,
无论是否承诺最多有一个令人满意的分配。


“问题3-SAT在时间上是确定性可解 ”。O(1.3303n)


“对于变量的唯一可满足的3-CNF(分别为4-CNF),令人满意的分配 可以在确定的运行时间中找到,最多为O。n
(分别为 OO(1.3071n))“。O(1.4699n)


  1. “存在一种针对
    单向误差的3-SAT的随机算法, 其运行时间为。” O(1.30704n)
  2. “存在一种针对
    单向误差在时间O内运行的4-SAT随机算法 。”O(1.46899n)


“对于唯一的3-SAT,有一种随机算法, ϵ=1/(1024)
实数,让开往3-SAT之前的纸的运行时表示 为S
O(2(S+o(1))n) 当前论文的算法及时运行 “。O(2(Sϵ+o(1))n)



16

O(an)a=2(k1)/kO(1.33334n)O(1.5n)

O((a+ϵ)n)aϵ>0

O


1
你为什么说“几乎完全”?我想念报纸上的东西吗?
安德拉斯·萨拉曼(AndrásSalamon)2010年

1
O((22k+1)n)k=3O(1.5n)

4
我说“几乎完全”只是为了表明那里存在ε因子。我猜想人们会期望完全的随机化可以实现相同的运行时间(最多多项式因子)。也许这是不合理的。
罗宾·科塔里

1
@Grigory Yaroslavtsev:我提到的Moser-Scheder确定性算法是否比您引用的更快?我想念什么吗?
罗宾·科塔里

1
ϵ

12

如前所述,如果您对理论运行时间保证感兴趣,那么这个问题是重复的。

但是我想指出的是,如果您真的想解决一个具体的问题(例如您提到的着色问题),那么我认为研究理论上的上限绝对没有任何意义。

即使您想避免“工程”方面,我还是建议您带一些受欢迎的SAT解算器,然后尝试一下,然后看看会发生什么情况(大多数都可以读取相同的DIMACS文件格式,因此尝试起来很容易不同的求解器)。您可能同时具有正面和负面的惊喜。最近我有一个SAT实例家族。事实证明,一堆具有数万个变量和超过一百万个子句的实例很容易解决,而看起来简单得多的只有数百个变量和数千个子句的实例对于我尝试过的任何求解器来说都太困难了。


8
除了Jukka的摘要外,还值得注意的是,有两种主要的SAT解算器:基于调查传播的解算器对随机SAT实例非常有效,而将子句学习与单位解析结合使用的解算器则很有效很好地发现组合结构。这些具有完全不同的行为。对于SAT解算器而言,最坏的情况往往是无法满足的情况,但其中杂物的空间具有复杂的结构,因此无法进行大量修剪。不幸的是,组合学的实例往往是这种情况。
安德拉斯·萨拉蒙(AndrásSalamon)2010年

11

O(1.308n)


我认为,当有人提出更好的上限时,他们会引用这篇论文。本文仅被引用过一次,即“基于完整二进制基础的公式的可满足性算法和平均用例硬度”,而且他们似乎只谈论某些类型的公式。因此,这似乎是迄今为止最好的上界。
Tayfun Pay'2

@TayfunPay: 我的答案中最底层的论文引用了该论文。

@RickyDemer呵呵!比这更好的绑定吗?记号对我来说不太清楚。
Tayfun Pay 2014年

@TayfunPay: 是的,您可以按照以下说明浏览两篇论文。 S3Sk 该论文在第11页的顶部说,他们的算法与PPSZ具有相同的界限,这意味着他们所显示的内容与我在前一句话中提到的不同。 (继续 ...)

(... 继续) S2SnSS3

8

除非指数时间假设为假,否则3SAT不可能具有次指数算法。

O(1.324n)

O(1.32216n)


15
这不是重言式吗?
伊藤刚(Tsuyoshi Ito)2010年

1
2o(n)

岩间和夫等人的工作。(2004)比Schoening(1999)的要新。我不知道是否有更多最新结果。
MS Dousti

8
为避免混淆的可能性,我的最后一句话提到答案的第一句话:“除非指数时间假设(ETH)为假,否则3SAT不可能具有次指数算法。”我的理解是,指数时间假设是一个非常假设,表明没有3SAT算法的运行时间在变量数量上为次指数(即2 ^ {o(n)})。
伊藤刚(Tsuyoshi Ito)2010年

10
为了避免进一步的混乱,我将补充一点,当Tsuyoshi发表他的评论时,答案仅包含一个句子,这使他的评论非常恰当。
罗宾·科塔里

7

这篇文章涉及SAT的上限。这最好的下界。该链接提供了年度竞赛的详细信息,比较了SAT解算器的实现,所有这些都可以下载。为简单起见,您可以从SAT4J(基于Java的SAT解决程序库)开始。


原来这个问题已经问过了;当我搜索该网站时,我只是没有看到它。刘天对上限问题的回答正是我所寻找的。谢谢您的链接,戴夫!
Daniel Apon 2010年

1
这证明我在这里花了太多时间;-)
Dave Clarke 2010年

我们很高兴您能做到:)
Suresh Venkat

2
我不确定是否会推荐sat4J,它不仅比现有技术慢很多,而且也更复杂。但是,由于面向对象的结构,因此可以很好地自定义它。MiniSat的编写非常好,而2.2是最新技术。
Mikolas 2011年

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.