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
Problem 2SAT jest rozwiązywalny w czasie wielomianowym.
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 1 przedstawia dla przykładowej formuły
[width=10cm]{ZO-6-rys-1.jpg}
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śc 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.
Problem 3OCCUR3SAT
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.
Udowodnij, że 3OCCUR3SAT jest NP-zupełny.
Aby "przedłużyć" redukcję z powyższego ćwiczenia w celu otrzymania
formuł z klauzulami o długości dokładnie 3 nie możemy zastosować
podstawowej sztuczki polegającej na powieleniu literału w klauzuli,
ani też dodawania nowych zmiennych, jak to było stosowane w uwadze
do wariantów problemu 3SAT w poprzednim module. Nasuwa się pytanie
czy to, że w przeciwdziedzinie redukcji opisanej w rozwiązaniu
ćwiczenia istnieją alternatywy o długości 2, jest istotne.
Czy problem 3OCCUR 3SAT z dodatkowym założeniem, że każda
alternatywa zawiera 3 literały nad różnymi zmiennymi, jest
NP-zupełny? Oczywiście odpowiedź uzasadnij.
Pierwsza wskazówka podaje tylko odpowiedź tak/nie.
Druga wskazówka sugeruje sposób uzasadnienia.
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 .
Problem HORNSAT
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
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
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.
Skonstruuj wielomianowy algorytm znajdowania maksymalnego pod
względem liczności zbioru niezależnego w zadanym drzewie .
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
Problem 4INDEPENDENT SET jest NP-zupełny
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.
TUTAJ PONOWNIE RYSUNEK ZO-5.1.
[width=10cm]{ZO-5-rys-1.jpg}
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.
Twierdzenie
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:
[width=10cm]{ZO-6-rys-2.jpg}
- 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.
{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.
Wykaż, że problem 3COLORING jest NP-zupełny, nawet jeśli dziedzina
problemu jest ograniczona do grafów planarnych.
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.
Na wejściu dana jest tablica liczb naturalnych oraz liczba
naturalna . Napisz algorytm o złożoności czasowej
znajdujący podzbiór elementów tablicy, którego suma liczb wynosi
.
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
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.
Podaj sensowną definicję funkcji NUM dla problemu SUBSET SUM, dla
której algorytm rozwiązujący poprzednie ćwiczenie jest
pseudowielomianowy.
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
Jeśli P NP , a jest problemem
silnie NP-zupełnym, to nie istnieje algorytm pseudowielomianowy dla
.
Udowodnij powyższe twierdzenie.
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.
Wykaż, że problem komiwojażera jest silnie NP-zupełny.
Jednym z częściej stosowanych w dowodach NP-zupełności problemów
jest następujący problem trójpodziału:
Problem 3PARTITION
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
Problem SUBGRAPH ISOMORPHISM, w którym dodatkowo zakładamy, że
jest drzewem, a lasem, jest NP-zupełny.
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.
[width=10cm]{ZO-6-rys-4.jpg}
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
Wykaż, że NP-zupełna jest wersja NAE3SAT problemu 3SAT, w której
pytamy o istnienie wartościowania, dla którego w każdej klauzuli
występuje zarówno prawda jak i fałsz. Zakładamy, że wejściowe
klauzule zawierają zawsze 3 literały.
Zauważ, że nie używamy tutaj pojęcia "podproblem", gdyż dziedzina
jest wprawdzie taka sama (ciąg klauzul co najwyżej
trójskładnikowych), ale pytanie jest nieco inne.
Wykaż, że problem pakowania jest silnie NP-zupełny.
Problem BIN PACKING
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