Так. Якщо - константа (або ), і вам обіцяють, що принаймні усіх можливих призначень задовольняють вхідним 3CNF, тоді ви можете знайти таке призначення в детермінованому многочлени-часі.1 / полілог ( n ) ϵ 2 n0 < ϵ < 11 / полілог ( n )ϵ 2н
Алгоритми не є складними:
Затвердження: Під обіцянку зазначено, має існувати безліч розмір постійної змінних, вдаряється всі пункти в 3CNF, в тому сенсі , що кожен 3-пункт повинен містити змінну з .SSS
Доказ твердження (ескіз): інакше повинно існувати достатньо велике сімейство 3-клаузлів від 3CNF, в яких кожна змінна зустрічається лише один раз. Але ця сім'я, коли є достатньо великою, має вже менше, ніж частка задовольняючих завдань. QEDϵ
Таким чином, ви можете працювати за всіма можливими (постійне число) призначень на . Під кожним фіксованим призначенням 3CNF стає 2CNF, припускаючи, що потрапляє у вихідний 3CNF. Тепер ви можете використовувати відомий багаточастовий детермінований алгоритм для пошуку задовольняючого призначення для формул 2CNF. Загалом ви отримуєте верхню межу полінома часу.S SSSS
Алгоритм роботи 2SAT - я думаю, вже в знаменитому документі С. Кука 1971 року.
Алгоритм для 3CNF походить від: Л. Тревісан
Примітка про детермінований приблизний підрахунок для k-DNF
In Proc. програми APPROX-RANDOM, Springer-Verlag, сторінка 417-426, 2004р
Оригінальний документ, що показує результат для 3CNF,: Е. Гірш, швидкий детермінований алгоритм для формул, які мають багато задовольняючих завдань , Journal of IGPL, 6 (1): 59-71, 1998