Да. Если является константой (или ), и вам обещано, что по крайней мере из всех возможных назначений удовлетворяют входным 3CNF, то вы можете найти такое назначение в детерминированном полиномиальном времени.1 / polylog ( n ) ϵ 2 n0<ϵ<11/polylog(n)ϵ2n
Алгоритмы не сложные:
Утверждение: Под обещание указано, должно существовать множество размер постоянной переменных, ударяется все пункты в 3CNF, в том смысле , что каждый 3-пункт должен содержать переменную из .SSS
Доказательство утверждения (эскиз): в противном случае должно существовать достаточно большое семейство 3-пунктов из 3CNF, в котором каждая переменная встречается только один раз. Но эта семья, когда достаточно большой, имеет уже меньше , чем доля удовлетворяющих назначений. QEDϵ
Таким образом, вы можете работать по всем возможным (постоянное число) назначений на . При каждом фиксированном назначении 3CNF становится 2CNF, исходя из предположения, что поражает исходную 3CNF. Теперь вы можете использовать известный многочленный детерминистический алгоритм для нахождения удовлетворительного назначения для формул 2CNF. В целом, вы получаете верхнюю границу полиномиального времени.S SSSS
Алгоритм 2SAT, я думаю, уже в известной статье С. Кука 1971 года.
Алгоритм для 3CNF взят из: Л. Тревизана
. Замечание о детерминированном приближенном подсчете для k-DNF
в Proc. APPROX-RANDOM, Springer-Verlag, стр. 417-426, 2004
Исходная статья, показывающая результат для 3CNF: Э. Хирш, Быстрый детерминированный алгоритм для формул, которые имеют много удовлетворяющих заданий , Журнал IGPL, 6 (1): 59-71, 1998