Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ALGORYTMY I STRUKTURY DANYCH WYKŁAD 11 Algorytmy na grafach - metoda zachłanna Grażyna Mirkowska PJWSTK, semestr letni 2003.

Podobne prezentacje


Prezentacja na temat: "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 11 Algorytmy na grafach - metoda zachłanna Grażyna Mirkowska PJWSTK, semestr letni 2003."— Zapis prezentacji:

1

2 ALGORYTMY I STRUKTURY DANYCH WYKŁAD 11 Algorytmy na grafach - metoda zachłanna Grażyna Mirkowska PJWSTK, semestr letni 2003

3 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach2 Plan wykładu 4 Idea algorytmów zachłannych 4 Problem drzew rozpinających –Chodzenie po grafie ze stosem i kolejką –Algorytm Kruskala 4 Problem najkrótszych ścieżek –Algorytm Dijksty

4 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach3 Na czym to polega? W każdym kroku, w którym trzeba dokonać wyboru, wybierać zawsze rozwiązanie lokalnie optymalne, takie które w danym momencie działania algorytmu jest najlepsze. ZASADA ZASADA Greedy algorithms

5 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach4 Drzewa rozpinające Niech G będzie dowolnym grafem niezorientowanym. Drzewem rozpinającym grafu G = nazywamy graf G* = taki, że (1) V* = V, E* E (2) G* jest drzewem (tzn. grafem spójnym i acyklicznym). Graf i jego drzewa rozpinające

6 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach5 Jak znaleźć drzewo rozpinające grafu (1)? BFS BFS Włóż do kolejki wybrany wierzchołek grafu i zamarkuj go. Dopóki kolejka nie jest pusta 1. Weź pierwszy element z kolejki i dopisz do kolejki wszystkie wierzchołki z nim incydentne, o ile nie były zamarkowane i zamarkuj je. 2. Wypisz krawędzie, po których przeszedłeś do nowych wierzchołków. 3. Usuń pierwszy element z kolejki. a b c d e f abf ce a Wynik: abab bcbc fbcefce d cdcd ed d afaf bebe

7 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach6 Jak znaleźć drzewo rozpinające grafu(2)? DFS DFS Włóż na stos wybrany wierzchołek grafu i zamarkuj go. Dopóki stos nie jest pusty : 1. Weź element ze szczytu stosu. 2. Usuń ze stosu ten element. 3. Dopisz do stosu wszystkie wierzchołki z nim incydentne, których jeszcze nie zamarkowano, a dopisane wierzchołki zamarkuj. 4. Wypisz krawędzie, po których przeszedłeś do wierzchołków zamarkowanych w p.3. a b c d e f Wynik Wynik: a abab b f bb c e afaf fcfc b c d eded b c fefe

8 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach7 Minimalne drzewo rozpinające Niech będzie dany graf G = spójny niezorientowany, skończony i niech c : E R + będzie funkcją kosztu określoną na krawędziach tego grafu. Problem Dla danego skończonego grafu G oraz danej funkcji kosztu c, znaleźć minimalne drzewo rozpinające, tzn. takie drzewo rozpinające grafu G, że suma kosztów jego krawędzi e T c (e) jest najmniejsza.

9 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach8 Przykład: sieć wodociągowa Jakieś drzewo rozpinające Minimalne drzewo rozpinające

10 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach9 Lemat Niech G = będzie grafem spójnym, skończonym i niech c będzie jego funkcją kosztu. Niech d 1 =, d 2 =,......, d k = będzie danym lasem rozpinającym G {V i : 1 i k}= V T i E dla 1 i k V i V j = dla i j d i - drzewo Niech e = (v,w) będzie krawędzią o minimalnym koszcie, która nie należy do żadnego z drzew d i. Nie istnieje drzewo rozpinające grafu G, takie że e T* oraz ma najmniejszy koszt wśród drzew rozpinających zawierających wszystkie T i. ViVi v w w v Ale c(v,w) > c(v,w)

