Czy problem CNF SAT NP jest trudny, gdy całkowita liczba (ale nie szerokość) klauzul 3-lub więcej-terminowych jest ograniczona stałą? A co powiesz konkretnie, kiedy istnieje tylko jedna taka klauzula?
Czy problem CNF SAT NP jest trudny, gdy całkowita liczba (ale nie szerokość) klauzul 3-lub więcej-terminowych jest ograniczona stałą? A co powiesz konkretnie, kiedy istnieje tylko jedna taka klauzula?
Odpowiedzi:
Warto zauważyć, że problem staje się trudny do NP, gdy ograniczenie jest nieco złagodzone.
Przy ustalonej liczbie klauzul, które również mają ograniczony rozmiar, średnia liczba literałów w klauzuli jest tak bliska 2, jak się chce, biorąc pod uwagę instancję z wystarczającą liczbą zmiennych. Jak zauważyłeś, istnieje wtedy prosta górna granica, która jest wielomianowa, jeśli rozmiar klauzuli jest ograniczony.
W przeciwieństwie do tego, jeśli średnia liczba literałów na klauzulę wynosi co najmniej dla niektórych ustalonych (ale dowolnie małych) ϵ > 0 , to problem jest trudny NP.
Można to wykazać, redukując 3SAT do tego problemu, wprowadzając nowe klauzule z 2 literałami, które są banalnie zadowalające. Załóżmy, że w instancji 3SAT są klauzule ; aby zmniejszyć średnią wielkość klauzuli do ( 2 + ϵ ) , wystarczy dodać m ( 1 - ϵ ) / ϵ nowe klauzule z dwoma literałami. Ponieważ ϵ jest stałe i dodatnie, nowa instancja ma rozmiar wielomianowy.
Ta redukcja pokazuje również, że nawet wersja, w której „duże” klauzule są ograniczone do 3 literałów, jest NP-trudna.
Pozostały przypadek ma miejsce, gdy kilka dużych klauzul nie ma ograniczonego rozmiaru; każda duża klauzula wydaje się utrudniać problem. Zobacz artykuł SODA 2010 Pǎtraşcu i Williamsa na temat dwóch klauzul: twierdzą, że jeśli można to zrobić w czasie subkwadratowym, to mielibyśmy lepsze algorytmy dla SAT. Może istnieć rozszerzenie ich argumentu na więcej klauzul, które dostarczyłyby dowodów, że górnej granicy nie można poprawić (modulo jakaś forma wykładniczej hipotezy czasowej).
Ok, rozumiem. Odpowiedź brzmi nie. Można to rozwiązać w czasie wieloczasowym. Dla każdej klauzuli 3 lub więcej terminów wybierz literał i ustaw go jako prawdziwy. Następnie rozwiąż pozostały problem 2-sat. Jeśli ktoś oferuje rozwiązanie, to jest to rozwiązanie ogólnego problemu. Ponieważ liczba klauzul 3-lub więcej-terminowych jest stała (powiedzmy c), to jeśli wszystkie takie klauzule mają rozmiar <= m, to działa to w O (m ^ (c) * n). O (m ^ c) dla przejścia przez każdy możliwy wybór, czasy O (n) dla rozwiązania pozostałego problemu 2-sat.