为什么2SAT在P中?


55

我遇到了解决2SAT的多项式算法。我发现2SAT在P中(所有(或许多其他)SAT实例都是NP-Complete)令人吃惊。是什么使这个问题与众不同?是什么使它如此容易(NL完全-甚至比P容易)?


18
人们为什么认为这是一个坏问题?
Peter Shor

12
一个有趣的方面是,如果您想知道2SAT表达式(即Max2SAT)中可同时满足的子句的最大数量,那么您将再次回到NP-complete。
肖恩·哈克

11
这要么是一个可怕的问题,因为它没有一个有用的答案,要么是一个奇妙的问题,因为唯一正确的答案是“没人知道”。
Jeffε

12
请阅读论文“可满足性问题的复杂性:完善Schaefer定理”。
Diego de Estrada

3
亲爱的盖伊,2SAT包含在P中的事实几乎涵盖在所有标准复杂性教科书中,因此当您说刚注意到这一事实时,问题就好像您甚至都没有阅读过复杂性的标准教科书一样。
卡韦

Answers:


88

这是根据MGwynne的回答所作的进一步直观而朴实的解释。

使用 -SAT,您只能表达形式含义,其中和是文字。更精确地,每 -clause可以被理解为一对含义:和。如果将设置为true,则必须也为true。如果将设置为false,则必须为false。这样的含义很简单:没有选择,您只有一个b2aba2 12 ¬ 12 ¬ 21一个b b 一个1 ¬ ¬ b2l1l2¬l1l2¬l2l1abba1可能,没有大小写乘法的空间。你可以按照每一个可能产生的影响链,看看你是否曾经获得两个的,并从:如果你对一些做,那么2-SAT公式是不可满足的,否则它是满足的。在这种情况下,可能的蕴涵链数在输入公式的大小上被多项式限制。¬lll¬ll

使用 -SAT,您可以表示形式含义,其中,和是文字。现在您遇到麻烦了:如果将设置为true,则或必须为true,但是哪个是true?您必须做出选择:您有2种可能性。在这里,可以进行事例乘法,并且在这里发生组合爆炸。一个b Ç 一个b ç 一个b Ç3abcabcabc

换句话说, -SAT能够表达不止一种可能性的存在,而 -SAT没有这种能力。正是多于一个可能性(例如存在可能性中的情况下 -SAT,中的情况下,可能性 -SAT)引起的NP完全问题的典型的组合爆炸。2 2 3 k - 1 k3223k1k


6
希望我能对此再投票!更好的答案!
MGwynne 2011年

5
@MGwynne:感谢您的友好评论。不客气,您的回答确实非常好!
Giorgio Camerani 2011年

8
这是对一个很好的问题(IMHO)的很好回答。正如Mac Lane所写的那样:“有效的或棘手的形式操纵是由数学家毫无疑问地具有指导思想的—-但是陈述这种操纵比用语言表达这个想法要容易得多。。。。 《数学》杂志的这些想法可以通过操纵的展示使它们大放异彩。” 这种特殊的问答方式有助于“点子成真”(对我而言)。谢谢!:)
John Sidles 2011年

4
@John:非常欢迎!;-)非常感谢您的慷慨评论,我非常感谢。我完全同意Mac Lane的话。
Giorgio Camerani 2011年

根据Giorgio Camerani的回答,如果您引入更多的虚拟布尔变量,具有更多子句且既没有收益也没有利润,那么将任何NP问题减少到3SAT 都是值得的,但是更可取的是将其减少到CNF SAT或布尔可满足性或改为使用SAT电路,因为在这些问题中,布尔变量和子句较少,这意味着蛮力天真算法,卡诺图和Quine-McClusky算法具有更好的复杂性:D。
告别堆栈交换

31

考虑使用2-SAT公式进行解析。任何解析器的大小最多为2(注意,如果对于长度为和子句,如果)。大小为2的子句的数量在变量数量上是二次方的。因此,分辨率算法在P中。Ñ 2 Ñ n+m22n,m2nm

一旦您获得了3-SAT,您将获得越来越大的解决方案,因此一切都变成了梨形:)。

尝试将问题转换为2-SAT。由于您无法使用大小为3的子句,因此您(通常)无法对涉及3个或更多变量的含义进行编码,例如,一个变量是对另外两个变量进行二进制运算的结果。这是一个巨大的限制。


3
“您无法对含义进行编码”-IMP-SAT也在P(我认为是NL)中
Max

8
¬ p qpq只是。¬pq
卡夫

1
卡夫,很好,现在解决。
MGwynne 2011年

正如我已经说过的,当您将任意NP问题简化为布尔可满足性,Circuit SAT或CNF SAT时,请不要将问题简化为3SAT,因为随着布尔变量和子句的增多,问题变得更加困难和复杂。在新问题中,甚至分辨率算法的效率也降低了!
告别堆栈交换

20

正如Walter所说,2-SAT的子句具有特殊的形式。可以利用它来快速找到解决方案。

实际上,可以在多项式时间内确定SAT实例的几类,而2-SAT只是这些易处理类中的一种。易于处理的原因有三种:

  1. (结构可处理性)可以在多项式时间内求解变量以树状方式交互作用的任何SAT实例类别。多项式的次数取决于类中实例的最大宽度,其中宽度衡量的是实例离树的距离。马克思更精确地表明,如果实例具有有限的亚模宽度,则可以使用分治法在多项式时间内确定类别。

  2. (语言可处理性)可以在多项式时间内求解真假变量模式为“ nice”的任何SAT实例。更准确地说,文字模式定义了一种关系语言,而Schaefer对导致易处理性的六种语言进行了分类,每种语言都有自己的算法。2-SAT构成了六个Schaefer类之一。

  3. (混合易处理性)也有一些实例不属于其他两类,但由于其他原因可以在多项式时间内求解。

    • DánielMarx,约束约束满足和联合查询的可追踪超图属性,STOC2010。(doi预印本
    • Thomas J. Schaefer,可满足性问题的复杂性,STOC1978。(doi

2
从随机k-SAT文献中也有基于解空间结构的论点,可以用来解释差异。
卡韦

3
@Kaveh:我对混合可延展性的描述本来就很模糊,无法涵盖这些东西。例如,对于非常特殊的情况,可以基于LovászLocal Lemma来论证可满足性。见Pearson和Jeavons 1997年的调查结果显示:cs.ox.ac.uk/publications/publication1610-abstract.html
安德拉斯·萨拉蒙

3
还要注意,SAT是约束满足问题的特例,其中每个变量都可以取2个值。当变量可以取3个值时,Andrei Bulatov将其分类为10种易处理的语言类:cs.sfu.ca/~abulatov/papers/3-el-journal.ps 混合类对于较大的域也更为有趣。
安德拉什萨拉蒙

10

如果您了解2SAT的算法,那么您已经知道为什么它在P中-这正是该算法演示的内容。我认为这部漫画说明了我的观点。正如您已经知道2SAT为什么在P中一样,您可能想知道的是为什么2SAT不是NP-hard。

要了解为什么2SAT并不是NP难的,您必须考虑将NP中的其他问题减少到它的难易程度。为了对此有一个直观的了解,请看如何将SAT简化为3SAT,并尝试应用相同的技术将SAT简化为2SAT。2SAT并不像3SAT和其他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.