Temat: Algorytmy aproksymacyjne dla wybranych NP-trudnych problemów grafowych 1. Problem komiwojaera Wejcie: Graf G = <V, E, w> pełny, zorientowany z dodatnimi wagami; w - funkcja wag grafu Wyjcie: Najtaszy w sensie łcznej sumy wag cykl Hamiltona w grafie Problem, cho prosty, jeli chodzi o zdefiniowanie, okazuje si bardzo trudny do rozwizania. Jeden z dokładnych algorytmów polega na kompletnym przegldzie wszystkich moliwych cykli Hamiltona w grafie G i wybranie najkrótszego. Poniewa ilo moliwych cykli ronie z iloci miast jak (n-1)!, złoono problemu wynosi O(n!). Zatem ju dla n=2 mamy 1.216451 1 17 cykli. Czas oblicze tylu cykli Hamiltona dla najszybszych znanych dzisiaj komputerów wyniósłby około 4. lat. G. Morton i A.H. Land (w 1955) przedstawili pierwszy, 3-przybliony algorytm (czyli dajcy co najwyej 3 razy gorszy wynik od optymalnego), a w 1956 Merill M. Flood opublikowali algorytm 2- przybliony, oparty o technik włczania, rozwizujcy metryczn wersj problemu komiwojaera. Wersja metryczna problemu komiwojaera ma na wejciu graf metryczny, tzn. taki, e dla kadej trójki wierzchołków grafu i. j, k spełniony jest warunek trójkta, tj.: w ik w ij + w jk. Mimo zawenia klasy grafów, które mog by przetwarzane w metrycznej wersji problemu komiwojaera, w praktyce grafy wejciowe dla tego problemu s najczciej metryczne. W 1975 roku N. Christofides przedstawił algorytm 1,5-przybliony,
bdcy najlepszym dostpnym algorytmem aproksymacyjnym dla wersji metrycznej problemu komiwojaera. Istniej algorytmy aproksymacyjne, dajce równie dobre przyblienie trasy, oparte o sztuczn inteligencj i genetyk; wykorzystujce elementy losowe, które mog by zastosowane dla dowolnych grafów (niekoniecznie metrycznych). a) Algorytm Flooda Idea Wybieramy wierzchołek pocztkowy cyklu s. Nastpny wierzchołek cyklu wybieramy sporód n-1 pozostałych wierzchołków, zgodnie z nastpujcym kryterium: (*) Wybieramy wierzchołek nie odwiedzony, połoony najdalej od cyklu (tzn. od wszystkich wierzchołków, które ju s w cyklu). Oznaczmy wybrany wierzchołek przez p. Otrzymujemy w ten sposób cykl złoony z dwóch wierzchołków: (s, p, s). Nastpnie jest wybierany kolejny wierzchołek, spełniajcy kryterium (*). Do biecego rozwizania włczamy albo cykl (s, p, q, s) albo (s, q, p, s) w zalenoci od tego, który jest taszy. Kontynuujemy krok wybierania wierzchołka i włczania go do cyklu czciowego a do momentu uzyskania pełnego cyklu. Oznaczmy przez VT zbiór wierzchołków nalecych do biecego cyklu, a E T zbiór krawdzi tego cyklu. I krok: Wybieranie wierzchołka Aby efektywnie wyznaczy wierzchołek nie odwiedzony, lecy najdalej od wierzchołków biecego cyklu, zastosujemy tablic jednowymiarow odległoci dist, tak, e dist[v] zapamituje
najmniejsz odległo wierzchołków cyklu od v. Jeeli wierzchołek f jest włczany do cyklu jako nastpny, to ma najwiksz warto w tablicy dist. Po włczeniu f do cyklu tablica dist jest uaktualniana i kady jej element staje si równy minimum sporód biecej wartoci w tablicy dist i odpowiedniej wartoci w wierszu f macierzy wag W. II krok: Włczanie wierzchołka do cyklu Załómy, e biecy cykl zawiera k wierzchołków i nastpnym do włczenia wierzchołkiem jest f. Badamy kady łuk (i, j) cyklu i okrelamy koszt włczenia f midzy i oraz j, który jest równy: cij = wif + wfj wij. Wród k łuków cyklu wybieramy łuk (t, h) o najmniejszym koszcie c th. Wierzchołek f włczamy do cyklu midzy t i h, uaktualniamy długo cyklu i wartoci elementów w tablicy dist. algorytm TSP_Flood; // inicjalizacja V T ={s}; E T = {(s, s)}; w ss = ; koszt = ; for (u V \ {s}) dist[u] = w su ; // iteracja while ( V T < n) { f = wierzchołek ze zbioru V \ V T o najwikszej wartoci dist ; for ((i, j) E T ) cij = wif + wfj wij ; (t, h) = łuk z E T o najmniejszym koszcie c th ; E E {( t, f ), ( f, h) } ( t, h) T = T V V { f }; T = T koszt = koszt + c th ; { };
for (x V \ V T ) do dist[x]=min{dist[x], w fx }; } Wierzchołki V T i łuki E T, tworzce biecy cykl, s reprezentowane w tablicy cycle, w której element cycle[i] przyjmuje warto j, gdy krawd (i, j) naley do biecego cyklu i w przeciwnym przypadku. Przykład W 1 2 4 345 = 439 528 6 3 1 3 17 9 46 88 2 93 77 8 88 18 3 13 42 36 33 46 4 33 21 16 56 92 5 9 16 28 7 25 6 inicjalizacja: s = 1 dist: -, 3, 93, 13, 33, 9, cycle : 1,,,,, koszt: iteracja: I krok f = 3 - wierzchołek o maksymalnej wartoci dist koszt = koszt + c 11 =koszt + w 13 +w 31 = + 93 + 45 =138 dist: -, 3, -, 13, 16, 9, cycle: 3,, 1,,,, cykl: 1-3-1 II krok f = 5 koszt = koszt + min{c 13, c 31 }=
= koszt +min{w 15 +w 53 - w 13, w 35 +w 51 - w 31 }= = 138 + min{33+88-93, 16 + 28-45}= = 138 + min{28, -1}=137 dist: -, 3, -, 13, -, 9, cycle: 3,, 5,, 1,, cykl: 1-3-5-1 W 1 2 4 345 = 439 528 6 3 1 3 17 9 46 88 2 93 77 8 88 18 3 13 42 36 33 46 4 33 21 16 56 92 5 9 16 28 7 25 6 III krok f = 4 koszt = koszt +min{c 13, c 35, c 51 }= = koszt + min{w 14 +w 43 - w 13, w 34 +w 45 - w 35, w 54 +w 41 - w 51 }= = 137 + min{, 76, 44}=137 + =137 dist: -, 3, -, -, -, 7 cycle: 4,, 5, 3, 1,, cykl: 1-4-3-5-1 IV krok f = 6 koszt = koszt + min{c 14, c 43, c 35, c 51 }= = 137+ min{42, -55, 14, }= 137-55 = 82 dist: -, 3, -, -, -, - cycle: 4,, 5, 6, 1, 3, cykl: 1-4-6-3-5-1
V krok f = 2 koszt = koszt + min{c 14, c 46, c 63, c 35, c 51 }= = 82+ min{32, 99, 147, 22, 22}= 82 +22 = 14 Mamy tym razem dwie moliwoci włczenia z najmniejszym kosztem. Wybieramy c 35 i otrzymujemy ostatecznie rozwizanie cycle: 1, 4, 6, 3, 2, 5, 1 o całkowitym koszcie 14. Otrzymane rozwizanie jest jedn z dwóch optymalnych tras komiwojaera dla tego przykładu. W ogólnym przypadku nie mona jednak oczekiwa, e zawsze bdziemy mieli tyle szczcia, aby algorytm przybliony generował rozwizanie optymalne. Zaleca si, aby algorytm przybliony zastosowa n razy dla danego przypadku danych i wybra rozwizanie o najniszym koszcie całkowitym. Złoono czasowa algorytmu przyblionego Przy jednym uruchomieniu : O(n 2 ). Przy n uruchomieniach: O(n 3 ) Twierdzenie Algorytm aproksymacyjny dla problemu komiwojaera zrealizowany metod przez włczanie jest algorytmem aproksymacyjnym z C ograniczeniem wzgldnym równym 2. Czyli 2 *, gdzie C C * jest optymalnym cyklem dla danego grafu, a C jest cyklem wyznaczonym przez algorytm przybliony.
b) Algorytm Christofidesa Algorytm Christofidesa wykorzystuje pojcie minimalnego skojarzenia dokładnego. Def. Minimalne skojarzenie dokładne grafu G to podzbiór krawdzi tego grafu taki, e kady wierzchołek grafu G ma stopie jeden i suma wag wybranych krawdzi jest najmniejsza. Idea Algorytm w pierwszej fazie wyznacza minimalne drzewo rozpinajce grafu. Nastpnie, wierzchołki stopnia nieparzystego w drzewie s łczone krawdziami w pary tak, aby waga grafu indukowanego przez drzewo rozpinajce i krawdzie łczce wierzchołki stopnia nieparzystego w tym drzewie była moliwie najmniejsza. Wszystkie wierzchołki tak wyznaczonego grafu maj stopie parzysty, wic istnieje w nim cykl Eulera. W ostatnim kroku algorytmu cykl ten jest wyznaczany i przekształcany w cykl Hamiltona, który jest jednoczenie cyklem wynikowym. algorytm TSP_Christofides; T = minimalne drzewo rozpinajce grafu G ; V odd = zbiór wierzchołków nieparzystego stopnia w drzewie T ; M odd = minimalne skojarzenia dokładne w V odd ; CE = cykl Eulera w podgrafie indukowanym przez T M odd ; Przekształ cykl Eulera CE w cykl Hamiltona w grafie pełnym G;
Przykład Graf pełny G ma 11 wierzchołków. T = minimalne drzewo rozpinajce grafu G ; Wagi krawdzi zostały pominite. V odd = zbiór wierzchołków nieparzystego stopnia w drzewie T ; V odd = {1, 2, 3, 5, 6, 7, 8, 9, 11, 12 } Fakt: Zbiór V odd zawiera zawsze parzyst liczb wierzchołków. M odd = minimalne skojarzenia dokładne w V odd ;
Przegldamy zbiór wzłów nieparzystego stopnia i wyznaczamy minimalne skojarzenia midzy nimi, czyli łczymy w pary wierzchołki zbioru V odd tak, aby suma wag krawdzi łczcych wszystkie pary była moliwie najmniejsza. Gdyby liczba wierzchołków w zbiorze V odd była nieparzysta, to do zbioru M odd trzeba włczy najtasz krawd łczc nieskojarzony wierzchołek ze zbioru V odd z którym w wierzchołków V\V odd. Pytanie: Jak efektywnie wyznaczy minimalne skojarzenie dokładne dla zbioru wierzchołków V odd? CE = cykl Eulera w podgrafie indukowanym przez T M odd ; Taki cykl na pewno istnieje, gdy wszystkie wierzchołki grafu indukowanego przez zbiór T M odd maj stopie parzysty. CE :1-2 5-6 7 8 9 1 11 12 9 7 5 4 2 3-1
przekształ cykl Eulera CE w cykl Hamiltona w grafie pełnym G; Przekształcenie cyklu Eulera w cykl Hamiltona polega na usuniciu wielokrotnych wystpie tych samych wierzchołków z cyklu (oprócz wierzchołka startowego), przy czy zostawiane jest wystpienie o najniszym koszcie. W powyszym grafie usunite jest, na przykład, pierwsze wystpienie wierzchołka 5, bo widocznie daje to mniejsz warto cykl ni gdyby usunite zostało drugie wystpienie wierzchołka 5.
Złoono czasowa algorytmu Christofidesa: Drzewo rozpinajce T jestemy w stanie wygenerowa kosztem O(mlogn). Cykl Eulera na grafie indukowanym przez zbiór T M odd moemy wyznaczy kosztem O(n) stosujc przegldanie DFS. Przekształcenie cyklu Eulera w cykl Hamiltona mona zrealizowa kosztem O(n 2 ). Zakładajc, e minimalne skojarzenie dokładne na zbiorze V odd moemy wyznaczy kosztem O(n 3 ), koszt łczny algorytmu Christofidesa jest równie O(n 3 ). 2. Algorytmy aproksymacyjne dla problemu kolorowania grafu a) Problem kolorowania wierzchołkowego grafu Pojcia: Def. Przypisanie kolorów wierzchołkom grafu G, po jednym kolorze dla kadego wierzchołka tak, aby ssiednie wierzchołki otrzymały róne kolory nazywamy pokolorowaniem grafu G. Def. Pokolorowanie k kolorami nazywamy k- pokolorowaniem. Def. Graf jest k - barwny, jeli istnieje l- pokolorowanie grafu G, gdzie l k. Def. Najmniejsz warto k, dla której graf G jest k - barwny nazywamy liczb chromatyczn grafu G. Def. Zbiór wierzchołków barwliwoci. tego samego koloru nazywamy klas Def. Takie dwa podzbiory, w których adne dwa wierzchołki nie ssiaduj ze sob nazywamy podzbiorami niezalenymi.
Def. Podzbiór W nazywamy maksymalnym zbiorem niezalenym, jeli nie istnieje zbiór zawierajcy W i róny od W, który jest niezaleny. Def. Najwikszy zbiór niezaleny to taki maksymalny zbiór niezaleny, który ma najwicej wierzchołków sporód wszystkich zbiorów maksymalnych. Przykład Liczby w nawiasach kwadratowych oznaczaj numer koloru przyporzdkowanego wierzchołkowi w procesie kolorowania. Graf jest 3-barwny. Na rysunku wyej przykład 3-pokolorowania. Liczb chromatyczn grafu 3. {1, 6}, {2, 4}, {3, 5} - klasy barwliwoci Przykłady podzbiorów niezalenych: {1, 6}, {2, 4}. S to jednoczenie przykłady maksymalnych zbiorów niezalenych i najwikszych zbiorów niezalenych.
Problem kolorowaniu grafu Wejcie: G - graf nieskierowany, bez wag. Wyjcie: Liczba chromatyczna grafu. Problem kolorowania grafu jest równowany problemowi podziału zbioru wierzchołków grafu na minimaln liczb podzbiorów niezalenych: Wejcie: Graf nieskierowany, bez wag; Wyjcie: Wyznaczenie takiej minimalnej liczby k, dla której istnieje podział zbioru V wierzchołków grafu na k zbiorów niezalenych V 1, V 2,..., V k takich, e : V V = dla i j, i, j = 1,2,..., k oraz k V i i = V. i j a) Algorytm najwikszych zbiorów niezalenych =1 Idea Tworzony jest cig klas barwliwoci, które s najwikszymi zbiorami niezalenymi w podgrafach wyznaczonymi przez wierzchołki niepokolorowane. algorytm Max_IndependentSets; U=V; k=; while (U { k=k +1; AMIS(U, W); for (u W) f[u]= k; U=U \ W; } // f - funkcja kolorujca graf
Funkcja AMIS(U, W) wyznacza przybliony najliczniejszy podzbiór niezaleny W w grafie indukowanym przez zbiór podzbiór wierzchołków jeszcze niepomalowanych U. algorytm AMIS(U, W); // AMIS approximation of the maximum // independent set U 1 = U; W = ; while (U 1 ) { znale wierzchołek u o minimalnym stopniu w grafie indukowanym przez podzbiór U 1 ; W = W {u}; U 1 = U 1 \ {u}\{v U 1 : (v, u) E}; } Poczynajc od W =, zbiór W jest powikszany w kadym kroku o wierzchołek majcy najmniejszy stopie w podgrafie utworzonym przez wierzchołki nie ssiadujce z elementami zbioru W.
Przykład Algorytm dokładny zwraca wynik k = 3. Podział: {1, 6}, {2, 4}, {3, 5} (pokolorowanie zaznaczone w nawiasach kwadratowych). Algorytm przybliony daje wynik k = 4. Podział:{3, 4}, {1, 6}, {2}, {5} (pokolorowanie zaznaczone w nawiasach zwykłych ). Złoono czasowa algorytmu najwikszych zbiorów niezalenych: Mona pokaza, e algorytm ten ma złoono O(n 3 ). Twierdzenie Algorytm aproksymacyjny najwikszych zbiorów niezalenych dla problemu kolorowaniu grafu jest algorytmem aproksymacyjnym z ograniczeniem wzgldnym O(n/logn). C C ( / log n) O n *
b) Prosty algorytm sekwencyjny dla problemu kolorowania grafu (algorytm Welsha-Powella) W algorytmie tym bdziemy zakładali, e wierzchołki zostały ponumerowane w kolejnoci nierosncych stopni. Idea Wierzchołek v i jest dodawany do podgrafu indukowanego przez ju pomalowane wierzchołki v 1, v 2,..., v i-1, po czym okrela si nowe pokolorowanie wierzchołków v 1, v 2,..., v i-1, v i. Krok ten jest powtarzany dla i=1, 2,..., n, przy czym dla i=1 podgraf jest pusty. W kadym kroku staramy si uy moliwie najmniej kolorów. W algorytmie tym wierzchołek v i otrzymuje kolor o najniszym numerze. algorytm Welsha-Powella; f[v 1 ] = 1; for (i = 2; i<=n; i++) f[v i ] = min{k: k 1 i f[v j ] k dla kadego v j (1 j i) ssiadujcego z v i }; Zauwamy, e w prostym sekwencyjnym algorytmie, w momencie kolorowania wierzchołka v i, wierzchołki poprzedzajce v i zachowuj swoje kolory.
Przykład Prosty algorytm sekwencyjny daje 3-pokolorowanie (zaznaczone w nawiasach kwadratowych). Złoono czasowa prostego algorytmu sekwencyjnego: O(n 2 ). Twierdzenie Prosty algorytm sekwencyjny z załoenie uporzdkowania wierzchołków w kolejnoci nierosncych stopni jest algorytmem aproksymacyjnym z ograniczeniem wzgldnym nie przekraczajcym wartoci 1 max{ deg( vi )} +. Czyli + max{ deg( )} 1 i n oznacza stopie wierzchołka v i. C C * 1, gdzie deg(v i ) v i 1 i n
3. Minimalne pokrycie wierzchołkowe Def. Pokryciem wierzchołkowym grafu nieskierowanego G = V, E jest podzbiór V ' V takie, e jeli {u,v} jest krawdzi w grafie, to albo u V ' albo v V ', albo obydwa wierzchołki nale do V. Rozmiar pokrycia wierzchołkowego to liczba nalecych do niego wierzchołków. Problem pokrycia wierzchołkowego polega na znalezieniu w danym grafie nieskierowanym pokrycia wierzchołkowego minimalnego rozmiaru. Wejcie: Graf G = <V, E> nieskierowany bez wag Wyjcie: Minimalne pokrycie wierzchołkowe grafu G a) Algorytm zachłanny Idea Wierzchołki grafu s sortowane nierosnco ze wzgldu na ich stopie. Do pokrycia grafu algorytm wybiera te wierzchołki, które aktualnie posiadaj najwyszy stopie, czyli posiadaj najwiksz ilo połcze z innymi wierzchołkami. Po kadym wybranym wierzchołku, uaktualnia si stopnie wierzchołków połczonych z wybranym wierzchołkiem, zmniejszajc je o jeden. W kolejnym kroku algorytmu rozwaane s wierzchołki, które nie zostały wybrane w poprzednich krokach. Algorytm zatrzymuje si, gdy zbiór wybranych wierzchołków pokrywa V.
algorytm Greedy-Vertex-Cover; V = ; C = ; W = V; while (C V { v = wierzchołek o najwikszym stopniu w zbiorze W ; V = V {v}; C = C {v}; W = W {v}; } return V ; Przykład G: for (u Adj(v)) { C = C {u}; deg(u) = deg(u)-1; } v = 3 ; V = {3}; C = {3, 2, 5, 6, 7}; W = {1, 2, 4, 5, 6, 7} v = 2 ; V = {2, 3}; C = {1, 3, 2, 5, 6, 7}; W = {1, 4, 5, 6, 7}
v = 1; V = {1, 2, 3}; C = V; W = {4, 5, 6, 7} Dla przykładowego grafu algorytm Greedy-Vertex-Cover zwrócił pokrycie złoone z trzech wierzchołków. Optymalne pokrycie dla tego grafu ma rozmiar 2. V = {1, 3}. Złoono czasowa algorytm Greedy_Vertex_Cover: Jeeli wierzchołek o aktualnie najwyszym stopniu bdziemy wybierali kosztem O(logn) (np. przy pomocy kopca), to łczny koszt algorytmu wyniesie O(m + nlogn). Twierdzenie Liczba wierzchołków wybranych w algorytmie Greedy-Vertex-Cover w stosunku do wyniku optymalnego jest co najwyej dwa razy wiksza.
b) Usprawniony algorytmu Greedy-Vertex-Cover Usprawnienie polega na poszukiwaniu wierzchołków wiszcych grafu, czyli takich których stopie jest równy 1 (posiadaj tylko 1 krawd). W przypadku znalezienia takiego wierzchołka, jego ssiad (wierzchołek połczony z nim krawdzi) automatycznie staje si jednym z wierzchołków pokrywajcych graf. Jeli w danym momencie algorytmu, nie istnieje wierzchołek posiadajcy stopie równy 1, to algorytm wyszukuje i dodaje do listy wierzchołków wiszcych wierzchołek o najwikszym stopniu (czyli tak jak to robi poprzedni algorytm). Przykład G: Wierzchołki wiszce to 7 i 4. Do pokrycia dodawani s ssiedzi tych wierzchołków: V = {3, 1}
C = {1, 4, 3, 2, 5, 6, 7}; Poniewa C = V, to algorytm si koczy. Złoono czasowa usprawnionego algorytmu Greedy_Vertex_Cover: Wierzchołki wiszce jestemy w stanie znale i przetworzy (tj. włczy ich ssiadów do wyników i zaktualizowa zbiory V, C i W, a take stopnie wierzchołków) kosztem O(n+m). Zatem łczny koszt algorytmu wyniesie O(m + nlogn). Twierdzenie Liczba wierzchołków wybranych w usprawnionym algorytmie Greedy-Vertex-Cover w stosunku do wyniku optymalnego jest co najwyej dwa razy wiksza.