Złożoność obliczeniowa/Wykład 6: NP-zupełność jako narzędzie analizy problemu
Wstęp
Upraszczanie problemu przez narzucanie dodatkowych warunków na jego instancje może zmniejszyć jego złożoność. Na tej lekcji poznamy ciekawe przypadki, gdy po zacieśnieniu problem staje się obliczeniowo łatwy, jak i sytuacje przeciwne, gdy nawet mocne ograniczenia nie likwidują NP-zupełności. Poznamy również pojęcie silnej NP-zupełności, pozwalające abstrahować od wpływu wielkości liczb na trudność obliczeniową, a także uniezależniające trudność problemu od sposobu kodowania liczb.
Ciekawe podproblemy
Spełnialność
Na poprzedniej lekcji zauważyliśmy, że im prostszy problem źródłowy, tym łatwiej skonstruować redukcję z tego problemu do innego. Wiemy, że jednym z podstawowych problemów służących jako początek redukcji jest 3SAT. Naturalne jest zatem pytanie, czy dalsze zawężenia problemu SAT polegające na skracaniu klauzul zachowują NP-zupełność. Oczywiste jest, że 1SAT to problem trywialny -- na wejściu jest po prostu koniunkcja literałów -- pozostaje zatem 2SAT. Przypomnijmy, że oznacza to, iż każda alternatywa jest co najwyżej dwuskładnikowa, a dodatkowo załóżmy, że jeśli jest tylko jeden składnik, to powielamy go. Zatem każda alternatywa jest długości dwa.
Twierdzenie 2.1
Problem 2SAT jest rozwiązywalny w czasie wielomianowym.
<flash>file=ZO-6-1.swf|width=350|height=350</flash>
<div.thumbcaption>Rysunek 6.1.Dowód
Każdą alternatywę można traktować jako implikację . Rozważmy zatem graf skierowany dla wejściowej formuły zbudowany następująco:
- dla każdej zmiennej wstępującej w formule tworzymy dwa wierzchołki: oraz
- dla każdej alternatywy tworzymy dwie krawędzie: oraz
W ten sposób krawędzie grafu opisują implikacje logiczne zawarte w formule : jeśli występuje w formule, i pewne wartościowanie kładzie (czyli ), to w tym wartościowaniu zachodzi . Zatem jeśli początek krawędzi grafu ma wartość 1, to koniec krawędzi również. Zauważmy, że symetria w grafie, polegająca na tym, że istnieją obie krawędzie: oraz , odpowiada po prostu kontrapozycji w każdej implikacji.
Rysunek 6.1 przedstawia dla przykładowej formuły
Szukając wartościowania spełniającego tę formułę zacznijmy na przykład od . Od wierzchołka w grafie prowadzi ścieżka do , co oznacza że też musi mieć wartość 1, zatem nie istnieje wartościowanie spełniające formułę , w którym . Ale jeśli położymy , to, ponieważ istnieje również ścieżka z do , otrzymamy . Więc nie da się ustalić wartościowania dla , a zatem i dla całej formuły.
Z powyższego rozumowania łatwo można wyciągnąć następujący wniosek: jeśli w grafie dla pewnej zmiennej , wierzchołki oraz należą do pewnego cyklu, to formuła nie jest spełnialna. Okazuje się, że prawdziwa jest również implikacja odwrotna. Wykażemy mianowicie, że jeśli dla każdej zmiennej , wierzchołki oraz nie leżą na wspólnym cyklu, to istnieje wartościowanie spełniające .
Zacznijmy od dowolnego wierzchołka takiego, że nie istnieje ścieżka z do . Z założenia wynika, że dla każdej zmiennej co najmniej jeden z wierzchołków oraz posiada tę własność. Wszystkim wierzchołkom osiągalnym z przypisujemy wartość 1. Negacjom tych wierzchołków przypisujemy 0, co odpowiada znajdowaniu wierzchołków osiągalnych z posuwając się wstecz (czyli: jedynkę propagujemy wprzód, zaś zero cofając się po krawędziach grafu).
Nie jest możliwa sytuacja, że danemu wierzchołkowi przypisujemy w tej procedurze różne wartości. Oznaczałoby to, że zarówno jak i są osiągalne z , co pociągałoby istnienie ścieżki z do .
Jeśli pozostał jakiś wierzchołek o nieprzypisanej wartości, to powtarzamy procedurę, aż wartościowanie obejmie wszystkie wierzchołki. Upewnijmy się jeszcze co do poprawności kolejnych powtórzeń procedury, że nie zmieniają wartościowań ustalonych w poprzednich iteracjach. Załóżmy, że w kolejnym przeglądzie grafu istnieje krawędź od wierzchołka wartościowanego na 1 w tej iteracji do pewnego wierzchołka wartościowanego we wcześniejszej iteracji na 0, i że jest to pierwsza taka sytuacja. Zauważmy jednak, że wartościowanie propaguje się przeciwnie do kierunku krawędzi , zatem już w poprzedniej iteracji musiło byc ustalone , sprzeczność. Analogicznie, nie występują zmiany wartościowania z 1 na 0.
W takim razie obliczone wartościowanie spełnia wszystkie implikacje opisane krawędziami grafu, a zatem spełnia formułę.
Pozostaje zauważyć, że wersję decyzyjną prolemu rozwiązuje się stosując standardowy algorytm znajdowania silnie spójnych składowych grafu skierowanego i sprawdzając czy w którejś składowej znajduje się zarówno jakaś zmienna jak i jej zaprzeczenie. Formuła jest spełnialna wtedy i tylko wtedy gdy dla każdego , należy do innej silnie spójnej składowej niż . Algorytm ten ma złożoność liniową. Można pokazać, że znajdowanie wartościowania również jest wykonalne w czasie liniowym.

