Złożoność obliczeniowa — NP-trudność i redukcje


Problemy decyzyjne vs optymalizacyjne

Teoria złożoności operuje na problemach decyzyjnych — pytaniach o odpowiedź TAK/NIE. Każdy problem optymalizacyjny można zamienić na odpowiadający mu problem decyzyjny:

Problem optymalizacyjny Odpowiadający problem decyzyjny
Znajdź najkrótszą trasę TSPCzy istnieje trasa o koszcie ≤ k?
Znajdź Cmax minimalneCzy istnieje uszeregowanie z Cmax ≤ T?
Maksymalizuj wartość plecakaCzy istnieje załadowanie o wartości ≥ W?

Jeśli problem decyzyjny jest NP-trudny, to odpowiadający mu problem optymalizacyjny jest co najmniej tak samo trudny — nie może być łatwiejszy, bo mając algorytm optymalizacyjny moglibyśmy trivialnie rozwiązać problem decyzyjny.


Klasy złożoności

Klasa P

Zbiór wszystkich problemów decyzyjnych, które można rozwiązać w czasie wielomianowym względem rozmiaru wejścia:

\[ \text{P} = \{ L \mid \exists \text{ algorytm deterministyczny rozwiązujący } L \text{ w czasie } O(n^k) \} \]

Przykłady: sortowanie, najkrótsza ścieżka (Dijkstra), przepływ maksymalny.

Klasa NP

Nondeterministic Polynomial time — zbiór problemów decyzyjnych, dla których weryfikacja danego rozwiązania (świadka) może być wykonana w czasie wielomianowym:

\[ L \in \text{NP} \iff \exists \text{ wielomianowy algorytm weryfikacji} \; V: \; x \in L \Leftrightarrow \exists y: V(x,y) = 1 \]

Gdzie y to certyfikat (świadek). Przykład dla TSP: certyfikatem jest konkretna trasa — weryfikacja jej kosztu jest liniowa.

Otwarte pytanie P vs NP: Czy P = NP? Nie wiadomo — to jedno z siedmiu Problemów Milenijnych. Powszechnie przyjmuje się, że P ≠ NP.

Klasa co-NP

Problemy, których dopełnienie należy do NP — można efektywnie zweryfikować odpowiedź NIE. Przykład: dowód, że cykl Hamiltona NIE istnieje.

Relacje między klasami

Relacje między klasami złożoności P, NP, NP-complete, NP-hard

P ⊆ NP ⊆ NP-zupełne ⊆ NP-trudne (przy założeniu P≠NP)


Redukcja wielomianowa

Definicja: Problem A jest wielomianowo redukowalny do problemu B (piszemy A ≤p B), jeśli istnieje funkcja f obliczalna w czasie wielomianowym taka, że:

\[ x \in A \iff f(x) \in B \]

Intuicja: Jeśli umiemy rozwiązać B, to umiemy rozwiązać A — wystarczy przetransformować instancję A do instancji B, rozwiązać B i odczytać wynik. Redukcja mówi: "A nie jest trudniejszy od B".

Własności redukcji


NP-zupełność

Problem L jest NP-zupełny, gdy:

  1. L ∈ NP (można efektywnie weryfikować świadka)
  2. ∀L' ∈ NP: L' ≤p L (każdy problem z NP redukuje się do L — L jest "najtrudniejszy w NP")

Twierdzenie Cooka-Levina (1971)

SAT (spełnialność formuł logicznych) jest NP-zupełny. Każdy problem z NP można zredukować do SAT w czasie wielomianowym, bo każdy algorytm NP można zasymulować jako formułę logiczną.

Po udowodnieniu NP-zupełności SAT, kolejne problemy NP-zupełne udowadniamy przez redukcje z SAT lub z innych znanych problemów NP-zupełnych:

SAT → 3-SAT → CLIQUE → INDEPENDENT SET
                      ↓
                VERTEX COVER → PARTITION → KNAPSACK
                                                ↓
                                       TSP, F||Cmax, R||Cmax

