Le problème est coNP -hard; vous pouvez facilement réduire le problème UNSAT à ce problème.
Une caractérisation plus précise est que le problème est C = P -complet. En fait, une définition de la classe C = P est que c'est la classe de problèmes qui sont plusieurs fois polynomiaux réductibles à ce problème même (généralement cette définition est exprimée en termes de fonctions GapP ). Mais comme cela ne dit pas grand-chose, permettez-moi de définir cette classe d'une autre manière.
Soit C = P la classe de problèmes qui sont plusieurs fois polynomiaux et réductibles au problème suivant: étant donné un circuit booléen φ et un entier K (en binaire), décider si le nombre d'assignations satisfaisantes de φ est égal à K . Par une réduction standard qui montre l'exhaustivité # P de # 3SAT, nous pouvons restreindre φ à une formule 3CNF sans affecter la classe. La classe C = P contient une classe appelée US , qui contient à la fois UP et coNP.
Avec cette définition, votre problème est C = P-complet. En fait, la dureté C = P est facile à voir d'après la définition de la classe C = P (qui utilise des formules 3CNF).
Pour prouver l'appartenance à C = P, supposons que nous devons décider si deux formules CNF données φ 1 et φ 2 ont le même nombre d'assignations satisfaisantes ou non. Sans perte de généralité, nous pouvons supposer que les deux formules ont le même nombre de variables, disons n . Construire un circuit booléen φ qui prend n +1 bits en entrée pour que le nombre d'assignations satisfaisantes de φ soit égal à c 1 + (2 n - c 2 ), où c 1 et c 2être le nombre d'assignations satisfaisantes de φ 1 et φ 2 , respectivement. Alors le nombre d'assignations satisfaisantes de φ est égal à 2 n si et seulement si c 1 = c 2 .
Voici une petite variation sur la question d'origine. Soit un oracle qui, en entrée ( f 1 , f 2 ) sort 1 si CNF f 1 a plus de solutions que CNF f 2 .O (f1,f2) f1 f2
Compte tenu de cet oracle, nous construisons une machine poly-temps qui peut résoudre le problème # P-complet du calcul du nombre de solutions à un CNF φ donné . Notez que φ peut avoir un nombre exponentiel de solutions.M φ φ
fonctionne comme suit: il génère des formules avec un nombre connu de solutions, et en utilisant la recherche binaire et en posant tout au plus des requêtes polynomiales à O , il trouve une formule φ i qui ale mêmenombre de solutions que φ . Il affiche enfin le nombre de solutions qui viennent d'être trouvées.M O φi φ
Cela montre que a la complexité #P.MO
la source
Il semble que c'est au moins NP-difficile car on peut facilement construire une formule SAT avec une seule solution. Ensuite, selon le théorème de Valiant-Vazirani, il y a une réduction probabiliste de chaque formule SAT à un ensemble de problèmes Unique-SAT (déterminer si une formule a une solution unique) et comparer ces problèmes Unique-SAT avec la formule SAT construite avec une seule solution vous permet de déterminer la satisfiabilité de la formule SAT considérée.
la source