Długość klauzuli, czyli liczba występujących w niej alternatyw, nie jest jedyną cechą, która może podlegać restrykcji. Inne sensowne zacieśnienie problemu SAT otrzymujemy ograniczając częstotliwość występowania zmiennych i literałów w formule.
Wejście: Formuła logiczna w koniunkcyjnej postaci
normalnej taka, że w każdej alternatywie są co najwyżej 3 literały,
każda zmienna występuje nie więcej niż 3 razy, a każdy literał nie więcej niż 2 razy
Wyjście: TAK jeśli jest spełnialna, NIE w przeciwnym
przypadku.
Ćwiczenie 2.1
Ćwiczenie 2.2
Na zakończenie tego rozdziału omówimy jeszcze jedną z wersji problemu SAT polegających na zacieśnieniu postaci formuły. Mówimy, że klauzula jest hornowska, jeśli zawiera co najwyżej jeden literał nie bedący negacją zmiennej (literał pozytywny). Taką klauzulę, jeśli zawiera literał pozytywny, wygodnie jest traktować jako implikację, np. jest równoważna implikacji , zaś klauzula jest równoważna .
Wejście: Formuła będąca koniunkcją klauzul hornowskich
Wyjście: TAK jeśli ta formuła jest spełnialna, NIE w przeciwnym przypadku
Twierdzenie 2.2
Problem HORNSAT jest obliczeniowo łatwy.
Dowód
Konstruujemy algorytm znajdujący wartościowanie spełniające daną formułę, o ile takie istnieje. Wartościowanie to będzie utożsamiane ze zbiorem tych zmiennych, które mają przypisaną wartość 1. Początkowo . Jeśli w formule nie występują klauzule jednoskładnikowe zawierające zmienną pozytywną, to wartościowanie spełnia formułę i algorytm się kończy.
W przeciwnym przypadku, dopóki nie wszystkie implikacje są spełnione wykonuj następującą operację: wybierz dowolną implikację , która jest niespełniona, a więc wartości zmiennych są jedynkami, a wartość jest 0. Dodaj zmienną do zbioru .
Algorytm zatrzymuje się gdy nie ma niespełnionej implikacji. Wykażemy, że jeśli formuła jest spełnialna, to wartościowanie ją spełnia.
Na początek zauważmy, że każde wartościowanie spełniające formułę musi zawierać cały zbiór na 1. W przeciwnym przypadku, jeśli jest najwcześniej w algorytmie wartościowaną na 1 zmienną, taką że , to jej poprzedniki w rozpatrywanej implikacji należą do , a więc w takiej sytuacji nie spełnia tej implikacji, co stanowi sprzeczność.
Nasz algorytm się zatrzymuje gdy nie ma już niespełnionych implikacji. Jeśli nadal istnieje niespełniona klauzula, to ma ona postać alternatywy negacji zmiennych, np. , i wszystkie te zmienne maja wartość 1. Ponieważ każde wartościowanie spełniające formułę musi być nadzbiorem wartościowania , więc w takim przypadku nie istnieje wartościowanie spełniające wszystkie klauzule. Zatem nasz algorytm oblicza poprawnie wartościowanie spełniające formułę, o ile takie wartościowanie istnieje.
Pozostaje zauważyć, że opisana procedura jest łatwo realizowalna w czasie wielomianowym.