NP-trudność (NP-hard)

Problem L jest NP-trudny, gdy:

\[ \forall L' \in \text{NP}: L' \leq_p L \]

Każdy problem z NP redukuje się do L. Problem NP-trudny niekoniecznie musi należeć do NP (może być nawet trudniejszy — np. problemy PSPACE-trudne).

Cecha NP-zupełny NP-trudny
Należy do NPTak (wymóg)Niekoniecznie
Każdy NP redukuje się do niegoTakTak
Problemy optymalizacyjneNie (nie mają TAK/NIE)Tak — odpowiedniki decyzyjne są NP-zupełne
PrzykładyTSP (decyzja), CLIQUE, 3-SATTSP (optym.), HALT, R||Cmax

Jak udowodnić NP-trudność — schemat dowodu

Aby udowodnić, że problem X jest NP-trudny, stosujemy następujący schemat:

// Schemat dowodu NP-trudności problemu X
KROK 1: Wybierz znany problem NP-zupełny Y
KROK 2: Skonstruuj redukcję f: Y ≤p X
         — f jest obliczalna w czasie wielomianowym
         — instancja Y ma odpowiedź TAK ⟺ f(Y) ma odpowiedź TAK
KROK 3: Udowodnij poprawność redukcji (oba kierunki implikacji)
WYNIK: Skoro Y (NP-zupełny) redukuje się do X, X jest NP-trudny
// Jeśli dodatkowo X ∈ NP → X jest NP-zupełny

Częsty błąd: Redukcja musi iść od Y do X (nie od X do Y). Chcemy pokazać, że X jest co najmniej tak trudny jak Y — dlatego redukujemy znany trudny problem do naszego problemu X.


Przykład 1: 3-SAT ≤p CLIQUE

Problemy

3-SAT: Czy formuła CNF z klauzulami 3-literowymi jest spełnialna?
Np. (x₁ ∨ ¬x₂ ∨ x₃) ∧ (¬x₁ ∨ x₂ ∨ x₄)
CLIQUE: Czy graf G zawiera klikę (podgraf pełny) o rozmiarze k?

Konstrukcja redukcji

Dla formuły φ z m klauzulami tworzymy graf G:

  1. Dla każdego literału w każdej klauzuli tworzymy wierzchołek (m klauzul × 3 literały = 3m wierzchołków)
  2. Łączymy krawędzią wierzchołki (ui, uj) jeśli:
    • Należą do różnych klauzul
    • Ich literały nie są wzajemnie sprzeczne (nie są negacjami siebie)
  3. Pytamy: czy G zawiera klikę rozmiaru k = m?

Poprawność

(⇒) Jeśli φ jest spełnialna (istnieje wartościowanie): wybieramy po jednym prawdziwym literale z każdej klauzuli — tworzą one klikę rozmiaru m (spełniony literał z każdej klauzuli, nie sprzeczne ze sobą).

(⇐) Jeśli G ma klikę rozmiaru m: klika ma dokładnie jeden wierzchołek z każdej klauzuli, literały nie są sprzeczne — możemy ustawić je na TRUE, co spełnia φ.


Przykład 2: PARTITION ≤p KNAPSACK (0-1 KP jest NP-trudny)

Problemy

PARTITION: Czy zbiór liczb całkowitych S = {a₁, …, aₙ} można podzielić na dwa podzbiory o równych sumach? 0-1 KNAPSACK: Czy istnieje podzbiór elementów o łącznej wadze ≤ W i wartości ≥ V?

Konstrukcja redukcji

Dana instancja PARTITION: zbiór {a₁, …, aₙ}, suma S = Σaᵢ. Tworzymy instancję KNAPSACK:

Poprawność

(⇒) Jeśli PARTITION ma rozwiązanie (podzbiór A o sumie S/2): wkładamy elementy A do plecaka — waga = S/2 ≤ W, wartość = S/2 = V. ✓

(⇐) Jeśli KNAPSACK ma rozwiązanie o wartości S/2: elementy w plecaku tworzą podzbiór sumy S/2, pozostałe też sumują się do S/2. ✓

