Złożoność obliczeniowa/Wykałd 5: Problemy NP-zupełne
Wstęp
Jak czytelnikowi wiadomo, w aktualnym stanie wiedzy NP-zupełność jest podstawowym narzędziem do badania probelu algorytmicznego pod kątem jego trudności obliczeniowej. Na tym wykładzie dla wielu znanych klasycznych problemów z teorii grafów, kombinatoryki, logiki i innych podajemy definicje ich decyzyjnych wersji i wykazujemy ich NP-zupełność. Z problematyką ta spotkaliśmy się już na kursie Algorytmy i struktury danych. Tutaj rozbudowujemy te wiadomości, czynimy je bardziej formalnymi posługując się modelem maszyny Turinga i redukcją logarytmiczną. Na przedstawionych przykładach omawiamy również techniki dowodzenia NP-zupełności. Następny wykład pokazuje wykorzystanie tych technik do analizy złożoności problemu i jego zawężeń.
O problemie SAT
Aby wykazać, że dany problem z klasy NP jest NP-zupełny, zgodnie z własnościami redukcji logarytmicznej (przechodniość) wystarcza pokazać, dla dowolnego problemu , że redukuje się do . Innymi słowy, proces dowodzenia że dany problem jest w NPC składa sie z nastepujących kroków:
- dowieść że należy do NP
- wybrać znany problem NP-zupełny i skonstruować redukcję z do .
Przypomnijemy, że redukcja z problemu A do B dowodzi, że B jest niełatwiejszy niż A. Zatem dla konstrukcji takiej redukcji łatwiej jest, gdy (są to rozważania czysto intuicyjne):
- problem A nie jest skomplikowany, tzn. instancje tego problemu
wykazują pewną regularność, łatwą do "opisu" lub "zmierzenia"
- problem B dopuszcza konstrukcje różnorodnych instancji, jest "bogaty
strukturalnie"
Stąd dla wypracowania sobie "warsztatu" dla konstruowania dowodów NP-zupełności warto rozpocząć od dowiedzenia tej własności dla kilku nieskomplikowanych (pod wzgledem opisu struktury) problemów. W rzeczywistości, w literaturze dotyczącej tych zagadnień, można wyodrębnić niewielką grupę klasycznych w tym sensie problemów, które najczęściej wystepują jako lewa strona redukcji w dowodach NP-zupełnosci. Poniżej definiujemy lub przypominamy grupe takich problemów, dość różnorodnego pochodzenia i zastosowania, i dowodzimy ich NP-zupełności.
Najpierw 3SAT
Zaczynamy od sytuacji, w której jedynym znanym problemem NP-zupełnym (a więc możliwą lewą stroną redukcji) jest problem SAT. Jest on dość niewygodny jako problem źródłowy, redukcja z SAT do innego problemu na ogół wymaga skomplikowanego opisu. Okazuje się (wykazał to już Cook w swojej fundamentalnej pracy o NP-zupełności), że podproblem problemu SAT, w którym wymagamy aby każda klauzula zawierała nie więcej niz 3 literały jest sam w sobie NP-zupełny, a dowód tego faktu jest dość łatwy.
Twierdzenie
Problem 3SAT jest NP-zupełny.
Dowód
Problem 3SAT, jako podproblem problemu w klasie NP, sam należy do NP, zatem pierwsza część dowodu jest za nami.
Konstruujemy redukcję z problemu SAT do 3SAT. Na wejściu mamy formułe nad zmiennymi . Każdą z klauzul przekształcamy osobno. Bez straty ogólności załóżmy, że , gdzie są parami różne. Jeśli to kładziemy .
Niech . Dodajemy nowych zmiennych , i zastepujemy przez
Nietrudno spostrzec, że jeśli jest spełniona przez pewne
wartościowanie zmiennych , to da się tak dobrać
wartości dla zmiennych , aby spełnione były
wszystkie klauzule w . Na odwrót, jeśli jest spełniona
dla pewnego wartościowania zmiennych
, to łatwo wydedukować, że
dla pewnego . Mianowicie, jeśli ,
to z pierwszej klauzuli w wynika że . Ale wtedy z
drugiej klauzuli mamy lub . W pierwszym przypadku
rozumowanie jest zakończone, w drugim przenosimy rozumowanie na
trzecią klauzulę i tak dalej.
Zatem, po przekształceniu kolejno wszystkich alternatyw powstaje równoważna formuła o co najwyżej trójskładnikowych alternatywach. Pozostaje wykazać, że przekształcenie to realizowalne jest w pamięci logarytmicznej. Zauważmy jednak, że aby wypisać formułę wynikową, MT potrzebuje pamięć roboczą tylko na licznik bieżącej alternatywy oraz licznik wygenerowanych do tej pory nowych zmiennych.