Klasyczne problemy grafowe
Teraz zajmiemy się analizą zacieśnień wybranych problemów grafowych. Na początek odnotujmy kilka bardzo łatwych spostrzeżeń.
Twierdzenie 2.3
Jeśli graf podany na wejściu jest drzewem, to następujące problemy są w P: HAMILTONIAN CYCLE, HAMILTONIAN PATH, CLIQUE, COLORING, NODE COVER, INDEPENDENT SET.
Tylko problem pokrycia wierzchołkowego i równoważny mu problem zbioru niezależnego wymagają naszkicowania algorytmu - pozostałe są trywialne. Przypomnijmy, że dopełnienie pokrycia jest zbiorem niezależnym, wystarczy więc zająć się na przykład tylko tym ostatnim.
Ćwiczenie 2.3
Przy dowodzeniu NP-zupełności zacieśnienia danego problemu możemy oczywiście nie korzystać z tego, co dotychczas wiemy o NP-zupełności problemu. Jednakże warto na ogół zastanowić się, czy nie przyniesie sukcesu jedna z dwóch poniższych nasuwających się metod:
- Wykorzystać znaną redukcję z problemu do , dowodzącą NP-zupełności problemu . Warianty tej metody mogą być następujące:
- Redukcja ta wykorzystuje tylko instancje należące do . Wówczas dowód już mamy.
- Istnieje NP-zupełny podproblem problemu taki, że wspomniana redukcja zacieśniona do przeprowadza instancje wejściowe w dziedzinę problemu
- Istniejąca redukcja daje się łatwo przekształcić tak, że do jej obrazu należą tylko instancje problemu .
- Skonstruować redukcję z problemu do jego podproblemu .
Znanym nam dobrze przykładem zastosowania metody 2 jest dowód NP-zupełności problemu 3SAT. Inne, trudniejsze przykłady poznamy w dalszej części tej lekcji.
Jeśli chodzi o pierwszą z metod, to wariant pierwszy tej metody -- możliwość przytoczenia bezpośrednio istniejącej redukcji -- ma zastosowanie na przykład w dowodzie NP-zupełności pewnego zacieśnienia problemu komiwojażera. Wymagamy w nim aby odległości w sieci spełniały warunek trójkąta, przykład ten omawiany jest w następnym wykładzie.
Drugą z wymienionych możliwości poznamy na przykładzie problemu zbioru niezależnego. Prostą do sprawdzenia własnością grafów, która w istotny sposób może ograniczyć trudność problemu, jest maksymalny dopuszczalny stopień wierzchołka. Wykażemy, że problem INDEPENDENT SET jest NP-zupełny nawet jeśli ograniczamy się do grafów o stopniu wierzchołka nie przekraczającym 4. W tej wersji jest on jednym z ważnych problemów w klasie MAXSNP omawianej w dalszych wykładach.
Twierdzenie 2.4
Problem 4INDEPENDENT SET jest NP-zupełny
<flash>file=ZO-5-1.swf|width=350|height=250</flash>
<div.thumbcaption>Rysunek 6.2.Dowód
Przyjrzyjmy się znanej redukcji z problemu 3SAT do INDEPENDENT SET - jest to ta sama redukcja co z 3SAT do NODE COVER omawiana w poprzednim wykładzie, należy tylko zastąpić wartość generowanego parametru przez , liczbę klauzul. Otrzymujemy następującą równoważność: formuła wejściowa jest spełnialna wtedy i tylko wtedy, gdy graf zdefiniowany w wyniku redukcji posiada zbiór niezależny o wierzchołkach. (porównaj: rysunek 6.2.)
NP-zupełnym podproblemem problemu 3SAT jest 3OCCUR 3SAT. Zauważmy, że jeśli formuła na wejściu spełnia ograniczenie, że żaden literał nie pojawia sie więcej niż 2 razy, to stopień każdego wierzchołka grafu wygenerowanego przez redukcję nie przekracza 4: krawędzie trójkąta wnoszą do stopnia wierzchołka 2, przeciwny do danego literał wnosi co najwyżej 2.
Pozostaje jeszcze niuans związany z tym, że w problemie 3OCCUR 3SAT istotnie ważne są klauzule o długości mniejszej niż 3 (jeśli wejściowa formuła jest postaci 3SAT to możemy założyć, że w każdej klauzuli występują dokładnie 3 różne zmienne i tego problemu nie ma). Rozwiązanie jest proste: klauzule dwuskładnikowe przekształcamy w odcinki (pojedyncze krawędzie), natomiast jednoskładnikowe w punkty (pojedyncze wierzchołki), i tak samo łączymy z innymi trójkątami, odcinkami i punktami.
Zatem redukcja z problemu 3SAT do INDEPENDENT SET okazała się również redukcją (prawie) z 3OCCUR 3SAT do 4INDEPENDENT SET.