Redukcja jest wielomianowa (liniowa). Ponieważ PARTITION jest NP-zupełny → 0-1 KP jest NP-trudny.


Przykład 3: Hamiltonowość ≤p TSP (TSP jest NP-trudny)

Problemy

HAM-CYCLE: Czy graf G ma cykl Hamiltona? (NP-zupełny) TSP-DECYZJA: Czy istnieje trasa przez n miast o koszcie ≤ k?

Konstrukcja redukcji

Dla grafu G = (V, E) tworzymy pełny graf ważony (instancję TSP):

Poprawność: G ma cykl Hamiltona ⟺ istnieje trasa TSP o koszcie 0 (korzysta tylko z krawędzi grafu G). Redukcja liniowa. Ponieważ HAM-CYCLE ∈ NP-zupełne → TSP jest NP-trudny.


Silna NP-trudność

Problem jest silnie NP-trudny, gdy pozostaje NP-trudny nawet gdy wszystkie liczby w instancji są ograniczone wielomianem rozmiaru wejścia (tzn. nie można go rozwiązać algorytmem pseudowielomianowym).

Typ Charakterystyka Przykłady Algorytm pseudowielomianowy?
NP-trudny NP-trudny ze względu na wartości liczbowe w instancji 0-1 KP, PARTITION Tak (np. DP dla KP: O(nV))
Silnie NP-trudny Trudny nawet dla wartości wielomianowych TSP, F||Cmax (m≥3), R||Cmax Nie (chyba że P=NP)

Algorytm pseudowielomianowy działa w czasie wielomianowym ze względu na rozmiar wejścia i wartości liczbowe w instancji (nie tylko rozmiar). Przykład: programowanie dynamiczne dla 0-1 KP działa w O(nV) — wielomianowe w n i V, ale V może być wykładniczo duże.


Klasy aproksymacji dla problemów NP-trudnych

Skoro nie znamy algorytmów wielomianowych dla problemów NP-trudnych, stosujemy:

Podejście Gwarancja jakości Przykłady
Algorytm aproksymacyjny ρWynik ≤ ρ · OPT (dla minimalizacji)Ibarra dla R||Cmax (ρ=m), Greedy KP (ρ=2)
PTASWynik ≤ (1+ε)·OPT dla dowolnego ε>0Niektóre problemy geometryczne
MetaheurystykiBrak gwarancji, praktycznie dobreSA, Tabu Search, algorytmy genetyczne
Algorytm pseudowielomianowyDokładny, wielomianowy w n i wartościachDP dla KP: O(nV)

Twierdzenie o nienaproksymowalności TSP

Jeśli P ≠ NP, to dla TSP ogólnego (asymetrycznego) nie istnieje algorytm aproksymacyjny o żadnej stałej gwarancji ρ. Dowód: gdyby istniał, rozwiązywałby HAM-CYCLE w czasie wielomianowym.

Dla TSP metrycznego (trójkąt nierówność): algorytm Christofidesa daje ρ = 3/2.


Podsumowanie — znane złożoności problemów PPD

Problem Złożoność Najlepszy dokładny Aproksymacja
Alokacja zasobów (niezależne)P (łatwy)Algorytm η O(n)
F||Cmax (m=2)PJohnson O(n log n)
0-1 KPNP-trudnyDP O(nV) — pseudowielomianGreedy ρ=2, FPTAS
R||CmaxNP-trudnyILP (wykładniczy)Ibarra ρ=m
F||Cmax (m≥3)Silnie NP-trudnyBranch & BoundNEH (<2% od opt.)
P-medianNP-trudnyILPAlgorytm zachłanny
CFLP / UFLPNP-trudnyILPZachłanny UFLP
TSPSilnie NP-trudnyHeld-Karp O(n²2ⁿ)Najtańsze włączanie ρ=2
*Na podstawie wykładów prof. J. Józefczyka, PWr. Teoria złożoności: Garey & Johnson (1979), Papadimitriou (1994).