Zapewne zauważyłaś(-łeś), że w wielu podręcznikach do algorytmiki również mówi się o NP-zupełności. Na ogół korzysta się wtedy z redukcji wielomianowej. Złożoność czasowa jest łatwiejsza do analizy w przypadku modelu obliczeń takiego jak (uproszczony) język programowania wysokiego poziomu. Analiza złożoności pamięciowej (i to tylko z uwzględnieniem pamięci roboczej) może być trudniejsza.
Redukcja logarytmiczna jest bardziej uniwersalna i dlatego stosujemy ją w teorii złożoności.
W literaturze przyjmuje sie również nieco inną definicję problemu 3SAT, w której zakłada sie dodatkowo, że w każdej klauzuli występują dokładnie 3 parami różne literały. Dowód NP-zupełności tej wersji otrzymujemy przez uzupełnienie dowodu powyższego w następujący sposób:
Załóżmy że . Wprowadzamy nową zmienną i kładziemy . Jeśli istnieje wartościowanie spełniające formułę , to w tym wartościowaniu formuła powstała z przez zastąpienie klauzuli formułą jest również spełniona. I na odwrót, jeśli pewne wartościowanie spełnia formułę , to aby było prawdziwe lub musi mieć wartość 1, a zatem to samo wartościowanie (bez zmiennej ) spełnia formułę .
Analogicznie, jesli składa się tylko z jednego literału, to przekształcamy go w koniunkcję czterech trójskładnikowych klauzul, z dodanymi dwiema nowymi zmiennymi.
Z tego spostrzeżenia będziemy korzystać w następnych dowodach NP-zupełności.
Odnotujmy w tym miejscu, że dalsze zawężenie problemu polegające na dopuszczeniu klauzul o co najwyżej dwóch literałach, 2SAT, jest problemem obliczeniowo łatwym. Dowód tego faktu odkładamy do nastepnej lekcji.
MAXSAT
Warto wspomnieć o innych NP-zupełnych wersjach problemu spełnialnosci. Na przykład, możemy zapytać o istnienie wartościowania spełniającego co najmniej zadaną liczbe klauzul (a niekoniecznie wszystkie). Problem ten nosi nazwę MAXSAT, i jest ogólniejszy niż SAT (a zatem jest również w NPC). Jego trudność przejawia sie również w tym, że zawężenie do klauzul długości dwa w przeciwieństwie do SAT, pozostawia ten problem trudnym.
Twierdzenie [MAX2SAT]
Problem MAX2SAT jest NP-zupełny.
Dowód
Konstruujemy redukcję z problemu 3SAT. Na wejściu mamy formułę . Każdą klauzulę przekształcamy w zbiór 10 klauzul, dla wygody rozważań podzielonych na trzy grupy, następujacej postaci:
Tych 10 klauzul ma następujace własności:
- Jeśli , to niezależnie od wartości zmiennej co najwyżej 6 klauzul jest spełnionych.
- Jeśli któryś z literałów , lub jest równy 1, to
można dobrać wartość tak, że 7 klauzul jest spełnionych. Można sie o tym przekonać analizując wszystkie przypadki. Na przykład, jeśli , , to kładziemy ; jeśli , , to również kładziemy , jeśli natomiast to 7 klauzul jest spełnionych gdy .
Pozostaje zdefiniować żądaną liczbę spełnionych klauzul w formule wynikowej na . Z wymienionych własności wynika, że formuła wynikowa posiada wartościowanie spełniające dokładnie alternatyw wtedy i tylko wtedy gdy formuła wejściowa jest spełnialna.
Maszyna Turinga realizująca redukcję potrzebuje pamieci roboczej jedynie na liczniki, zatem działa w pamięci logarytmicznej.

