ALGORYTMY I STRUKTURY DANYCH

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

DOMINOWANIE W GRAFACH Magdalena Lemańska.
Grafy spełniające nierówność Γ(G) < IR(G)
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
ALGORYTMY GRAFOWE.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Grafy inaczej, czyli inne modele grafów
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
Algorytm Dijkstry (przykład)
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Ciągi de Bruijna generowanie, własności
-skeletony w przestrzeniach R 2 i R 3 Mirosław Kowaluk Wydział Matematyki, Informatyki i Mechaniki Uniwersytet Warszawski.
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 5. Skojarzenia – ciąg dalszy
WYKŁAD 2. Kolorowanie wierzchołków
WYKŁAD 7. Spójność i rozpięte drzewa
WYKŁAD 1. Grafy są wokół nas. Pojęcia wstępne.
WYKŁAD 4. Skojarzenia Skojarzenie w grafie G to niezależny zbiór krawędzi (rozłączne, bez wspólnych konców). Skojarzenie M w G traktujemy jak podgraf.
WYKŁAD 8. Siła spójności Wierzchołek v nazywamy wierzchołkiem cięcia grafu G, gdy podgraf G-v ma więcej składowych spójności niż G. Krawędź e nazywamy.
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
GRAFY PLANARNE To grafy, które można narysować na płaszczyźnie tak, by krawędzie nie przecinały się (poza swoimi końcami). Na przykład K_4, ale nie K_5.
WYKŁAD 4. Skojarzenia Skojarzenie w grafie G to niezależny zbiór krawędzi (rozłączne, bez wspólnych konców). Skojarzenie M w G traktujemy jak podgraf G.
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Algorytmy grafowe Reprezentacja w pamięci
dr Anna Kwiatkowska Instytut Informatyki
ALGORYTMY I STRUKTURY DANYCH
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Minimalne drzewa rozpinające
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Graf - jest to zbiór wierzchołków, który na rysunku przedstawiamy za pomocą kropek oraz krawędzi łączących wierzchołki. Czasami dopuszcza się krawędzie.
Algorytmy i struktury danych
Geometria obliczeniowa Wykład 3
Reprezentacja grafów i operacje na grafach na przykładzie algorytmu Dijkstry i algorytmu na odnajdywanie Silnych Spójnych Składowych Temat Opracowali:
Rodzaje, przechodzenie grafu
ALGORYTMY I STRUKTURY DANYCH
Algorytm Dijkstry 1 Zbiory: T - zbiór wierzchołków
Algorytmy i Struktury Danych
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
PLANARNOŚĆ i KOLOROWANIE MAP. Problem Jaka jest minimalna liczba kolorów, za pomocą których można pokolorować obszary województw na mapie Polski tak,
Algorytmy i Struktury Danych Grafy
ANALIZA SKŁADNIOWA.
Drogi i cykle Eulera w grafach nieskierowanych
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
Algorytmy grafowe Minimalne drzewa rozpinające
Przeszukiwanie wszerz
Autor: Michał Salewski
Grafy.
ALGORYTMY I STRUKTURY DANYCH
Pojęcia podstawowe c.d. Rachunek podziałów Elementy teorii grafów
Zagadnienia transportowe Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Geometria obliczeniowa Wykład 3
Zbiory rozłączne.
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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

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

G. Mirkowska, ASD_11 Algorytmy na grafach Na czym to polega? „Greedy” algorithms ZASADA 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. maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

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

Jak znaleźć drzewo rozpinające grafu (1)? 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 a a b f f b c e c e f c e d ab af bc be c d e d Wynik: d maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

Jak znaleźć drzewo rozpinające grafu(2)? 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 e d f c b c b c a b b b ab a f e d f c fe Wynik: maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

Minimalne drzewo rozpinające Niech będzie dany graf G = <V, E> 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 <V, T> rozpinające grafu G, że suma kosztów jego krawędzi S eT c (e) jest najmniejsza. maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

Przykład: sieć wodociągowa 1 4 6 7 5 3 2 10 8 15 9 1 4 6 7 5 3 2 10 8 15 9 Jakieś drzewo rozpinające Minimalne drzewo rozpinające maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach Lemat {Vi: 1 i  k}= V Ti  E dla 1 i  k Vi  Vj =  dla i j di - drzewo Niech G = <V, E> będzie grafem spójnym, skończonym i niech c będzie jego funkcją kosztu. Niech d1= <V1, T1>, d2= <V2, T2>,......, dk = <Vk, Tk> będzie danym lasem rozpinającym G Vi Niech e = (v,w) będzie krawędzią o minimalnym koszcie, która nie należy do żadnego z drzew di. v Dowód przez sprowadzenie do sprzeczności: Przypuśćmy, że istnieje takie drzewo do ktorego krawędz e nie nalezy i którego koszt jest minimalny. Ponieważ w tym drzewie musi istniec droga od v do w to nie przechodzi ona przez krawędz e. Zatem weżmy na tej drodze dwa wierzchołki sąsiednie jeden ze zbioru Vi a drugi nie należący do Vi. Wtedy krawędź (v', w') ,która nie należała do żadnego z drzew danych musi mieć koszt większy niz e. Zastępując krawędź (v',w') krawędzią e otrzymamy drzewo rozpinające o koszcie mniejszym niż wybrane. Sprzeczność. v’ Nie istnieje drzewo rozpinające <V,T*> grafu G, takie że e T* oraz <V, T*> ma najmniejszy koszt wśród drzew rozpinających zawierających wszystkie Ti. w w’ Ale c(v’,w’) > c(v,w) maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach Algorytm Kruskala 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. Utworzyć kolejkę priorytetową PQ z wszystkimi krawędziami grafu, uporządkowanymi ze względu na koszt. Utworzyć początkowy podział 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ć. Algorytm maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach Przykład 1. (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) + 5 2 3 4 7 1 6 15 8 10 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ł maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

Algorytm Zakładam, że 1. pq jest kolejką priorytetową wszystkich krawędzi danego grafu G = <V, E>, 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. maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

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

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

G. Mirkowska, ASD_11 Algorytmy na grafach 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). maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach 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. Na początku S1 = {s}. Zbiór S2 wierzchołków osiągalnych z S1, S2 = {y : istnieje x  S1, że (x,y)  E}. Na początku S3 = V-{s}. Zbiór wierzchołków S3, których jeszcze nie sklasyfikowano. maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach Przykład A B C D E F G H I 2 5 4 1 6 9 3 A S2 S1 A B G F S1 A F G B C A B C D E F G H I J d P 2 6 9 5 A B A A maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach c.d. przykładu A B C D E F G H I 2 5 4 1 6 9 3 S2 B C S1 A G H I S1 A F G B C I H S2 F D A B C D E F G H I J d P 2 6 8 9 5 10 7 A B C A A G G maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach Cd. przykładu S2 A B C D E F G H I 2 5 4 1 6 9 3 C B D S1 A G I H F A B C D E F G H I J d P 2 6 8 9 5 10 7 Itd............. A B C A A G G maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach

G. Mirkowska, ASD_11 Algorytmy na grafach {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) <d(y) then P(y) := x; d(y) := d(x) +c(x,y) fi ; case y  S3 S3 := S3 –{y}; S2 := S2 +{y}; P(y) := x; d(y) := d(x) +c(x,y); od; Wybierz taki element w zb. S2, że d(z) jest minimalne x := z; od } Koszt Algorytmu Dijkstry O(card(V)2) maj 2003 G. Mirkowska, ASD_11 Algorytmy na grafach