为什么CNF用于SAT而不是DNF?


22

我不太明白为什么几乎所有的SAT求解器都使用CNF而不是DNF。在我看来,使用DNF可以更轻松地解决SAT问题。毕竟,您只需要浏览一组隐含项,并检查其中的一个是否既不包含变量也不包含其否定值。对于CNF,没有像这样的简单过程。


5
并非所有约束求解器都将CNF用作输入。有些人不愿意这样做,因为保留了原始约束集的结构。
戴夫·克拉克2010年

1
这个问题有一个错误的前提,并且不认为它应该得到目前所说的那样高的评价。SAT被定义为CNF公式的解。存在一个解决DNF的问题(您甚至可以称其为找到满意的任务),但在CS中并未将其称为SAT /昵称SAT。&恕我直言,这应该迁移到cs.se ...另一个说明-将CNF转换为DNF,反之亦然,实际上与压缩算法非常相似,或者可以将其视为在特定情况下严重失败的压缩算法(导致指数爆炸)大小)
vzn 2012年

10
@vzn:实际上,有时会使用“ SAT”来指代为任何布尔公式找到令人满意的赋值的问题。CNF-SAT只是最有趣的特殊情况,因此我们倾向于使用“ SAT”来特别指CNF-SAT作为一种同步。当然,DNF-SAT可以有效地解决,就像CNF-TAUTOLOGY可以有效地解决一样。问题似乎的前提是没有意识到这一点。
Niel de Beaudrap

Answers:


56

由于Karp,从SAT到3SAT的教科书减少将任意布尔公式转换为多项式大小的“等效” CNF布尔公式,使得在且仅当是可满足才是可满足的。(严格来说,这两个公式并不等效,因为具有其他变量,但是的值实际上并不取决于这些新变量。)Φ 'ΦΦ Φ ' Φ ' Φ 'ΦΦΦΦ

从任意布尔公式简化为DNF公式的类似还原方法尚不可知。所有已知的转换都会使公式的大小成倍增加。而且,除非P = NP,否则不可能减小!


afaik虽然DNF到CNF的转换(反之亦然)与P vs NP并不完全相同,尽管它确实与某些重要的复杂性类分离有关(显然是“大于” NP类)……问题是它可能导致大小呈指数级爆炸...在任何情况下,CNF和DNF之间的转换都不是决策问题...有多种方法可以将其转化为决策问题...
vzn 2012年

10
我认为JeffE的观点是DNF-SAT在P中,因此除非P = NP,否则它不可能是NP完全的。
Luke Mathieson,2012年

2
鉴于当前的知识,“所有已知的转换”都不正确,据信有DNF <=> CNF公式/转换,无论算法如何,都需要指数空间爆炸……猜测关于CNF <=> DNF转换的讨论似乎非常相关这个问题的答案,这个答案暗示了它...文献中的任何地方都使用缩写“ DNF-SAT”吗?不要回想起自己看过的东西……这似乎使我感到困惑……满足DNF的问题是决策问题,DNF <-> CNF转换是函数问题,答案并不能使区分变得太清楚;一个很好的答案……
vzn 2012年

@Jɛff E:您介意在这里澄清“任意布尔公式”的含义吗?在第92页的Karp 论文中,可满足性是在CNF公式上定义的。这不会影响您对OP的问题的回答,但是我试图确保对于任意布尔公式(即CNF中未必需要的公式)没有更一般的结果。谢谢
lyes 2015年

22

人们说了大多数重要的事情,但我想强调几点。

  1. DNF公式的可满足性是P
  2. CNF公式的可满足性是NP
  3. 测试CNF公式是否为重言式为P
  4. 测试DNF公式是否是重言式是coNP
  5. 否定DNF会产生CNF,反之亦然

因此,SAT求解器使用CNF是因为它们的目标是可满足性,并且任何公式都可以转换为CNF,同时保持线性时间的可满足性。



1
@TayfunPay他们这样做。例如,。如果您两次禁止包含相同变量的子句,则重言式只有一个表示形式,即空子句集。{{¬xx}}
Mikolas 2011年

3
@Tayfun虽然我确实同意定义通常会禁止在子句中重复变量,但我认为我从未见过会禁止空子句集的定义。(而且我不清楚您为什么要这么做)
Mikolas 2011年

2
@Tayfun 1)您能否指出我一个出版物,该出版物说CNF中没有重言式,或者空子句集不是CNF?2)如果您不允许使用空子句集,那么您也应该禁止该空子句,并且您也不能表示false 3)如果您在CNF中不允许true和/或false,那么您将失去能够表示的属性所有布尔函数,为什么要这么做?
Mikolas 2011年

1
“任何给定的子句中都不应重复变量或文字。” ---不允许空的公式或子句。顺便说一句,如果您不允许empty子句,您将无法再进行解决方案驳斥证明,这是自动推理中相当重要的一部分。
Mikolas

18

SAT求解器不会“使用” CNF-(通常)将CNF用作输入,并会尽力解决所获得的CNF。正如您的问题所指出的,表示就是一切-分辨DNF是否比相同大小的CNF容易得多。

这就引出了一个问题,即为什么SAT求解器不能仅仅将其给定的CNF转换为DNF并求解生成的DNF,而尝试进行此练习是理解表示问题的一个很好的练习。


11

2013年9月7 :添加了更多答案,请检查页面底部


