Algorytmika Problemów Trudnych
Wykład 4
Tomasz Krawczyk
krawczyk@tcs.uj.edu.pl
Kraków, semestr letni 2019/20
I Algorytmy rozgałęziające się.
I Metoda analizy mierz i zwyciężaj (Measure & Conquer):
I Maksymalny zbiór niezależny.
I Minimalny zbiór rozcyklający.
Metoda mierz i zwyciężaj
Metoda mierz i zwyciężaj:
I cel: polepszenie analizy algorytmów rozgałęziających się,
I sposób: stosujemy bardziej wyrafinowane miary do mierzenia wielkości podzadań (zazwyczaj: rozmiar podzadania to liczba wierzchołków grafu).
Makysmalna klika (bądź minimalne pokrycie wierzchołkowe)
Spostrzeżenie. Dla każdego wierzchołka v stopnia ≥ 2:
I albo v jest (wtedy żaden wierzchołek z N(v ) nie jest) w maksymalnym zbiorze niezależnym,
I albo v nie jest w maksymalnym zbiorze niezależnym.
MaxIndSet(G ):
I if exists v ∈ V with d (v ) = 0 return 1 + maxIndSet(G \ v ), I if exists v ∈ V with d (v ) = 1 return 1 + maxIndSet(G \ N[v ]), I if d (v ) 6 2 for all v ∈ V : solve polynomially in n,
I if exist v ∈ V with d (v ) ≥ 3:
I choose a vertex v of maximum degree in G ,
I return max(MaxIndSet(G \ v ), 1 + maxIndSet(G \ N[v ]))
Makysmalna klika (bądź minimalne pokrycie wierzchołkowe)
Spostrzeżenie. Dla każdego wierzchołka v stopnia ≥ 2:
I albo v jest (wtedy żaden wierzchołek z N(v ) nie jest) w maksymalnym zbiorze niezależnym,
I albo v nie jest w maksymalnym zbiorze niezależnym.
MaxIndSet(G ):
I if exists v ∈ V with d (v ) = 0 return 1 + maxIndSet(G \ v ), I if exists v ∈ V with d (v ) = 1 return 1 + maxIndSet(G \ N[v ]), I if d (v ) 6 2 for all v ∈ V : solve polynomially in n,
I if exist v ∈ V with d (v ) ≥ 3:
I choose a vertex v of maximum degree in G ,
I return max(MaxIndSet(G \ v ), 1 + maxIndSet(G \ N[v ])) Wektor rozgałęzień algorytmu: (1, 4), co daje czas działania O∗(1.3803n), gdyż τ (1, 4) = 1.3803. Prosta analiza uzyskana metodą mierz i zwyciężaj daje oszacowanie O∗(1.3248n) (wynika z τ (1, 5) = 1.3248).
Przyjmujemy miarę G jako sumaryczną wagę wszystkich wierzchołków w G , gdzie:
I wierzchołki o stopniu 0 i stopniu 1 ważą 0 (i tak się ich zaraz pozbędziemy),
I wierzchołki o stopniu 2 ważą 12 (czekają do końca, jak ich jest dużo, to szybko kończymy),
I wierzchołki o stopniu ≥ 3 ważą 1 (te sprawiają kłopot).
Przed rozpoczęciem algorytmu miara instancji 6 n.
Analiza algorytmu MaxIndSet
Wektory rozgałęzień w algorytmie (pokażemy na kolejnych slajdach):
I są typu (a, b) gdzie, a + b ≥ 6, a ≥ 1, b ≥ 1,
I widać, że dla każdego rozgałęzienia (a, b) mamy τ (a, b) 6 τ (1, 5), I konkludując, czas działania algorytmu jest ograniczony od góry przez
c · (τ (1, 5))n= c · (1.3248n).
Analizę tego algorytmu można wzmocnić (różne wagi dla różnych stopni) do O∗(1.2905)
Rozpatrzmy dwa możliwe typy rozgałęzień:
I rozgałęzienie na wierzchołku stopnia ≥ 4, I rozgałęzienie na wierzchołku stopnia = 3.
Analiza algorytmu MaxIndSet
Rozpatrzmy typ I rozgałęzienia: na wierzchołku v stopnia ≥ 4.
Mamy dwa podzadania:
I lewe– na podgrafie G − v , I prawe– na podgrafie G − N(v ).
Zmiana miar podzadań w stosunku do miary G :
I wierzchołka w o wadze 1 w G nie ma w podzadaniu lewym ani w podzadaniu prawym (lewe i prawe ‘ważą’ mniej o 1 w stosunku do G ), I jeżeli u waży 1 w G , to u nie ma w prawym podzadaniu (podzadanie
prawe ‘waży’ przynajmniej o 1 mniej w stosunku do G ),
I jeżeli u waży 12 w G , to u waży 0 w prawym podzadaniu oraz u nie ma w prawym podzadaniu (rozmiar lewego i prawego podzadania zmniejsza się o 12).
Konkludując, suma spadku miar podzadania lewego oraz prawego wynosi co najmniej |N(v )| + 2, czyli ≥ 6.
Rozpatrzmy typ II rozgałęzienia: na wierzchołku v stopnia = 3. Oznacza to, że stopień każdego wierzchołka w G jest 6 3.
Łatwo wykazać, że suma spadków miar prawego i lewego podzadania wynosi co najmniej 5 (dowód jak powyżej).
Aby zyskać jeszcze 1 rozważamy sąsiadów zbioru N[v ], czyli N(N[v ]) (wierzchołki w dystansie 2 od v ).
I jeżeli |N(N[v ])| ≥ 2, to w prawym podzadaniu wierzchołki z N(N(v )) tracą po 12,
I pozostaje sprawdzić przypadki |N(N[v ])| = 1 bądź |N(N[v ])| = 0, co pozostawiamy jako ćwiczenie.
Minimalny zbiór rozcyklający
W problemie minimalnego zbioru rozcyklającego chcemy znaleźć najmniejszy zbiór przecinający wszystkie cykle w G (którego usunięcie ‘rozcykla’ graf G ).
Równoważnie: chcemy znaleźć największy zbiór X taki, że X jest lasem.
Łatwo możemy rozwiązać problem w czasie O∗(2n).
Czy można szybciej? np. O∗((2 − )n) dla pewnego > 0?
Zaproponujemy algorytm rozgałęziający się o złożoności O∗(1.8907n)
Stan algorytmu w każdym węźle drzewa przeszukiwań:
I F – zbiór wybranych wierzchołków do lasu,
I w F wyróżnony jest dokładnie jeden wierzchołek, nazwijmy go aktywnym, i oznaczmy go przez t.
Równoważna reprezentacja – każdą spójną składową indukowaną przez F możemy ‘ściągnąć’ do punktu i usunąć wierzchołki z G , które mają dwie krawędzie do jednego ze ‘ściągniętych’ punktów. Wtedy:
I F – zbiór niezależny (wierzchołki z F ),
I w F wyróżnony jest dokładnie jeden wierzchołek, nazwijmy go aktywnym, i oznaczmy go przez t.
minimalny zbiór rozcyklający
W jednym kroku algorytmu:
I w pierwszej kolejności wyrzucamy z grafu wierzchołki stopnia 0 oraz 1, (wkładamy je do zbioru F )
I jeżeli t nie jest izolowany, wybieramy jeden z wierzchołków v przyległych do t i rozgałęziamy się: albo dodajemy v do F albo usuwamy go z grafu (rozgałęzienie typu II),
I jeżeli t jest izolowany, zamieniamy go na inny z F , który ma jakiś sąsiadów,
I jeżeli wszystkie wierzchołki z F są izolowane, wybieramy dowolny wierzchołek v z V − F i rozgałęziamy się: usuwamy v z grafu bądź dodajemy v do F i czynimy go aktywnym (rozgałęzienie typu I).
Poprawność algorytmu: dla każdego v rozpatrujemy przypadki: albo v ∈ F albo v /∈ F , chyba że na wczesniejszym etapie wiadomo, że dodanie v do F utworzyłoby cykl. A zatem jeżeli X to pewien maksymalny las w G , to istnieje ścieżka w drzewie rozgałęzień prowadząca do F = X .
Dla wierzchołka v ∈ V \ F przyległego do t definiujemy jego stopień rozszerzony jako liczbę wierzchołków z V \ F grafu przyległych do v bądź osiągalnych z v ścieżką długości 2 przechodzącą przez wierzchołek z F różny od t.
Minimalny zbiór rozcyklający
Miara (ważenie) grafu G :
I wierzchołki z F otrzymują wagę 0,
I wierzchołki z V − F przyległe do t otrzymują wagę 1, I pozostałe wierzchołki z V − F otrzymują wagę 1.5.
Miara µG to sumaryczna miara po wszystkich wierzchołkach z G . Początkowo µ(G ) 632n.
Rekurencja:
I dążymy do szacowania T (µG) 6 T (µG− 2.5) + T (µG − 1), I dla wektora rozgałęzień (1, 2.5) mamy τ (1, 2.5) = 1.5290, I w ogólności dostaniemy, że liczba liści jest ograniczona przez
T (µG) 6 O∗(1.52901.5n) = O∗(1.8907n),
I nie możemy sobie pozwolić na wektor rozgałęzień (1, 2), gdyż wtedy (τ (1, 2))1.5= (1.6181)1.5> 2.
Minimalny zbiór rozcyklający
Rozgałęzienia typu I (wszystkie wierzchołki z F są izolowane): wybieramy wierzchołek v z V − F i rozgałęziamy się:
I pierwsze podzadanie: usuwamy v z G ,
I drugie podzadanie: dodajemy v do F i ustawiamy t = v . Nidobór wzgledem zadania początkowego:
I pierwsze podzadanie: niedobór 1.5 (tyle ważył v ),
I drugie podzadanie: niedobór co najmniej 2.5 (v ważył 1.5, który teraz jako element z F waży 0, dodatkowo co najmniej dwaj sąsiedzi v tracą 12), I wektor rozgałęzień nie gorszy niż (1.5, 2.5), czyli OK.
Rozgałęzienie typu II. Założenie: v przyległy do t ma stopień rozszerzony przynajmniej 3. Rozgałęziamy się:
I pierwsze podzadanie: usuwamy v z G
I drugie podzadanie: dodajemy v do F (i ściągamy komponent aktywny).
Nidobór wzgledem zadania początkowego:
I pierwsze podzadanie: niedobór 1 (tyle ważył v jako sąsiad t),
I drugie podzadanie: niedobór co najmniej 2.5 (v ważył 1, który teraz jako element z F waży 0, dodatkowo każdy rozszerzony sąsiad jeżeli ważył 1 (przylegał do t), waży 0 gdyż jest usuwany z grafu), jeżeli ważył 1.5 to teraz waży 1.
I wektor rozgałęzień nie gorszy niż (1, 2.5), czyli OK. Analiza nie przechodzi dla wierzchołków o stopniu rozszerzonym 2.
Minimalny zbiór rozcyklający
Rozgałęzienie typu II. Założenie: v przyległy do t ma stopień rozszerzony = 2.
Rozgałęziamy się:
I pierwsze podzadanie: dodajemy v do F
I drugie podzadanie: dodajemy dwóch sąsiadów rozszerzonych do F (i ściągamy komponent aktywny).
Poprawność. Jesteśmy w węźle drzewa rozgałęzień prowadzącym do pewnego maksymalnego lasu. Jeżeli v ma co najwyżej dwóch sąsiadów rozszerzonych, to:
I albo v jest w jakimś maksymalnym lesie,
I albo dwóch sąsiadów maksymalnych w1, w2wierzchołka v jest w jakimś maksymalnym lesie.
Dowód. Jeżeli tylko w1 jest w maksymalnym lesie, to zauważmy, że po dołożenie do X wierzchołka v sprawia, że wszystkie cykle grafu zawierają i v i w1. Tym samym, zbiór (X − w1) + v jest również maksymalnym lasem w G . Jeżeli v ma stopień rozszerzony = 1, to v jest w pewnym maksymalnym zbiorze drzewiastym (nie rozgałęziamy się)
Rozgałęzienie typu II. Założenie: v przyległy do t ma stopień rozszerzony = 2.
Rozgałęziamy się:
I pierwsze podzadanie: dodajemy v do F
I drugie podzadanie: dodajemy dwóch sąsiadów rozszerzonych do F (i ściągamy komponent aktywny).
Nidobór wzgledem zadania początkowego:
I pierwsze podzadanie: niedobór przynajmniej 2 (v ważył 1, jego sąsiedzi rozszerzeni spadają z 1 do 0 lub z 1.5 do 1),
I drugie podzadanie: niedobór co najmniej 2 (waga sąsiadów rozszerzonych spada do 0),
I wektor rozgałęzień (2, 2), nie jest gorszy niż (1, 2.5), czyli jest OK.