Bardzo ważnym dla zastosowań jest problem kolorowania. Okazuje sie on trudny nawet dla bardzo mocnych zawężeń. Jako pierwsze z nich przeanalizujemy ograniczenie na stopień wierzchołków.
Jeśli to ograniczenie wynosi 2, to graf składa się ze ścieżek i cykli, i jest łatwo rozstrzygnąć czy potrzebne są 2 kolory czy 3. Jeśli maksymalny dopuszczalny stopień wynosi 3, to znane jest twierdzenie mówiące, że taki graf jest trójkolorowalny wtedy i tylko wtedy gdy nie zawiera kliki rzędu 4 -- warunek ten łatwo sprawdzić w czasie proporcjonalnym do . Dopuszczenie wierzchołków stopnia 4 stanowi przeskok do problemu trudnego.
<flash>file=ZO-6-2.swf|width=300|height=300</flash>
<div.thumbcaption>Rysunek 6.3.Twierdzenie 2.5
Problem 3COLORING jest NP-zupełny, nawet jeśli zakładamy że jego dziedzina jest zawężona do grafów o stopniu wierzchołka nie przekraczającym 4.
Dowód
Stosujemy metodę 2, mianowicie redukujemy problem trójkolorowania dla dowolnych grafów do tego samego problemu dla grafów o stopniu wierzchołka nie przekraczającym 4.
Podstawą konstrukcji jest gadżet , przedstawiony na sąsiednim rysunku, pozwalający zastępować wierzchołki o stopniu większym niż 4 odpowiednim podgrafem. Postać takiego podgrafu zastępującego wierzchołek o stopniu jest również przedstawiony na rysunku -- składa się on z kopii gadżetu . Własności grafu są następujące (porównaj rysunek 6.3):
- jest trójkolorowalny i nie jest dwukolorowalny
- jego rozmiar jest liniowy w stosunku do
- wszystkie jego wierzchołki mają stopień nie większy niż 4, a wierzchołków narożnych (nazywanych dalej zewnętrznymi) ma stopień 2
- każde trójkolorowanie przypisuje wierzchołkom narożnym ten sam kolor
Redukcja zatem działa według następującego algorytmu.
Algorytm
Niech będzie grafem wejściowym while zawiera wierzchołek : usuń z dodaj do nową kopię grafu połącz krawędzią każdy wierzchołek zewnętrzny w z innym spośród
dotychczasowych sąsiadów wierzchołka , w dowolnej kolejności endwhile return
Zastąpienie wierzchołka gadżetem nie wprowadza nowych wierzchołków o stopniu większym niż 4, zatem w grafie wynikowym nie ma takich wierzchołków.
Zastąpienie w trójkolorowalnym grafie wierzchołka o stopniu przez , tak jak opisano powyżej, tworzy graf również trójkolorowalny. Mianowicie, kolorowanie zadane w przenosimy na w ten sposób, że kolory wierzchołków w pozostawiamy, wszystkim wierzchołkom zewnętrznym w dajemy kolor wierzchołka , pozostałe wierzchołki w kolorujemy tak, aby otrzymać poprawne trójkolorowanie. Ta ostatnia czynność jest wykonalna dzięki własnościom gadżetu . Zatem, jeśli graf wejściowy jest trójkolorowalny, to grafy otrzymywane w wyniku kolejnych iteracji algorytmu redukcji też są trójkolorowalne, a więc graf wynikowy również.
Podobnie dowodzimy, że istnienie trójkolorowania grafu implikuje istnienie trójkolorowania grafu .
Dzieki ograniczeniom na rozmiar tworzonego grafu redukcję można wykonać w pamięci logarytmicznej.

