Oui. Si est une constante (ou 1 / polylog ( n ) ), et on vous promet qu'au moins ϵ 2 n de toutes les affectations possibles satisfont les 3CNF d'entrée, alors vous pouvez trouver une telle affectation dans le polynôme déterministe- temps.0 < ϵ < 11 / polylog ( n )ϵ 2n
Les algorithmes ne sont pas difficiles:
Revendication: En vertu de la promesse a déclaré, il doit exister une taille constante ensemble de variables qui frappe toutes les clauses du 3CNF, en ce sens que tous les 3 article doit contenir une variable de S .SS
Preuve de revendication (esquisse): Sinon, il doit exister une famille suffisamment grande de 3 clauses du 3CNF, dans laquelle chaque variable n'apparaît qu'une seule fois. Mais cette famille, lorsqu'elle est suffisamment grande, a déjà moins de fraction d'affectations satisfaisantes. QEDϵ
Ainsi, vous pouvez exécuter sur tous les possibles (nombre constant) des affectations à . Sous chaque affectation fixe à S , le 3CNF devient un 2CNF, en supposant que S frappe le 3CNF d'origine. Maintenant, vous pouvez utiliser l'algorithme déterministe polytime connu pour trouver une affectation satisfaisante pour les formules 2CNF. Dans l'ensemble, vous obtenez une limite supérieure de temps polynomial.SSS
L'algorithme pour 2SAT est, je pense, déjà dans le célèbre article de 1971 de S. Cook.
L'algorithme pour les 3CNF provient de: L. Trevisan
Une note sur le comptage approximatif déterministe pour k-DNF
dans Proc. de APPROX-RANDOM, Springer-Verlag, page 417-426, 2004
L'article original montrant le résultat pour 3CNF est: E. Hirsch, Un algorithme déterministe rapide pour les formules qui ont de nombreuses affectations satisfaisantes , Journal of the IGPL, 6 (1): 59-71, 1998