Pourquoi CNF est-il utilisé pour SAT et non DNF?


22

Je ne comprends pas très bien pourquoi presque tous les solveurs SAT utilisent CNF au lieu de DNF. Il me semble que résoudre SAT est plus facile en utilisant DNF. Après tout, il vous suffit de parcourir l'ensemble des implicants et de vérifier si l'un d'eux ne contient pas à la fois une variable et sa négation. Pour CNF, il n'y a pas de procédure simple comme celle-ci.


5
Tous les solveurs de contraintes n'utilisent pas CNF en entrée. Certains préfèrent ne pas le faire, car la structure de l'ensemble de contraintes d'origine est préservée.
Dave Clarke

1
cette question a une prémisse erronée et ne pense pas qu'elle mérite une note aussi élevée que celle formulée actuellement. SAT est défini comme la solution des formules CNF. il y a un problème de résolution des DNF (vous pourriez même l'appeler trouver des affectations satisfaisantes ) mais il n'est pas appelé / surnommé SAT dans CS. et à mon humble avis, cela devrait être migré vers cs.se ... une autre note - la conversion de CNF en DNF et vice versa est en fait très similaire à, ou peut être considérée comme, un algorithme de compression qui échoue mal dans des cas particuliers (conduisant à une explosion exponentielle en taille)
vzn

10
@vzn: en fait, "SAT" est parfois utilisé pour faire référence au problème de trouver une affectation satisfaisante pour toute formule booléenne. CNF-SAT n'est que le cas spécial le plus intéressant, de sorte que nous avons tendance à utiliser "SAT" pour désigner CNF-SAT en particulier comme une sorte de synechdoche. Le DNF-SAT, bien sûr, est efficacement résoluble, de la même manière que CNF-TAUTOLOGY est efficacement résoluble. La question semble être fondée sur le fait de ne pas s'en rendre compte.
Niel de Beaudrap

Réponses:


56

La réduction des manuels de SAT à 3SAT, due à Karp, transforme une formule booléenne arbitraire en une formule booléenne CNF "équivalente" de taille polynomiale , de telle sorte que est satisfaisante si et seulement si est satisfaisante. (À strictement parler, ces deux formules ne sont pas équivalentes, car a des variables supplémentaires, mais la valeur de ne dépend pas réellement de ces nouvelles variables.)Φ ΦΦ Φ Φ Φ ΦΦΦΦ

Aucune réduction similaire de formules booléennes arbitraires en formules DNF n'est connue; toutes les transformations connues augmentent de façon exponentielle la taille de la formule. De plus, à moins que P = NP, une telle réduction n'est pas possible!


afaik la conversion de DNF en CNF et vice versa n'est pas exactement la même chose que P vs NP bien qu'elle se rapporte probablement à certaines séparations de classes de complexité importantes (apparemment pour les classes "plus grandes" que NP) ... le problème est qu'elle peut conduire à une explosion exponentielle de taille ... et en tout cas la conversion entre CNF et DNF n'est pas un problème de décision ... il y a plusieurs façons de le transformer en problème de décision ...
vzn

10
Je pense que le point de JeffE était que DNF-SAT est en P, donc il ne peut pas être NP-complet à moins que P = NP.
Luke Mathieson

2
"toutes les transformations connues" ne sont pas correctes compte tenu des connaissances actuelles, afaik il existe des formules / conversions DNF <=> CNF qui nécessitent de manière explicite une explosion d'espace exponentielle quel que soit l'algorithme ... devinez que la discussion CNF <=> la conversion DNF était très pertinente à cette question et cette réponse fait allusion à cela ... l'abréviation "DNF-SAT" est-elle utilisée n'importe où dans la littérature? ne me souviens pas l'avoir vu moi-même ... cela me semble intrinsèquement déroutant ... La satisfaction de DNF est un problème de décision, la conversion DNF <-> CNF est un problème de fonction et la réponse ne rend pas cette distinction trop claire; une excellente réponse serait ...
vzn

