Algorytmika Problemów Trudnych Wykład 9 Tomasz Krawczyk krawczyk@tcs.uj.edu.pl Kraków, semestr letni 2016/17
plan wykładu Algorytmy aproksymacyjne: Pojęcie algorytmu aproksymacyjnego i współczynnika aproksymowalności. Algorytm 2-aproksymacyjny dla drzewa Steinera. Algorytm 3 -aproksymacyjny dla metrycznego komiwojażera. 2 Wielomianowe (PTAS) i w pełni wielomianowe (FPTAS) schematy aproksymacyjne. FPTAS dla problemu plecakowego.
Algorytm α(n)-aproksymacyjny Definicja Algorytm A dla problemu optymalizacyjnego P jest jest algorytmem α(n)-aproksymacyjnym jeżeli: A działa w czasie wielomianowym od rozmiaru wejścia n, dla każdej instancji I rozmiaru n, A zwraca rozwiązanie o koszcie val A (I ), gdzie: val A(I ) opt(i ) α(n) (jeżeli P jest problemem minimalizacyjnym), opt(i ) val A (I ) α(n) (jeżeli P jest problemem maksymalizacyjnym).
Problem drzewa Steinera Graf ważony to para (V, c), gdzie V to zbiór wierzchołków a c : ( V 2) (Q + {0}) to wagi krawędzi grafu (graf jest zatem grafem pełnym). Problem Drzewa Steinera: Wejście: Graf ważony G = (V, c) oraz zbiór wierzchołków K zwanych terminalami lub węzłami wymaganymi. Wyjście: Minimalne (o minimalnym sumarycznym koszcie) drzewo w G łączące wszystkie terminale. W Metrycznym Problemie Drzewa Steinera funkcja wag spełnia nierówność trójkąta, to jest: Dla każdych różnych u, v, w V : c(u, v) + c(v, w) c(u, w).
(Metryczny) Problem Drzewa Steinera Istnieje algorytm α-aproksymacyjny dla Istnieje algorytm α-aproksymacyjny dla metrycznego problemu drzewa Steinera. zwykłego problemu drzewa Steinera. Dowód: Załóżmy, że mamy instancję G = (V, c) problemu drzewa Steinera. Niech G = (V, c ) będzie domknięciem metrycznym grafu G, to jest grafem ważonym z funkcją kosztu c, gdzie c (u, v) jest długością najkrótszej ścieżki z u do v w G. Waga minimalnego drzewa Steinera w G jest równa wadze minimalnego drzewa Steinera w G. Jeżeli T jest drzewem Steinera w G o koszcie α OPT w G, to maksymalne drzewo rozpinające w grafie składającym się z najkrótszych ścieżek u v w G, gdzie uv jest krawędzią w T, jest drzewem Steinera o koscie α OPT w G.
Metryczny Problem Drzewa Steinera Algorytm: zwróć minimalne drzewo rozpinające (MST) w grafie indukowanym przez K. Powyższy algorytm jest algorytmem 2-aproksymacyjnym: Niech T będzie minimalnym drzewem Steinera w G o koszcie OPT. Podwajając krawędzie T otrzymujemy graf eulerowski E o koszcie 2 OPT. Przechodzimy cykl Eulera E odwiedzając jednokrotnie wierzchołki będące terminalami. Ponieważ G jest metryczny, długość nowego cyklu jest ograniczona przez 2 OPT. Istnieje więc ścieżka rozpinające na podgrafie indukowanym przez K o koszcie 2 OPT. MST na K ma więc koszt 2 OPT.
Metryczny Problem Drzewa Steinera Algorytm: zwróć minimalne drzewo rozpinające (MST) w grafie indukowanym przez K. Powyższy algorytm jest algorytmem 2-aproksymacyjnym. Analizy powyższego algorytmu nie można poprawić. Rozważmy graf składający się ze środka v i zbioru n terminali K w odległości 1 od r. Pozostałe krawędzie grafu mają wagę 2. Algorytm zwróci drzewo Steinera o wadze 2n 2. Minimalne drzewo Steinera ma wagę n. Powyższa rodzina jest rodziną przypadków trudnych dla powyższego algorytmu.
Metryczny problem Drzewa Steinera Aktualny stan wiedzy: istnieje algorytm 1.39-aproksymacyjny dla problemu drzewa Steinera (Byrka, Grandoni, Rothwoß, Sanità), nie da się aproksymować metrycznego problemu drzewa Steinera ze współczynnikiem 96 o ile P NP (Bern and Plassmann, Chlebík i 95 Chlebíkowá)
Problem Komiwojażera Problem Komiwojażera: Wejście: Graf ważony G = (V, c). Wyjście: Cykl Hamiltona o minimalnym koszcie. W przypadku problemu komiwojażera, wersja ogólna różni się istotnie od wersji metrycznej.
Problem Komiwojażera Dla dowolnej funkcji wielomianowo obliczalnej α : N N, problem komiwojazera nie posiada algorytmu α(n)-aproksymującego. Dowód: Wykażemy, że jeżeli istnieje algorytm α(n)-aproksymacyjny dla problemu komiwojażera, to problem cyklu Hamiltona można rozwiązać w wielomianowym czasie. Niech G = (V, E) będzie instancją wejściową dla problemu cyklu Hamiltona. Konstruujemy graf ważony G = (V, c ), gdzie { c (u, v) = 1 (u, v) jest krawędzią w G, nα(n) w przeciwnym przypadku. Łatwo zauważyć, że G posiada cykl Hamiltona wtedy i tylko wtedy, gdy G posiada trasę komiwojażera o wadze n. G nie posiada cyklu Haniltona wtedy i tylko wtedy, gdy minimalna trasa komiwojażera w G jest większa od α(n) n. Algorytm α(n)-aproksymacyjny dla problemu komiwojażera rozwiązywałby zatem w wielomianowym czasie problem cyklu Hamiltona.
Metryczny Problem Komiwojażera Algorytm: znajdź minimalne drzewo rozpinające T w grafie ważonym G = (V, c), podwój krawędzie T i otrzymaj graf eulerowski E, zwróć nastepującą trasę komiwojażera: startując od dowolnego wierzchołka v przejdź po cyklu Eulera na krawędziach z E opuszczając wierzchołki, które zostały już wcześniej odwiedzone, zatrzymaj się w v. Powyższy algorytm jest algorytmem 2-aproksymacyjnym: waga T jest mniejsza bądź równa optymalnej trasie komiwojażera OPT, waga E jest mniejsza bądź równa 2 OPT, z metryczności G, waga zwróconej trasy komiwojażera jest mniejsza bądź równa od wagi cyklu Eulera E.
Metryczny Problem Komiwojażera - algorytm Christofidesa Algorytm: znajdź minimalne drzewo rozpinające T w grafie ważonym G = (V, c), niech V będzie zbiorem wierzchołków, które w T mają nieparzysty stopień (jest ich zawsze parzyście wiele), niech M będzie minimalnym dopasowaniem w grafie indukowanym przez V, zauważ, że E = M T jest grafem eulerowskim w G, zwróć nastepującą trasę komiwojażera: startując od dowolnego wierzchołka v przejdź po cyklu Eulera na krawędziach z E opuszczając wierzchołki, które zostały już wcześniej odwiedzone, zatrzymaj się w v. Powyższy algorytm jest algorytmem 3 2 -aproksymacyjnym: waga T jest mniejsza bądź równa optymalnej trasie komiwojażera OPT, waga M jest mniejsza bądź równa 1 2 OPT, z metryczności G, waga zwróconej trasy komiwojażera jest mniejsza bądź równa od wagi cyklu Eulera E.
Metryczny Problem Komiwojażera Aktualny stan wiedzy: najlepszy znany algorytm ma współczynnik aproksymacji 3 2 (Christofides), nie istnieje algorytm 220 -aproksymacyjny o ile P NP (Papadimitriou, 219 Vempala).
Schematy aproksymacji PTAS i FPTAS Niech P będzie problemem optymalizacyjnym. Mówimy, że algorytm A jest schematem aproksymacyjnym dla problemu P jeżeli dla wejścia (I, ɛ) algorytm A zwraca rozwiązanie o koszcie val A (I ), gdzie: val A (I ) (1 + ɛ)opt (jeżeli P jest problemem minimalizacyjnym), val A (I ) (1 ɛ)opt (jeżeli P jest problemem maksymalizacyjnym). Dodatkowo, jeżeli czas działania A jest wielomianowy dla każdego ustalonego ɛ > 0 (np. gdy czas działania A to O(n 1 ɛ )), to A nazywamy wielomianowym schematem aproksymacyjnym (ang. polynomial-time approximation scheme, PTAS ). jeżeli czas działania A jest wielomianem od rozmiaru wejścia i 1 ɛ, to A nazywamy w pełni wielomianowym schematem aproksymacyjnym (ang. fully polynomial-time approximation scheme, FPTAS).
Problem plecakowy Problem Plecakowy: Wejście: Zbiór n przedmiotów a 1,..., a n, każdy z nich ma wagę size(a i ) oraz wartość profit(a i ), dopuszczalna waga plecaka B. Wyjście: Maksymalna łączna wartość (zysk) przedmiotów o wadze B.
Algorytmy pseudowielomianowe i problemy silnie NP-trudne Algorytm A dla problemu P jest algorytmem pseudowielomianowym jeżeli czas jego działania jest wielomianowy w zależności od rozmiaru wejścia przy założeniu, że liczby na wejściu kodowane są w systemie unarnym. Problem P nazywamy problemem silnie NP-trudnym jeżeli jest NP-trudny nawet w przypadku, gdy liczby na wejściu kodowane są w sposób unarny. Problemy silnie NP-trudne nie mają algorytmów pseudowielomianowych.
Pseudowielomianowy algorytm dla problemu plecakowego Niech: P maksymalna wartość obiektu w {a 1,..., a n}. S[i, p] najlżejszy podzbiór {a 1,..., a i } dający zysk p, A[i, p] waga S i,p. Tablicę A[i, p] możemy obliczyć w czasie O(n 2 P) zgodnie z regułą: { min{a[i, p], size(ai+1 ) + A[i, p profit(a A[i+1, p] = i+1 )]} jeżeli profit(a i+1 ) p A[i, p] w p.p. Maksymalny możliwy zysk dla przedmiotów o łącznym rozmiarze nie przekraczającym B jest równy max{p : A[n, p] B}. Powyższy algorytm jest algorytmem pseudowielomianowym dla problemu plecakowego.
FPTAS dla problemu plecakowego FPTAS dla problemu plecakowego: Dla danego ɛ > 0, niech K ɛp n (niech K będzie potęgą 2). Dla każdego przedmiotu a i niech profit (a i ) = profit(a i ) K. Korzystając z programowania dynamicznego, znajdź najkorzystniejszy zbiór S dla problemu plecakowego z zyskami profit (a i ). Wypisz zysk S. Uwagi: jeżeli K = 2 l, to profit (a i ) otrzymujemy z profit(a) przez skreślenie l ostatnich liczb z rozwinięcia dwójkowego profit(a i ), profit (a i ) O(n 1 ɛ ), algorytm działa w czasie O(n 3 1 ɛ ).
FPTAS dla problemu plecakowego Lemat profit(s ) (1 ɛ) OPT. Proof: O - zbiór obiektów z optymalnym zyskiem, profit(o) K profit (O) nk, Mamy: profit(s ) K profit(o ) profit(o) nk OPT ɛp (1 ɛ) OPT.
Silna NP-zupełność a istnienie FPTAS Twierdzenie Niech p będzie wielomianem i niech P będzie NP-trudnym problemem minimalizacji z funkcją celu f. Załóżmy, że f przyjmuje wartości całkowite oraz, że OPT (I ) < p( I ) gdy instancja I kodowana jest unarnie. Jeżeli istnieje FPTAS dla P, to istnieje algorytm pseudowielomianowy dla P. Dowód: Niech I będzie instancją wejściową problemu P, kodowaną w sposób unarny. Zauważ, że algorytm FPTAS A dla ɛ = 1 rozwiązuje problem P dokładnie. 2p( I ) Czas działania A dla ɛ = 1 jest wielomianowy od I. 2p( I ) Wniosek: Naturalne problemy silnie NP-trudne nie mają FPTAS.
Euklidesowy Problem Komiwojażera Euklidesowy Problem Komiwojazera: Wejście: Zbiór n punktów P = {P 1,..., P n} na płaszczyźnie, punkt P i ma współrzedne (x i, y i ). Wyjście: Trasa przechodząca przez wszystkie punkty P 1,..., P n o najtańszym koszcie OPT. Twierdzenie Istnieje PTAS dla euklidesowego problemu komiwojażera. Uwagi: twierdzenie pokazane niezależnie przez Arorę oraz Mitchela, Obaj za ten wynik otrzymali nagrodę Gödla.