NP-zupełne problemy grafowe
Pokrycie wierzchołkowe
Pierwszym z serii problemów grafowych, dla których udowodnimy NP-zupełność, jest problem pokrycia wierzchołkowego. Dla grafu nieskierowanego mówimy, że podzbiór jest pokryciem wierzchołkowym, jeśli każda krawędź w G ma co najmniej jeden z końców w zbiorze .
Wejście: Graf nieskierowany , liczba całkowita
Wyjście: TAK jeśli G ma pokrycie wierzchołkowe o liczności k, NIE w przeciwnym przypadku.
Twierdzenie [Problem NODE COVER]
Problem NODE COVER jest NP-zupełny.
Dowód
Dla podanego podzbioru zbioru wierzchołków bardzo łatwo sprawdzić czy stanowi on pokrycie, zatem .
Redukujemy problem 3SAT do NODE COVER. Na wejściu mamy formułę , i zgodnie z uwagą poczyniona przy dowodzie NP-zupełności 3SAT zakładamy, że każda alternatywa zawiera dokładnie 3 różne literały. Konstruujemy graf następujący: każde wystąpienie literału jest wierzchołkiem grafu, wystąpienia wewnątrz jednej klauzuli tworzą trójkąt. Ponadto, dla każdej pary literałów przeciwnych wystepujących w różnych klauzulach odpowiadające im wierzchołki łączymy krawędzią. Na koniec, kładziemy .
Teraz należy wykazać, że formuła wejsciowa jest spełnialna wtedy i
tylko wtedy gdy wygenerowany graf ma pokrycie wierzchołkowe o
liczności . Z ograniczenia na wielkość pokrycia wynika, że z
każdego trójkąta do pokrycia muszą być wybrane dokładnie dwa
wierzchołki. Jeśli formuła jest spełnialna, to w każdym trójkącie
można wyróżnić jeden wierzchołek odpowiadający literałowi
równemu 1. Do pokrycia wybieramy pozostałe dwa wierzchołki.
Pokrywają one wszystkie krawędzie trójkątów oraz wychodzące z tych
wierzchołków krawędzie między trójkątami. Każda pozostała krawędź,
wychodząca z wierzchołka , prowadzi do pewnego wierzchołka
odpowiadającego zaprzeczeniu literału wierzchołka , zatem literał
wierzchołka ma wartość zero i jest wybrane do pokrycia w
trójkącie w którym występuje. Zatem krawędź też jest
pokryta.
W drugą stronę, załóżmy, że dane jest pokrycie. W każdym trójkącie, dla wierzchołka który nie jest w pokryciu, ustawiamy wartość odpowiedniej zmiennej tak aby literał w tym wierzchołku był równy 1. Należy zauważyć że takie wartościowanie jest niesprzeczne. Wynika to stąd, że przeciwne literały zawsze odpowiadają dwóm wierzchołkom z różnych trójkątów połączonych krawędzią. Co najmniej jeden z tych wierzchołków jest w pokryciu, a więc odpowiadający mu literał nie bierze udziału w obliczaniu wartościowania.
Zauważmy, że tak jak i poprzednio, do realizacji redukcji wystarczy pamięć robocza rzędu , co kończy dowód.