@ Jɛ ff E: voulez-vous clarifier ce que vous entendiez par "formule booléenne arbitraire" ici? En examinant l' article de Karp , page 92, la SATISFACTION est définie sur les formules CNF. Cela n'affecte pas votre réponse à la question du PO, mais j'essaie de m'assurer qu'il n'y a pas de résultats plus généraux pour les formules booléennes arbitraires (c'est-à-dire les formules qui ne sont pas nécessairement dans CNF). Merci
lyes

22

La plupart des choses importantes ont été dites mais je voudrais souligner quelques points.

  1. la satisfiabilité d'une formule DNF est P
  2. la satisfiabilité d'une formule CNF est NP
  3. tester si une formule CNF est une tautologie est P
  4. tester si une formule DNF est une tautologie est coNP
  5. la négation des rendements DNF CNF et vice versa

Les solveurs SAT utilisent donc CNF car ils visent la satisfiabilité et toute formule peut être traduite en CNF tout en préservant la satisfiabilité en temps linéaire.



1
@TayfunPay ils le font. Par exemple, . Si vous interdisez deux fois les clauses contenant la même variable, il n'y a alors qu'une seule représentation d'une tautologie, qui est l'ensemble vide de clauses. {{¬XX}}
Mikolas

3
@Tayfun même si je suis d'accord que les définitions interdisent généralement la répétition des variables dans les clauses, je ne pense pas avoir jamais vu de définition qui interdirait l'ensemble vide de clauses. (Et je ne comprends pas pourquoi vous voudriez faire ça)
Mikolas

2
@Tayfun 1) pourriez-vous m'indiquer une publication qui dit qu'il n'y a pas de tautologies dans CNF ou que l'ensemble vide de clauses n'est pas CNF? 2) si vous interdisez l'ensemble vide de clauses, vous devez également interdire la clause vide et vous ne pouvez pas non plus représenter false 3) si vous n'autorisez pas true et / ou false dans CNF, vous perdez la propriété de pouvoir représenter toutes les fonctions booléennes, pourquoi voudriez-vous faire cela?
Mikolas

1
"il ne devrait pas y avoir de répétition de variables ni de littéraux dans une clause donnée." --- qui n'interdit pas les formules ou clauses vides. BTW Si vous refusez la clause vide, vous ne pouvez plus effectuer de preuves de réfutation de résolution, qui constituent une partie assez importante du raisonnement automatisé.
Mikolas

18

Les solveurs SAT n'utilisent pas CNF - ils reçoivent (souvent) CNF en entrée et font de leur mieux pour résoudre le CNF qui leur est donné. Comme le souligne votre question, la représentation est tout - il est beaucoup plus facile de dire si un DNF est satisfaisable qu'un CNF de même taille.

Cela conduit à la question de savoir pourquoi les solveurs SAT ne peuvent pas simplement transformer leur CNF donné en DNF et résoudre le DNF résultant, et essayer c'est un bon exercice pour comprendre les problèmes de représentation.


11

7 e Septembre 2013: autre réponse a ajouté, en bas de la page de contrôle


Fondamentalement, une formule DNF est une disjonction des clauses , où chaque clause c i = l i , 1. . . l i , k est une conjonction de littéraux. Appelons une clause c i conflictuelle si et seulement si elle contient à la fois un l littéral et sa négation ¬ l . Il est facile de voir que chaque clause non conflictuelle code juste 2 n - kc1...cmcje=lje,1...lje,kcjel¬l2n-ksolutions de la formule. Le DNF n'est donc qu'une énumération de solutions. Une formule peut avoir de manière exponentielle de nombreuses solutions, de sorte que la formule DNF correspondante peut avoir de manière exponentielle de nombreuses clauses. Essayez de convertir cette formule CNF:

l1l2l3l4

l5l6l7l8

l9ldixl11l12

l13l14l15l16

l17l18l19l20

à sa formule DNF correspondante: vous obtiendrez trop de clauses. En un mot: CNF est compact, tandis que DNF ne l'est pas; CNF est implicite, tandis que DNF est explicite.

Le problème suivant est NP-complet: étant donné une instance DNF, existe-t-il une affectation de variables qui falsifie toutes les clauses?


4
Pour obtenir le formatage LaTeX correct, remplacez \ et et \ ou par \ land et \ lor (ou \ wedge et \ vee).
Jeffε

2
Il n'y a rien de plus compact en soi dans une transformation vers le CNF normal, la vraie clé de la question OP est le fait que vous pouvez créer ces fonctions CNF "équisatisfiables" avec des variables auxiliaires. Il existe probablement une approximation similaire que vous pouvez faire avec le DNF pour résoudre un problème différent au lieu de tester la satisfiabilité. (fonctions d'équi-insatisfiabilité? ...)
dividebyzero

1
Cette idée de Giorgio Camerani n'est pas bonne. La même augmentation exponentielle du nombre de clauses peut se produire si vous convertissez quelque chose en CNF. Choisissez ce même exemple et remplacez "et" s par "ou" s. La conversion de cette petite expression DNF en CNF sera tout de même énorme. Ils ont un peu de relation ying-and-yang avec eux.
dividebyzero

@dividebyzero: J'ai consacré une réponse distincte pour répondre à vos commentaires.
Giorgio Camerani

6

Je viens de réaliser une dernière chose, qui, espérons-le, mérite une réponse distincte. La présomption de la question n'est pas entièrement vraie. Un diagramme de décision binaire (BDD) pourrait être considéré comme une représentation compacte / raffinée de DNF. Il y a eu quelques solveurs SAT utilisant des BDD mais je pense qu'ils n'apparaissent plus.