11 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach10 Algorytm Kruskala Utworzyć kolejkę priorytetową PQ z wszystkimi krawędziami grafu, uporządkowanymi ze względu na koszt. Utworzyć początkowy podział Po Po zbioru V jako rodzinę jednoelementowych zbiorów {x}, gdzie x V (stanowiący las początkowy). Przeglądać kolejno elementy kolejki i jeżeli końce rozważanej krawędzi należą do różnych zbiorów podziału, to krawędź dołączyć do tworzonego drzewa, a zbiory podziału połączyć. Jeśli drzewo rozpinające ma mieć koszt minimalny i ma zawierać dany las drzew, to musi też zawierać krawędź e, której koszt jest najmniejszy wśród wszystkich krawędzi nie należących do żadnego z drzew.

12 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach11 Przykład (1,2) 2. (1,4) 3.(2,3) 4. (1,3) 5.(4,5) 6. (3,5) 7. (1,5) 7. (6,7) 8. (1,6) 10. (7,4) 15. (4,3) 1| 2| 3| 4| 5| 6| 7 1, 2| 3| 4| 5| 6| 7 1, 2, 4| 3| 5| 6| 7 1, 2, 3, 4| 5| 6| 7 1, 2, 3, 4, 5| 6| 7 1, 2, 3, 4, 5| 6, 7 1, 2, 3, 4, 5, 6, 7 Kolejka Priorytetowa Podział

13 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach12 Algorytm Zakładam, że 1. pq jest kolejką priorytetową wszystkich krawędzi danego grafu G =, 2. P jest początkowym podziałem zbioru V, 3. T pustym stosem (będą tam krawędzie drzewa). { while (not empty (pq) and card(P)>1) do kr := min(pq); pq := delmin(pq); A := Find(P,kr.początek); B := Find(P,kr.koniec); if A B then P := Union(P,B,A); T := push(T,kr) fi od } Find (P,x) = ten zbiór podziału P do którego należy x Union(P,B,A) = podział powstający z P przez połączenie zbiorów A i B.

14 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach13 Jak to zaimplementować? Koszt utworzenia kolejki priorytetowej – O(m lg m) Koszt 2m operacji Find O(lg(n)) Koszt m operacji Union O(1) Razem Razem O(m lg n) Drzewa z balansowaniem i kompresją ścieżek Struktura Find-Union B AAA

15 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach14 Problem ścieżek Dany jest graf G = i jego funkcja kosztu c : E R +. Znaleźć najkrótsze drogi od ustalonego wierzchołka (źródła) do wszystkich innych wierzchołków Suma kosztów krawędzi leżących na tej drodze jest najmniejsza

16 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach15 Metoda Dijkstry W kolejnych etapach algorytmu zbiór wierzchołków osiągalnych ze źródła jest powiększany o wierzchołki incydentne z ostatnio dołączonymi. Zawsze staramy się by dołączać te wierzchołki, których osiągnięcie wymaga najmniejszego kosztu (które znajdują się najbliżej zródła).

17 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach16 Struktura danych Tablica d (1: n) d[i] = długość najkrótszej ścieżki miedzy źródłem s, a wierzchołkiem i. Na początku d[i] = c(s,i), jeśli (s,i) E, d[i] = + w p.p. Tablica P(1:n) P[i] = ojciec wierzchołka i na najkrótszej ścieżce od s do i. Zbiór wierzchołków S1 osiągalnych z s. Zbiór S2 wierzchołków osiągalnych z S1, S2 = {y : istnieje x S1, że (x,y) E}. Zbiór wierzchołków S3, których jeszcze nie sklasyfikowano. Na początku S1 = {s}. Na początku S3 = V-{s}.

18 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach17 Przykład AB C DE F G HI A B C D E F G H I J d P A S1A S2 F G B 0295 AAA S1A F G B C 6 B

19 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach18 c.d. przykładu AB C DE F G HI S1A F G B S2 C A B C D E F G H I J d P 0295 AAA 6 B I H GG 107 S1A F G B C I H S2 D 8 C

20 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach19 Cd. przykładu A B C D E F G H I J d P 0295 AAA 6 BGG 107 S1A F G B C IH S2 D 8 C AB C DE F G HI Itd

21 maj 2003G. Mirkowska, ASD_11 Algorytmy na grafach20 Algorytm { x := s; while niepusty (S3) do Dla wszystkich wierzchołków y incydentnych z x do case y S2 if d(x) +c(x,y)


Pobierz ppt "ALGORYTMY I STRUKTURY DANYCH WYKŁAD 11 Algorytmy na grafach - metoda zachłanna Grażyna Mirkowska PJWSTK, semestr letni 2003."

Podobne prezentacje


Reklamy Google