Cykl i ścieżka Hamiltona
Wejście: Graf nieskierowany
Wyjście: TAK jeśli ma cykl Hamiltona, czyli cykl przchodzący przez każdy wierzchołek dokładnie raz, NIE w przeciwnym przypadku.
Twierdzenie [Cykl Hamiltona]
CYKL HAMILTONA jest NP-zupełny.
Dowód
Przynależnośc do klasy NP jest oczywista. Konstruujemy redukcje z problemu NODE COVER. na wejściu mamy nieskierowany graf oraz liczbę całkowitą . Oznaczmy graf wynikowy jako .
Redukcja przeprowadzona jest techniką gadżetu (w literaturze angielskiej uzywa sie również terminu widget). Gadżet to fragment struktury wynikowej, o określonych własnościach. W naszym przypadku pierwszym krokiem redukcji jest wygenerowanie, dla każdej krawędzi gadżetu będącego grafem przedstawionym na rysunku 5.2.
Jedynie narożne wierzchołki grafu będą połączone z wierzchołkami spoza . Stąd wynika, że jeśli ma cykl Hamiltona, to musi on przechodzić przez tylko na jeden z przedstawionych na rysunku 5.3 sposobów. Konstrukcja gadżetu uniemożliwia inne usytuowanie cyklu Hamiltona względem .
Drugi krok redukcji to wygenerowanie krawędzi w łączących gadżety w tak zwane ścieżki. Dla każdego wierzchołka najpierw porządkujemy dowolnie wszystkie jego sąsiednie wierzchołki, oznaczmy je przez , gdzie jest stopniem wierzchołka . Konstrukcja ścieżki odpowiadającej wierzchołkowi , łączącej wszystkie gadżety odpowiadające krawędziom incydentnym z , dokonuje sie przez dołączenie do zbioru krawędzi postaci
Ostatni krok to dodanie wierzchołków-selektorów , i
połączenie krawędzią każdego selektora z początkiem i końcem ścieżki
odpowiadającej wierzchołkowi , dla każdego .
Kładziemy zatem
Na rys. 5.4 pokazano graf o 4 wierzchołkach i rezultat redukcji. Zacieniowane zostały dwa wierzchołki grafu które tworzą pokrycie. Pogrubione krawędzie tworza cykl Hamiltona. Zaczynając od selektora przechodzimy do początku ścieżki odpowiadającej pierwszemu wierzchołkowi z pokrycia, czyli . Po przejściu gadżetów na tej ścieżce wracamy do , a stąd do początku ścieżki odpowiadajacej drugiemu węzłowi z pokrycia, .
Wykażemy, że ma cykl Hamiltona wtedy i tylko wtedy gdy G ma pokrycie o liczności .
Załóżmy, że ma cykl Hamiltona i prześledźmy jego bieg zaczynając od (w dowolnym kierunku). Następny wierzchołek na cyklu musi być początkiem (lub końcem - załóżmy to pierwsze) ścieżki gadżetów dla pewnego wierzchołka . Dodajemy do generowanego pokrycia. Zgodnie z własnością gadżetu, cykl przebiega całą ścieżkę i na końcu przechodzi do innego selektora, załóżmy że jest to . Z musi przejść na początek lub koniec innej ścieżki, odpowiadającej wierzchołkowi . Dodajemy do pokrycia i kontynuujemy. Z ostatniej, -tej ścieżki, cykl musi wrócić do . Ponieważ cykl Hamiltona przeszedł przez wszystkie wierzchołki , a więc przez wszystkie gadżety , zatem wybrane w ten sposób wierzchołki stanowią pokrycie.
Teraz załóżmy, że ma pokrycie . Konstruujemy cykl Hamiltona w . Zaczynamy od selektora i przechodzimy na początek ścieżki związanej z , czyli do węzła . Przechodzimy przez kolejne gadżety aż do końca ścieżki. Dla danego gadżetu musimy podjąć decyzję czy przechodzimy przez wszystkie wierzchołki czy tylko przez połowę (jedną "ścianę"). Decyzja zależy od tego czy również należy do pokrycia. Jeśli nie, to przechodzimy cały gadżet, jeśli tak, to drugą "ścianę" pozostawiamy, aby później, gdy trawersowana będzie ścieżka dla również można było przejść przez . Z ostatniego węzła na ścieżce przechodzimy do selektora i powtarzamy konstrukcję. Z ostatniego węzła na -tej ścieżce wracamy do , zamykając w ten sposób cykl Hamiltona.
Ostatnim krokiem dowodu jest stwierdzenie, że konstrukcję grafu można wykonać posługując się pamięcią roboczą rozmiaru logarytmicznego. Wynika to, jak i w poprzednich dowodach, z tego że maszynie wystarcza pamięć na licznik położenia w wejściowym grafie oraz licznik numeru (nazwy) generowanego wierzchołka i krawędzi grafu .