基本上,DNF公式是 clause子句的Ç ,其中每个子句Ç = 1ķ是文字的一个一起选择。让我们把一个条款ç 矛盾的当且仅当它包含一个文本和它的否定¬ 。显而易见,每个不冲突的子句仅编码2 n - kc1...cmci=li,1...li,kcil¬l2nk公式的解决方案。因此,整个DNF只是解决方案的列举。一个公式可能具有指数级的多个解,因此相应的DNF公式可能具有指数级的多个子句。尝试转换此CNF公式:

l1l2l3l4

l5l6l7l8

l9l10l11l12

l13l14l15l16

l17l18l19l20

与其对应的DNF公式:您将获得过多的子句。一言以蔽之:CNF是紧凑的,而DNF不是。CNF是隐式的,而DNF是显式的。

以下问题是NP完全的:给定DNF实例,是否存在伪造所有子句的变量分配?


4
要获得正确的LaTeX格式,请将\ and和\ or替换为\ land和\ lor(或\ wedge和\ vee)。
Jeffε

2
转换为常规CNF并没有比它更紧凑的内容,OP问题的真正关键在于,您可以使用辅助变量创建那些“可均衡的” CNF函数。您可以对DNF进行类似的近似处理,以解决其他问题,而不是测试可满足性。(等价不满意函数?...)
2012年

1
Giorgio Camerani的见解并不好。如果将某些内容转换为CNF,则子句数量也会以指数形式增加。选择相同的示例,然后将“ and”替换为“ or”。从这个小的DNF表达式到CNF的转换将是巨大的。他们与他们有着阴阳关系。
除以零

@dividebyzero:我已经专门回答了您的评论。
Giorgio Camerani 2013年

6

我刚刚意识到另一件事,希望它应该得到一个单独的答案。这个问题的推论并不完全正确。二进制决策图(BDD)可以看作是DNF的紧凑/精确表示。已经有一些使用BDD的SAT求解器,但我相信它们不再出现。

Darwiche和Marquis有一篇不错的论文,研究布尔函数的各种表示形式的不同属性。


4

这个进一步的答案是作为除以零的评论对我以前的回答的反馈。

正如Diverbyzero所说,CNF和DNF确实是同一枚硬币的两个面,这的确是事实。

当您必须找到满意的作业时,DNF是显式的,因为它明显地向您显示了其满意的作业(DNF可满足性属于),而CNF则是隐式的,因为它会缠绕并缠绕以将其令人满意的作业从您的眼睛隐藏起来(CNF可满足性为N p - ç ö p ë ë)。我们不知道有任何程序能够将任何CNF公式解包和展开为某种可满足要求的DNF公式,而该公式不是指数大小的。这就是我先前回答的重点(其示例旨在显示指数级的爆炸,尽管可以肯定的是,这种示例并非最佳选择)。PNPcomplete

相反,当您必须找到一个伪造的任务时,CNF是显式的,因为它明显地向您展示了其伪造的任务(CNF伪造性属于),而DNF是隐式的,因为它缠绕并缠绕起来以掩盖其伪造的任务(DNF伪造性)是N P - c o m p l e t e)。我们不知道有任何程序能够将任何DNF公式解包和展开为某些可指数化的CNF公式,而该公式的大小不是指数。PNPcomplete

一方面,我们有矛盾,即公式无法满足。在相反的末端,我们有重言式,即不可伪​​造的公式。在中间,我们有既可令人满意又可伪造的公式。

nk2nk

nk2nk

k=02nNPcomplete

k=02nNPcomplete

2n

2n

在这种情况下,我们变得更加清楚,为什么CNF可满足性和DNF可伪性在计算硬度方面是等效的。因为它们实际上是一个非常相同的问题,因为基本任务是完全相同的:判断多个集合的并集是否等于所有可能性的空间。这样的任务将我们引向了更广阔的计算领域,在我的拙见中,这是值得探索的途径之一,以期希望在这些问题上取得不可忽视的进步(我怀疑对基于分辨率的求解器的进一步研究可能最终会带来突破性的理论进步,同时它肯定还会继续带来令人惊讶的实际进步)。

此类任务的困难在于,这些集合以包含-排除方式疯狂地重叠。

这种重叠的存在恰恰是计数工作难以解决的地方。此外,我们让这些集合重叠的事实是允许我们拥有紧凑的公式(其解决方案空间却成倍增长)的原因。


4

我决定将这个线程中的所有这些答案(尤其是Giorgio Camerani的答案)都变成一个漂亮的表格,以便一目了然地看到二元性:

DNFCNFtautology/unfalsifiabilitycoNP-completeP(each clause has a pair of P and ¬P)satisfiabilityP(sat. assignments are explicit)NP-completefalsifiabilityNP-completeP(fals. assignments are explicit)unsatisfiabilityP(each clause has a pair of P and ¬P)coNP-completeconversion to normal form, retaining equivalence()()conversion to normal form, retaining satisfiability()FPconversion to normal form, retaining falsiabilityFP()

()

()()FPNP[1]

问题的最短答案:根据上表,只能通过指数时间显示通过DNF的可满足性(求解SAT)。


1
什么是“ PL公式”?“ NF”是什么意思?
Joshua Grochow

4
这里有一些问题。(1)我认为“不可证伪性”是指“重言式”。(2)KNF应该是CNF。
Huck Bennett

2
A(φ)φφA(φ)φA(φ)

1
(1)“谓词逻辑”应为“命题逻辑”。(2)转换为标准格式不是决策问题,而是功能问题(或者搜索问题,因为“标准格式”不是唯一的)。因此,表中给出的决策类是不合适的。
EmilJeřábek支持Monica

1
Δ3P
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.