W zastosowaniach bardzo ważna jest inna własność grafów: planarność. Teoretycznie, grafy planarne są stosunkowo rzadkie. Praktycznie, mamy z nimi do czynienia bardzo często. Czy obliczeniowa trudność problemu znika, gdy od rozpatrywanych grafów wymagamy dodatkowo tej własności?
Oczywiście, zależeć to będzie od problemu. W przypadku problemu 3COLORING ograniczenie sie do grafów planarnych, nawet przy założeniu, że stopień wierzchołka nie przekracza 4, zachowuje NP-zupełność problemu. Dowód nie jest łatwy, ale warto spróbować zrobić go samodzielnie.
Ćwiczenie 2.4
Problemy liczbowe i silna NP-zupełność
Zajmiemy sie teraz analizą problemów NP-zupełnych, w których występują liczby. Intuicyjnie, chodzi o takie zagadnienia, w których mamy nie tylko nazwy obiektów (np. wierzchołków grafu), czy też liczby stosunkowo małe (np. wielkość żądanej kliki -- nie ma sensu pytać o klikę rzędu przekraczającego liczbę wierzchołków). Chodzi o sytuacje w których liczby mogą być dowolnie wielkie w porównaniu do "reszty" instancji, np. w problemie komiwojażera -- długości krawędzi grafu, w problemie sumy podzbioru -- wagi elementów.
Dla tego ostatniego problemu napiszmy dość znany algorytm, oparty o technikę programowania dynamicznego.
Ćwiczenie 3.1
Tylko pozornie złożoność tego rozwiązania problemu SUBSET SUM jest wielomianowa. Złożność, jak dobrze wiemy, jest funkcją rozmiaru danych, czyli długości ich zapisu. Przy czym zakładamy "rozsądne" kodowanie instancji, w szczególności wymagamy, aby liczby były kodowane binarnie. Liczba w problemie SUBSET SUM jest zapisana na bitach, i w stosunku do tej wielkości funkcja nie jest wielomianowa, lecz wykładnicza. Jeżeli złożoność algorytmu jest wielomianowa od rozmiaru danych i wielkości największej liczby w instancji to mówimy że jest to algorytm o złożoności pseudowielomianowej.
Zatem nie ma tutaj ani paradoksu, ani tym bardziej odkrycia, że . Z praktycznego punktu widzenia można jednak dostrzec zalety takiego algorytmu. Jeśli liczby w instancji nie są wielkie, to takie rozwiązanie, mimo że niewielomianowe, może być bardzo efektywne. Naturalne więc staje sie pytanie, czy tego typu sytuacja dotyczy wszystkich problemów NP-zupełnych, i jak ją można formalnie opisać.
Zauważmy, że na przykład w redukcji z problemu 3SAT do CLIQUE liczby generowane przez funkcje redukcji mają wielkość wielomianową w stosunku do rozmiaru formuły. Podobnie jak dla dowodu NP-zupełności trójdzielnego skojarzenia czy kolorowania. Również w redukcji z problemu cyklu Hamiltona do komiwojażera wagi krawędzi w generowanym grafie są ograniczone wielomianowo (faktycznie, przez stałą 2).
Przeciwna sytuacja zachodzi w przypadku redukcji z EXACT COVER BY 3SETS do SUBSET SUM. Generowane przez redukcję liczby są zapisywane na wielomianowej liczbie bitów, ich wartości są wykładnicze, i to decyduje o trudności problemu SUBSET SUM. Ta cecha przenosi się na problem plecakowy oraz problem podziału. Aczkolwiek też NP-zupełne, te problemy wydają się nieco łatwiejsze niż wcześniej omawiane problemy grafowe.
Formalizacja pojęcia algorytmu psedowielomianowego w modelu obliczeń wymaga dodatkowych pojęć. Bez nich instancje wejściowe są po prostu ciągami bitów, nie posiadającymi struktury! Rozważanie wielkości liczb w instancji możliwe jest tylko poprzez "dekodowanie" słowa wejściowego (ciągu bitów), czyli interpretację w terminach problemu naturalnego. Wprowadźmy zatem potrzebne definicje.
Niech będzie językiem nad pewnym alfabetem . Załóżmy, że NUM jest funkcją obliczalną w czasie wielomianowym, i NUM , dla każdego słowa . Intuicyjnie: funkcja NUM definiuje wartość największej liczby w instancji . Jeśli wielomianem, to oznaczmy NUM .
Definicja 3.1
Przy oznaczeniach jak powyżej, mówimy że maszyna Turinga działa w czasie pseudowielomianowym, jeśli dla każdego słowa wejściowego liczba wykonywanych kroków nie przekracza NUM , dla pewnego wielomianu .
Język jest silnie NP-zupełny, jeśli istnieje wielomian taki, że jest NP-zupełny.
Język (problem) jest nieliczbowy, jeśli istnieje wielomian taki, że dla każdego słowa wejściowego , NUM .
Powyższe rozważania mają sens (i zastosowanie praktyczne) tylko w przypadku właściwego doboru funkcji NUM, mającego odpowiednik w naturalnej definicji problemu. Na ogół przyjmuje się, że jest to największa liczba występująca w naturalnej, "rozsądnej" definicji problemu.
Ćwiczenie 3.2
Z rozważanych dotychczas problemów, nieliczbowe są na przykład:
- SAT i jego warianty, SET COVERING
- NODE COVER, CLIQUE, HAMILTONIAN CYCLE, COLORING (zauważmy, że parametr instancji podający rozmiar żądanego pokrycia wierzchołkowego możemy ograniczyć od góry przez moc zbioru wierzchołków grafu, podobnie dla wielu innych problemów grafowych)
Z kolei, niewielomianowej (w stosunku do rozmiaru instancji) wielkości liczby moga pojawiać się w problemach takich jak:
- TRAVELING SALESMAN
- SEQUENCING WITHIN INTERVALS
- SUBSET SUM, PARTITION, KNAPSACK
Łatwo spostrzec, że każdy NP-zupełny problem nieliczbowy jest z definicji silnie NP-zupelny. Zatem pojęcie to jest istotne dla problemów zawierających dowolnie wielkie liczby. Zastosowanie NP-zupełności w analizie złożoności obliczeniowej takich problemów opiera się na następującym praktycznie bardzo ważnym fakcie:
Twierdzenie 3.2
Jeśli P NP , a jest problemem silnie NP-zupełnym, to nie istnieje algorytm pseudowielomianowy dla .
Ćwiczenie 3.3
Podsumowując, udowodnienie, że dany problem jest silnie NP-zupełny praktycznie wyklucza jedną z potencjalnych ścieżek szukania sensownego rozwiązania, mianowicie algorytmy pseudowielomianowe. Zatem ma duże znaczenie praktyczne. Przyjrzymy się jeszcze kilku przykładom.
Ćwiczenie 3.4
Jednym z częściej stosowanych w dowodach NP-zupełności problemów jest następujący problem trójpodziału:
Wejście: Liczby oraz zbiór (być może z
powtórzeniami) , liczb całkowitych takich, że , dla każdego , oraz
Wyjście: TAK, jeśli istnieje podział na podzbiorów takich, że suma liczb w każdym podzbiorze równa jest 1, NIE w przeciwnym
przypadku.
Pomijamy dość skomplikowany i długi dowód faktu, że 3PARTITION jest silnie NP-zupełny. Zanim wykorzystamy ten problem, zauważmy jeszcze jedna ciekawą cechę problemów silnie NP-zupełnych. Mianowicie, jeśli instancje takiego problemu (zdefiniowane w naturalny sposób) zakodujemy zapisując liczby unarnie, to problem (formalnie: jezyk odpowiadający mu przy takim kodowaniu) pozostaje nadal NP-zupełny!
Aby sie o tym przekonać wystarczy rozważyć oba języki dla tego problemu powstałe przy różnych kodowaniach. Redukcja z języka , w którym kodowanie jest binarne (jest silnie NP-zupełny), do języka , polegająca na zmianie zapisu z binarnego na unarny, jest redukcją logarytmiczną (długość zapisu rośnie wielomianowo), zatem jest NP-zupełny.
Wykorzystamy tę własnośc w dowodzie NP-zupełności jeszcze jednego zacieśnienia znanego nam już problemu NP-zupełnego. Chodzi o SUBGRAPH ISOMORPHISM, w którym dla zadanych grafów pytamy, czy zawiera podgraf izomorficzny z . Interesują nas zacieśnienia polegające na zakazie występowania cykli w jednym lub obu grafach (czyli grafy będące lasami, a w szczególnych przypadkach - drzewami).
Jeśli tylko o zakładamy, że jest drzewem, to szczególnym przypadkiem (czyli jeszcze silniejszym zawężeniem) jest wymaganie, by był ścieżką. Problem staje się równoważny HAMILTONIAN PATH, a więc jest NP-zupełny.
Jesli o założymy, że jest drzewem, to interesujące staje się narzucenie , by był drzewem lub lasem. Problem izomorfizmu poddrzewa jest wielomianowy, algorytm jest nietrywialny -- nieco łatwiejszy jest problem testowania izomorficzności drzew. Co się dzieje, gdy może byc lasem?
Twierdzenie 3.3
Problem SUBGRAPH ISOMORPHISM, w którym dodatkowo zakładamy, że jest drzewem, a lasem, jest NP-zupełny.
<flash>file=ZO-6-4.swf|width=350|height=350</flash>
<div.thumbcaption>Rysunek 6.5.Dowód
Skonstruujemy redukcję z problemu 3PARTITION. Na wejściu mamy liczby
oraz ciąg liczb całkowitych takich,
że , dla każdego , oraz
Drzewo zbudowane jest z rozłącznych ścieżek, każda ma długość (czyli ma wierzchołków), a pierwszy wierzchołek każdej ścieżki jest połączony krawędzią z korzeniem .
Las składa się z gwiazdy o ramionach oraz rozłącznych ścieżek, kolejne ścieżki zawierają odpowiednio wierzchołków (porównaj rysunek 6.5.).
Ponieważ stopień korzenia gwiazdy w wynosi co najmniej 3, więc każde włożenie w musi utożsamić korzeń gwiazdy z korzeniem i wykorzystać początkowe węzły ścieżek w . Zatem ścieżki można zanurzyć w ścieżki drzewa wtedy i tylko wtedy, gdy można je pogrupować po 3, tak aby suma liczby wierzchołków w każdej grupie była równa , a to odpowiada żądanemu trójpodziałowi.
I teraz ciekawa rzecz: tak zdefiniowana redukcja nie jest redukcją logarytmiczną! Powód: działa w czasie wykładniczym, bo dla liczby generuje na wyjściu ścieżkę długości , co musi zająć czas wykładniczy od długości zapisu lizby , czyli od . I tu przychodzi nam z pomocą silna NP-zupełność problemu 3PARTITION. Mianowicie zakładamy, że problem ten został zakodowany unarnie. W tej sytuacji rzeczywiście nasz dowód staje sie poprawny.
Poznaliśmy zatem ciekawy przypadek dowodzenie NP-zupełności problemu nieliczbowego przez redukcję z silnie NP-zupełnego problemu liczbowego, jakim jest problem trójpodziału.

Ćwiczenia dodatkowe
Ćwiczenie 4.1
Ćwiczenie 4.2
Wykaż, że problem pakowania jest silnie NP-zupełny.
Wejście: zbiór przedmiotów o wagach wymiernych , oraz liczba naturalna
Wyjście: TAK, jeśli wszystkie te przedmioty mozna upakować w pojemnikach, przy czym suma wag w każdym pojemniku nie może przekraczać 1, w przeciwnym przypadku NIE