Bardzo podobny w sformułowaniu jest problem ścieżki Hamiltona (HAMILTONIAN PATH). Na weściu jest graf nieskierowany, na wyjściu jest TAK jeśli w grafie istnieje ścieżka przechodząca przez każdy wierzchołek dokładnie raz. Oczywiste jest że istnienie cyklu Hamiltona implikuje istnienie ścieżki Hamiltona, jednak są to różne problemy, i NP-zupełnośc tego drugiwgo wymaga osobnego dowodu. Tym niemniej, na przykładzie tych problemów można pokazać pewne techniki dowodzenia NP-zupełności w takich przypadkach. Jedną z nich jest modyfikacja znanego już dowodu NP-zupełności problemu podobnego, drugą zaś redukcja z problemu podobnego.
Twierdzenie [HAMILTONIAN PATH]
Problem HAMILTONIAN PATH jest NP-zupełny.
Ćwiczenie
Ćwiczenie
Problemy na zbiorach i liczbach
Podsumowanie technik dowodów NP-zupełności
Najprostsze redukcje otrzymujemy metodą zacieśnienia. Przez narzucenie dodatkowych zależności w instancjach problemu, o którym dowodzimy NP-zupełności, otrzymujemy instancje znanego problemu NP-zupełnego. W ten sposób wykazujemy, że nasz problem jest uogólnieniem problemu znanego, a więc jest niełatwiejszy. Przykłady takich redukcji zastosowaliśmy do problemów: EXACT COVER BY 3SETS, SET COVERING, KNAPSACK.
Pozostałe dowody można by zaliczyć do metody gadżetów. Fragmenty instancji problemu wejściowego przekształca się we fragmenty instancji probelmu wynikowego (gadżety), i wiąże się zależnościami (innymi gadżetami), których zachodzenie w problemie wynikowym ma mieć ścisłe odzwierciedlenie w spełnieniu wymagań problemu źródłowego. Czasem gadżet jest trywialny (np. w redukcji SUBSET SUM do PARTITION jest to ta sama waga elementu), kiedy indziej dość naturalny i nietrudny (SAT DO 3SAT), czasem bardzo pomysłowy (VERTEX COVER do HAMILTONIAN CYCLE, 3SAT do TRIPARTITE MATCHING, 3SAT do MAX2SAT).
Ćwiczenia końcowe
ż, że następujący problem izomorfizmu podgrafu jest NP-zupełny:
Problem SUBGRAPH ISOMORPHISM
Wejście: , - grafy nieskierowane
Wyjście: TAK jeśli ma podgraf izomorficzny z , NIE
w przeciwnym przypadku.
tym ćwiczeniu pytamy o trudność obliczeniową problemu pochodzącego z teorii szergowania. Wykaż, że NP-zupełny jest następujący problem:
Problem SEQUENCING WITHIN INTERVALS
Wejście: Zbiór zadań , dla każdego zadania trzy liczby
całkowite: długość zadania , moment pojawienia się
,oraz ograniczenie czasowe
Wyjście: TAK, jeśli wszystkie zadania można wykonać na jednym
procesorze, bez przerywania, spełniając ograniczenia czasowe, NIE w
przeciwnym przypadku. Formalnie, pytamy o funkcję alokacji
przydzielająca każdemu zadaniu czas rozpoczęcia wykonywania
taki, że oraz
, dla
każdego zadania .
section
Problem cięcia w grafie zdefiniowany jest następująco:
Problem FEEDBACK VERTEX SET
Wejście: Graf skierowany , liczba całkowita .
Wyjście: TAK jeśli istnieje w podzbiór -wierzchołkowy,
taki że graf pozostały po usunięciu tego podzbioru jest
acykliczny.
Udowodnij, że FEEDBACK VERTEX SET jest NP-zupełny.
section
Kolorowanie (wierzchołkowe) grafu jest klasycznym problemem optymalizacyjnym w teorii grafów. Przypomnijmy, że chodzi o przypisanie wierzchołkom grafu nieskierowanego kolorów tak, aby końce każdej krawędzi miały różne kolory, a liczba kolorów była możliwie najmniejsza.
Okazuje sie że nawet jeśli ustalimy żądaną liczbe kolorów na 3, to problem jest NP-zupełny. Dowód tego faktu nie jest natychmiastowy.
Problem 3COLORING
Wejście: Graf nieskierowany .
Wyjście: TAK, jeśli istnieje funkcja taka, że dla każdej krawędzi , .
Za pomocą redukcji z problemu 3SAT udowodnij, że problem
trójkolorowania jest NP-zupełny.