Temat: Algorytmy aproksymacyjne (przyblione) cz. I. 1. Algorytmy aproksymacyjne Majc do rozwizania trudny obliczeniowo problem, moemy wybra jedno z dwóch nastpujcych podej: Zastosowa technik algorytmów z powrotami, która znacznie redukuje nieefektywno pełnego przegldu. Taka ulepszona technika przeszukiwania przestrzeni rozwiza gwarantuj, i otrzymujemy rozwizanie dokładne (optymalne), ale w najmniej korzystnym przypadku danych algorytmy takie mog wykonywa liczb operacji elementarnych rosnc wykładniczo. Staj si wówczas nieuyteczne dla rzeczywistych danych. Zastosowa przyblion, ale szybk (czyli działajc w czasie wielomianowym) metod, która nie we wszystkich przypadkach generuje rozwizanie optymalne, jednake dla wikszoci danych dostarcza rozwizania przyblione, które le do blisko rozwiza optymalnych. Algorytm umoliwiajcy otrzymanie prawie optymalnego rozwizania jest nazywany algorytmem aproksymacyjnym (przyblionym). 2. Oszacowanie jakoci algorytmów aproksymacyjnych a) Ograniczenie wzgldne Załómy, e mamy do czynienia z problemem optymalizacyjnym, w którym kade potencjalne rozwizanie ma dodatni koszt i chcemy znale rozwizanie prawie 1
optymalne. Zalenie od problemu rozwizanie optymalne moe by zdefiniowane jako to o maksymalnym moliwym koszcie lub o minimalnym. Zadanie polega wic na maksymalizacji albo na minimalizacji. Mówimy, e algorytm aproksymacyjny dla danego problemu ma ograniczenie wzgldne ρ ( n), jeli dla dowolnych danych wejciowych rozmiaru n koszt C otrzymany jako rozwizanie konstruowane przez ów algorytm, ρ n przez koszt szacuje si z dokładnoci do czynnika ( ) C rozwizania optymalnego: max C C, ρ( n) C C Dla problemu maksymalizacji 0 < C C, a współczynnik C /C okrela, ile razy koszt rozwizania optymalnego jest wikszy od kosztu rozwizania przyblionego. Dla problemu minimalizacji 0 < C C, a współczynnik C /C okrela, ile razy koszt rozwizania przyblionego jest wikszy od kosztu rozwizania optymalnego. Ograniczenie wzgldne algorytmu aproksymacyjnego nigdy nie jest mniejsze ni 1, poniewa nierówno C / C < 1 implikuje C / C > 1. Ograniczeniem wzgldnym algorytmu optymalnego jest 1, a algorytm o duym ograniczeniu wzgldnym moe da rozwizanie znacznie gorsze ni optymalne. 2
b) Ograniczenie błdu wzgldnego Czasami wygodniej jest operowa pojciem błdu wzgldnego. Dla dowolnych danych wejciowych błd wzgldny definiuje si jako C C C Błd wzgldny jest zawsze nieujemny. Dla algorytmu aproksymacyjnego ε ( n) jest ograniczeniem błdu wzgldnego, jeli C C ε( n) C Dla problemu minimalizacyjnego prawdziwa jest równo: ( n) = ( ρ( n) 1) ρ( n) ε / Dla problemu maksymalizacyjnego prawdziwa jest nierówno: ε ( n) ρ( n) 1 (poniewa ( n) 1 ρ ) Dla wielu problemów skonstruowano algorytmy aproksymacyjne o stałym, niezalenym od n ograniczeniu wzgldnym. Dla innych problemów informatykom nie udało si zaprojektowa adnego wielomianowego algorytmu aproksymacyjnego o stałym ograniczeniu wzgldnym. Ograniczenie wzgldne jest wówczas funkcj rosnc wraz z rozmiarem danych wejciowych n. c) Schemat aproksymacji Dla niektórych problemów NP-zupełnych istniej algorytmy aproksymacyjne, za pomoc których mona uzyskiwa coraz mniejsze ograniczenie wzgldne kosztem duego czasu 3
oblicze. Schemat aproksymacji dla problemu optymalizacyjnego to algorytm aproksymacyjny, który pobiera na wejciu nie tylko dane opisujce problem, ale take warto ε>0 tak, e dla kadego ustalonego ε schemat ten jest algorytmem aproksymacji o ograniczeniu błdu wzgldnego równym ε. 3. Algorytm aproksymacyjny dla problemu komiwojaera oparty na technice włczania WP: Graf G = V, E, w - pełny, zorientowany z dodatnimi wagami; V - zbiór wierzchołków, E - zbiór krawdzi, w - funkcja wag grafu. WK: Najtaszy w sensie łcznej sumy wag cykl Hamiltona w grafie. 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. 4
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: c = w + w w ij if 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. fj ij 5
Pseudokod algorytmu włczania // Inicjalizacja V T ={s}; E T ={(s, s)}; w ss =0; koszt =0; 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) }; } V T T = V T T { f }; koszt=koszt + c th ; for x V \ V T 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 0 w przeciwnym przypadku. 6
Przykład 4 W 1 0 2 4 345 = 439 528 6 3 1 3 0 17 90 46 88 2 93 77 0 80 88 18 3 13 42 36 0 33 46 4 33 21 16 56 0 92 5 9 16 28 7 25 0 6 Inicjalizacja: s = 1 dist: -, 3, 93, 13, 33, 9, cycle : 1, 0, 0, 0, 0, 0 koszt: 0 Iteracja: I krok f = 3 - wierzchołek o maksymalnej wartoci dist koszt:= koszt + c 11 =koszt + w 13 +w 31 =0 + 93 + 45 =138 dist: -, 3, -, 13, 16, 9, cycle: 3, 0, 1, 0, 0, 0, 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, 0, 5, 0, 1,0, cykl: 1-3-5-1 7
1 0 3 93 13 33 9 2 4 0 77 42 21 16 345 17 0 36 16 28 W = 439 90 80 0 56 7 528 46 88 33 0 25 6 3 88 18 46 92 0 1 2 3 4 5 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{0, 76, 44}=137 + 0 =137 dist: -, 3, -, -, -, 7 cycle: 4, 0, 5, 3, 1, 0, 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, 104, 0 }= 137-55 = 82 dist: -, 3, -, -, -, - cycle: 4, 0, 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 = 104 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 104. 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 8
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 ograniczeniem wzgldnym równym 2. C Czyli 2 C, gdzie C jest optymalnym cyklem dla danego grafu, a C jest cyklem wyznaczonym przez algorytm przybliony. 9
5. Algorytmy aproksymacyjne dla problemu kolorowania grafu Pojcia: 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. Pokolorowanie k kolorami nazywamy k- pokolorowaniem. Graf jest k - barwny, jeli istnieje l- pokolorowanie grafu G, gdzie l k. Najmniejsz warto k, dla której graf G jest k - barwny nazywamy liczb chromatyczn grafu G. Zbiór wierzchołków tego samego koloru nazywamy klas barwliwoci. Takie dwa podzbiory, w których adne dwa wierzchołki nie ssiaduj ze sob nazywamy podzbiorami niezalenymi. Podzbiór W nazywamy maksymalnym zbiorem niezalenym, jeli nie istnieje zbiór zawierajcy W i róny od W, który jest niezaleny. Najwikszy zbiór niezaleny to taki maksymalny zbiór niezaleny, który ma najwicej wierzchołków sporód wszystkich zbiorów maksymalnych. Oznaczenia: G /W - podgraf grafu G indukowany przez zbiór W V, tzn. G /W = <W, E'>, gdzie E' zawiera te krawdzie grafu G, których oba koce nale do W. 10
Przykład 5 1[1] 6[1] 2[2] 5[3] 3[3] 4[2] 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 11
Problem kolorowaniu grafu WP: G - graf nieskierowany, bez wag. WK: Liczba chromatyczna grafu. Problem kolorowania grafu jest równowany problemowi podziału zbioru wierzchołków grafu na minimaln liczb podzbiorów niezalenych: WP: Graf nieskierowany, bez wag WK: 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 =1 =. a) Algorytm najwikszych zbiorów niezalenych Idea Tworzony jest cig klas barwliwoci, które s najwikszymi zbiorami niezalenymi w podgrafach wyznaczonymi przez wierzchołki niepokolorowane. 12
Algorytm najwikszych zbiorów niezalenych U =V; k=0; while (U ) { k=k +1; ()MAXIND(U, W);// znale najliczniejszy zbiór niezaleny // W w pografie G /U for u W f[u]=k; // f - funkcja kolorujca graf U=U \ W; } () Znajdowanie przyblionego najliczniejszego podzbioru niezalenego w grafie G MAXIND(U, W) U 1 =U; W = ; while (U 1 ) { znale wierzchołek u o minimalnym stopniu w G /U1 ; 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. 13
Przykład 6 1(2)[1] 6(2)[1] 2(3)[2] 5(4)[3] Algorytm dokładny daje wynik k = 3. Podział:{1, 6}, {2, 4}, {3, 5} (pokolorowanie zaznaczone w[]) Algorytm przybliony daje wynik k = 4. Podział:{3, 4}, {1, 6}, {2}, {5} (pokolorowanie zaznaczone w ( )) Złoono czasowa algorytmu najwikszych zbiorów niezalenych, wykorzystujcego przyblione generowanie najliczniejszego podzbioru niezalenego. 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 4(1)[2] ( / logn) O n 3(1)[3] 14
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 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 algorytmie sekwencyjnym, w momencie kolorowania wierzchołka v i, wierzchołki poprzedzajce v i zachowuj swoje kolory. 15
Przykład 7 3[3] 4[3] 1[1] 2[2] 5[2] Wierzchołki grafu s ponumerowane w kolejnoci nierosncych stopni. Prosty algorytm sekwencyjny daje 3-pokolorowanie (zaznaczone w []): 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 )}. C Czyli + max{ deg( v i )} C 1 i n 6[1] 1 i n 1 (deg(v i ) - stopie wierzchołka v i ) 16