Conversion DNF en CNF: facile ou difficile


10

En ce qui concerne le thread Prouvant que la conversion de CNF en DNF est NP-Hard (et un thread Math connexe ):

Que diriez-vous de l'autre direction, de DNF à CNF? Est-ce facile ou difficile?

À la page 2 de cet article , ils semblent suggérer que les deux directions sont également difficiles quand elles disent " Nous nous intéressons à l'explosion maximale de la taille lors du passage de la représentation CNF à la représentation DNF (ou vice versa) ".

Mais DNF-SAT est en P et CNF-SAT est NP- complet. Donc, étant donné une expression DNF , il devrait y avoir une expression CNF non satisfaisante dont la longueur est polynomiale dans la longueur de . Et la conversion peut être effectuée en temps poly. Est-ce correct?ϕ1ϕ2ϕ1ϕ1ϕ2

Edit: Modifié équivalent à equisatisfiable (c'est-à-dire que des variables supplémentaires sont autorisées dans ).ϕ2


Vous pouvez passer de n'importe quelle formule à un CNF qui est satisfaisable exactement lorsque la formule d'origine est en temps polynomial. C'est pourquoi CNF-SAT est NP-complet. Toute instance SAT (un problème NP-complet) peut être réduite à CNF-SAT en temps polynomial. Je pense que le traduire exactement, non seulement en préservant la satisfiabilité, donnera toujours parfois une explosion exponentielle, mais je ne peux pas le dire avec certitude.
Jake

Voir en.wikipedia.org/wiki/Tseitin_transformation . Essentiellement, si vous autorisez l'introduction de variables auxiliaires, vous pouvez effectuer cette transformation en poly-temps (en augmentant la taille de la formule au plus linéairement).
jschnei

Vous devrez décider si vous souhaitez autoriser votre conversion à introduire de nouvelles variables ou si la formule convertie doit faire référence au même ensemble de variables (pas de nouvelles variables). C'est un point subtil qui a un effet dramatique sur la réponse. Alors, que voulez-vous demander?
DW

@Jake Vous pouvez passer de n'importe quelle formule à un CNF non satisfaisant car CNF-SAT est NP-complet. Ce n'est pas vraiment "pourquoi" CNF-SAT est NP-complet: la preuve habituelle que CNF-SAT est NP-complet n'implique pas la traduction de formules arbitraires en CNF; il traduit plutôt les machines de Turing en formules CNF.
David Richerby

Pour DW et d'autres - j'avais en tête l' équisatisfiabilité . En ce sens, il semble que l'équisatisfiabilité n'est qu'une réduction (dans ce cas, vers une autre formule booléenne).
Martin Seymour

Réponses:


14

Si vous souhaitez introduire des variables supplémentaires, vous pouvez convertir la forme DNF en CNF en temps polynomial en utilisant la transformée de Tseitin . La formule CNF résultante sera non satisfaisante avec la formule DNF d'origine: la formule CNF sera satisfiable si et seulement si la formule DNF d'origine était satisfaisable. Voir également https://en.wikipedia.org/wiki/Conjunctive_normal_form#Conversion_into_CNF .

Si vous ne voulez pas autoriser l'introduction de variables supplémentaires, la conversion de DNF en CNF est co-NP-difficile. En particulier, tester si une formule DNF est une tautologie est co-NP-difficile. Cependant, tester si une formule CNF est une tautologie peut être fait en temps polynomial (il suffit de vérifier séparément si chaque clause est une tautologie, ce qui est facile car chaque clause est une disjonction de littéraux). Par conséquent, si vous pouviez convertir la forme DNF en forme CNF en temps polynomial, sans introduire de nouvelles variables, alors vous obtiendriez un algorithme en temps polynomial pour tester si une formule DNF est une tautologie - quelque chose qui semble peu probable, étant donné que nous nous attendons P n'est pas égal à co-NP. Ou, pour le dire autrement, la conversion de DNF en CNF sans introduire de variables supplémentaires est co-NP-difficile.

Il s'agit de la différence entre équivalence et non- satisfaction . L'équivalence nécessite que les deux formules aient le même ensemble de solutions (et ne permettent donc pas d'introduire des variables supplémentaires). L'exquisatisfiabilité exige seulement que les deux formules soient satisfaisables ou les deux ne soient pas satisfaisantes (et permettent donc d'introduire des variables supplémentaires).


@Mehrdad, veuillez ne pas utiliser de commentaires pour poser de nouvelles questions. Nous avons une «Poser une question» en haut à droite pour si vous avez une nouvelle question à poser. Mais, juste un petit conseil ... vous voudrez peut-être lire la question en haut de cette page avant de poser une nouvelle question ... ou, d'ailleurs, poster ce commentaire. Je ne peux pas m'empêcher de remarquer que vous avez posé une question dont la réponse se trouve sur la même page que votre question.
DW

@DW: Oups, j'ai vu l'autre post un peu plus tard et j'ai oublié de supprimer mon commentaire ici, désolé. Supprimé maintenant.
user541686
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.