Nie. Jeśli instancja 3-SAT ma klauzule , możesz przetestować satysfakcję w czasie . Ponieważ jest stałą stałą, jest to algorytm czasu wielomianowego, który rozwiązuje wszystkie wystąpienia Twojego problemu.O ( m 2 N ) NmO ( m 2N.)N.
Algorytm działa w etapach. Niech oznacza wzór składający się z klauzul, które używają tylko zmiennych z . Niech oznacza zbiór przypisań do które można rozszerzyć do zadowalającego przypisania dla . Zauważ, że biorąc pod uwagę , możemy obliczyć w czasie : dla każdego , wypróbowujemy obie możliwości dla i sprawdzamy, czy spełnia on wszystkie klauzule z które zawierają zmiennąφ i x 1 , … , x i S i ⊆ { 0 , 1 } n x i - N , x i - N + 1 , … , x i φ i S i - 1 S i O ( 2 N ) ( x i - N - 1 , … , x i -mφix1,…,xiSi⊆{0,1}nxi−N,xi−N+1,…,xiφiSi−1SiO(2N) x i φ i x i ( x i - N ,…, x i ) S i i S i m S m ≠∅O( 2 N )mO(m 2 N )(xi−N−1,…,xi−1)∈Si−1xiφixi; jeśli tak, dodajemy do . W etapie obliczamy . Po zakończeniu wszystkich etapów instancja 3-SAT jest satysfakcjonująca wtedy i tylko wtedy, gdy . Każdy etap zajmuje czas i jest etapów, więc całkowity czas działania wynosi . Jest to wielomian wielkości wejściowej, a zatem stanowi algorytm wielomianowy.(xi−N,…,xi)SiiSimSm≠∅O(2N)mO(m2N)
Nawet jeśli zezwolisz ustalonej liczbie klauzul na naruszenie ograniczenia, problem można rozwiązać w czasie wielomianowym. W szczególności, jeśli zlicza liczbę klauzul, które naruszają ograniczenie, możesz rozwiązać problem w czasie , najpierw wyliczając wszystkie możliwe wartości zmiennych w tych klauzulach, następnie kontynuując powyższy algorytm. Gdy jest stałą stałą, jest to czas wielomianowy. Mogą istnieć bardziej wydajne algorytmy.O ( m 2 ( t + 1 ) N ) ttO(m2(t+1)N)t