Il y a un bel article de Darwiche et Marquis étudiant différentes propriétés de diverses représentations des fonctions booléennes.


4

Cette réponse supplémentaire est conçue comme une rétroaction au commentaire de dividebyzero sur ma réponse précédente.

Comme le dit dividebyzero, il est certainement vrai que CNF et DNF sont les deux faces d'une même médaille.

Lorsque vous devez trouver une affectation satisfaisante, DNF est explicite car il vous montre manifestement ses affectations satisfaisantes (la satisfaction DNF appartient à ), tandis que CNF est implicite car il s'enroule et se déroule pour cacher ses affectations satisfaisantes à vos yeux (la satisfaction CNF est N P - c o m p l e t e ). Nous ne connaissons aucune procédure capable de déballer et de dérouler une formule CNF en une formule DNF non satisfaisante qui n'est pas de taille exponentielle. C'était le point de ma réponse précédente (dont l'exemple était destiné à montrer l'explosion exponentielle, bien qu'il soit vrai que cet exemple n'était pas le meilleur choix possible).PNP-complete

Inversement, lorsque vous devez trouver une mission de falsification, CNF est explicite car il vous montre manifestement ses missions de falsification (CNF Falsifiability appartient à ), tandis que DNF est implicite car il s'enroule et s'enroule pour cacher ses missions de falsification de vos yeux (DNF Falsifiability est N P - c o m p l e t e ). Nous ne connaissons aucune procédure capable de déballer et de dérouler une formule DNF en une formule CNF équivalente qui n'est pas de taille exponentielle.PNP-complete

À une extrémité, nous avons des contradictions, c'est-à-dire des formules insatisfaisantes. À l'extrémité opposée, nous avons des tautologies, c'est-à-dire des formules infalsifiables. Au milieu, nous avons des formules à la fois satisfaisables et falsifiables.

nk2n-k

nk2n-k

k=02nNP-complete

k=02nNP-complete

2n

2n

Sous cet éclairage, il devient plus clair pourquoi la satisfaction CNF et la falsifiabilité DNF sont équivalentes en termes de dureté de calcul. Parce qu'ils sont en fait le même problème, car la tâche sous-jacente est exactement la même: dire si l'union de plusieurs ensembles est égale à l'espace de toutes les possibilités . Une telle tâche nous amène au domaine plus large du comptage, qui est à mon humble avis l'une de ces voies à explorer avec ferveur afin d'espérer faire des progrès non négligeables sur ces problèmes (je doute que de nouvelles recherches sur les résolveurs basés sur la résolution pourrait éventuellement apporter des avancées théoriques révolutionnaires, tout en continuant certainement à apporter des avancées pratiques surprenantes).

La difficulté d'une telle tâche est que ces ensembles se chevauchent énormément, d'une manière d'inclusion-exclusion.

La présence d'un tel chevauchement est précisément là où réside la dureté du comptage. De plus, le fait de laisser ces ensembles se chevaucher est la raison même qui nous permet d'avoir des formules compactes dont l'espace de solution est néanmoins exponentiellement grand.


4

J'ai décidé de transformer toutes ces réponses dans ce fil (en particulier la réponse de Giorgio Camerani) en un joli tableau pour que la dualité soit visible d'un seul coup d'œil:

DNFCNFtautologie / infalsifiabilitécoNP-completeP(chaque clause a une paire de P et ¬P)satisfiabilitéP(les missions du samedi sont explicites)NP-completfalsifiabilitéNP-completP(fausses. les affectations sont explicites)insatisfactionP(chaque clause a une paire de P et ¬P)coNP-completeconversion en forme normale, conservation de l'équivalence()()conversion en forme normale, conservant la satisfiabilité()FPconversion en forme normale, conservation de la falsibilitéFP()

()

()()FPNP[1]

Réponse la plus courte à la question: montrer la satisfiabilité (résoudre SAT) via DNF ne peut se faire qu'en temps exponentiel selon le tableau ci-dessus.


1
Qu'est-ce qu'une "formule PL" et que signifie "NF"?
Joshua Grochow

4
Il y a quelques problèmes ici. (1) Je pense que par "infalsifiabilité" vous voulez dire "tautologie". (2) KNF doit être CNF.
Huck Bennett

2
UNE(φ)φφUNE(φ)φUNE(φ)

1
(1) La "logique des prédicats" devrait être la "logique propositionnelle". (2) Les conversions en formes normales ne sont pas des problèmes de décision, mais des problèmes de fonction (ou plutôt des problèmes de recherche, car les "formes normales" ne sont pas uniques). Les classes de décision données dans le tableau sont donc inappropriées.
Emil Jeřábek soutient Monica le

1
Δ3P
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.