1 / 31

Algorytmy i Struktury Danych Grafy

Algorytmy i Struktury Danych Grafy. Wykład 6 Prowadzący: dr Paweł Drozda. Plan wykładu. Podstawowe pojęcia grafowe Reprezentacja grafów Problemy grafowe Algorytmy Przeszukiwanie w głąb i wszerz Minimalnie drzewo rozpinające Najkrótsze ścieżki Inne. Pojęcie grafu (nieskierowany).

Télécharger la présentation

Algorytmy i Struktury Danych Grafy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorytmy i Struktury DanychGrafy Wykład 6 Prowadzący: dr Paweł Drozda

  2. Plan wykładu • Podstawowe pojęcia grafowe • Reprezentacja grafów • Problemy grafowe • Algorytmy • Przeszukiwanie w głąb i wszerz • Minimalnie drzewo rozpinające • Najkrótsze ścieżki • Inne dr Paweł Drozda

  3. Pojęcie grafu (nieskierowany) • Nieformalnie: zbiór wierzchołków oraz krawędzi łączących te wierzchołki • Formalnie: • Grafem (nieskierowanym) nazywamy parę G=(V,E)V – zbiór wierzchołkówE – zbiór krawędzi, e1 v4 e2 v3 v1 e3={v2,v3} e4 v2 dr Paweł Drozda

  4. Graf skierowany Grafem skierowanym nazywamy parę G=(V,A)V – zbiór wierzchołkówA – zbiór krawędzi skierowanych (uporządkowanych par różnych wierzchołków) e1 v4 e2 v3 v1 e5 e3=(v3,v2) e4 v2 dr Paweł Drozda

  5. Cechy grafu • Wierzchołek v i krawędź e są incydentne gdy • Wierzchołki u i v są sąsiednie gdy • G’ jest podgrafem G w.t.w. • Stopień wierzchołkadeg(v) = liczba krawędzi incydentnych z v dr Paweł Drozda

  6. Cechy grafu (2) • Graf ważony to trójka G=(V,E,w), gdzie (V,E) jest grafem, a w jest fukcjąwag: w:E→RJeżeli to w(e) jest wagą krawędzi e 7 v4 3 v1 v3 1 5 4 v2 Wagi krawędzi: (v1 ,v3) = 3, (v3 ,v4) = 7, (v4 ,v3) = 1 (v3 ,v2) = 4, (v2 ,v1) = 5 dr Paweł Drozda

  7. Cechy grafu(3) • Droga to wyznaczona przez krawędzi trasa e1 e2 eiei+1…pozwalająca na „podróżowanie po grafie” od wierzchołka do wierzchołka • Ścieżka to droga nie zawierająca tych samych krawędzi. Ścieżka wyznaczana jest przez wierzchołki • ścieżka otwarta: v1v2v3vivi+1… • ścieżka zamknięta: v1v2v3vivi+1…v1 • Cykl w grafie – droga wracająca do tego samego wierzchołka • Graf cykliczny to graf w którym istnieje co najmniej jeden cykl dr Paweł Drozda

  8. Spójność grafu • Graf jest spójny jeżeli pomiędzy dowolnymi jego wierzchołkami istnieje droga e5 v7 e1 v4 e2 v3 e6 v1 e9 v8 e3 v6 e4 e7 v2 v5 e8 e10 dr Paweł Drozda

  9. Reprezentacja grafu • Macierz sąsiedztwa – |V|2 elementów • Lista Sąsiedztwa – lepsza dla grafów rzadkich, t.j. |E|<<|V|2, O(max(V,E))=O(V+E) elementów e1 v4 e2 v3 v1 e3 e4 v2 dr Paweł Drozda

  10. Reprezentacja grafu • Macierz sąsiedztwa – |V|2 elementów • Lista Sąsiedztwa – lepsza dla grafów rzadkich, t.j. |E|<<|V|2, O(max(V,E))=O(V+E) elementów 5 v4 3 v3 v1 1 2 v2 dr Paweł Drozda

  11. Reprezentacja grafu • Dla grafu skierowanego e1 v4 e2 v3 v1 e5 e3 e4 v2 dr Paweł Drozda

  12. Problem mostów królewieckich • Czy można przejść kolejno przez wszystkie mosty tak, żeby każdy przekroczyć tylko raz i wrócić do miejsca, z którego się wyruszyło? • Zagadnienie opublikowane przez Eulera w 1736 roku – pierwsza praca n.t. teorii grafów dr Paweł Drozda

  13. Algorytmy grafowe • Przeszukiwanie grafów • w głąb, wszerz • Drzewa – szczególna postać grafów • Znajdowanie minimalnego drzewa rozpinającego – algorytm Kruskala i Prima • Problemy: • znajdowanie najkrótszej ścieżki (Dijkstry, Bellmana – Forda, Floyda – Warshalla) • znajdowanie ścieżki/cyklu Eulera • chińskiego listonosza – najkrótsza droga przechodząca wszystkie krawędzie grafu co najmniej raz • znajdowanie ścieżki/cyklu Hamiltona - Θ(n!) • komiwojażera – najkrótsza zamknięta ścieżka, przechodząca przez wszystkie wierzchołki (minimalny cykl Hamiltona) • kojarzenia małżeństw dr Paweł Drozda

  14. Przeszukiwanie wszerz • Breadth-First Search • dane: graf G(V,E), wierzchołek początkowy s • BFS(G,s):zaznacz wszystkie wierzcholki jako nieodwiedzoneenqueue(Q,s);zaznacz s jako odwiedzony;while ~empty(Q) dobegin w = dequeue(Q);foreach sasiad w doif sasiad nie odwiedzony thenbegin zaznacz sasiad jako odwiedzony; enqueue(Q, sasiad); endend Zł. czasowa = O(|V|+|E|) Θ(|V|) – inicjalizacja O(|E|) – przeglądanie dr Paweł Drozda

  15. Przeszukiwanie w głąb • Depth-first search • dane: graf G(V,E), wierzchołek początkowy s • DFS(G,s):zaznacz wszystkie wierzcholki jako nieodwiedzonepush(S,s);zaznacz s jako odwiedzony;while ~empty(S) dobegin w = pop(Q);foreach sasiad wierzcholka w doif sasiad nie odwiedzony thenbegin zaznacz sasiad jako odwiedzony; push(S, sasiad); endend Zł. czasowa = O(|V|+|E|) Θ(|V|) – inicjalizacja O(|E|) – przeglądanie dr Paweł Drozda

  16. 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 Dladanegoskończonegografu G orazdanejfunkcjikosztu c, znaleźćminimalnedrzeworozpinające, tzn. takiedrzewo <V, T> rozpinającegrafu G, żesumakosztówjegokrawędzieT c (e) jest najmniejsza. UwagaWarunkiemkoniecznymistnieniadrzewarozpinającegografu jest spójność! dr Paweł Drozda

  17. Przykład minimalne drzewo rozpinające 1 1 b b a a 7 7 4 4 4 4 7 7 c c 6 6 5 5 f f d d 10 10 8 8 2 2 e e Jedno z drzew Minimalne drzewo rozpinające dr Paweł Drozda

  18. Algorytm Prima 1 b a 7 4 4 7 c 6 5 f d 10 8 2 e Idea algorytmu Wybieramydowolniekorzeńszukanegodrzewarozpinającego W każdym kroku algorytmu wybieramy krawędź lekką – tzn. łączącą powstałe do tej pory drzewo z jednym z pozostałych wierzchołków najmniejszym kosztem Krawędź lekka (c,d) dr Paweł Drozda

  19. Przykład- algorytmPrima 2 a b 7 4 6 1 d c 10 e 5 3 f g GRAF a-> b, cb -> a, c, dc-> a, b, d, e, fd-> b, c, e, ge-> c, d, ff-> c, e, gg-> f, d 2 4 5 Start – wierzchołek g: Kolejne wierzchołki: g-f-c-d-e-b-a Kolejne krawędzie: (f, g); (c, f); (c, d); (d,e); (b, c); (a, b) dr Paweł Drozda

  20. Kodowanie – algorytm Prima Dla każdego u  V k[u] = ∞ p[u]= NIL k[s]=0 Q = V while Q not empty u = EXTRACT–MIN(Q) dla każdego v=sąsiada(u) if v  Q i w(u,v) < k[v] then p[v] = u k[v] = w(u,v) dr Paweł Drozda

  21. 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 i która łączy dwa wierzchołki z różnych 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ć. dr Paweł Drozda

  22. 2 a b 7 4 6 1 d c 10 e 9 3 f g Algorytm Kruskala – przykład Szeregowanie krawędzi (c,d)=1 (d,e)=2 (a,b)=2 (c,f)=3 (b,c)=4 (e,f)=4 (b,d)=6 (a,c)=7 (f,g)=8 (d,g)=9 (c,e)=10 krawędzie wybrane (c,d)=1 (d,e)=2 (a,b)=2 (c,f)=3 (b,c)=4 (e,f)=4 (b,d)=6 (a,c)=7 (f,g)=8 (d,g)=9 (c,e)=10 2 4 8 dr Paweł Drozda

  23. Kodowanie – Algorytm Kruskala A = zbiór pusty dla każdego v  V stwórz oddzielny zbiór posortuj krawędzie niemalejąco względem wag dla każdej krawędzi e według niemalejących wag jeśli u,v należą do różnych zbiorów A =A + {(u,v)} połącz zbiory z u i v dr Paweł Drozda

  24. Wyszukiwanie najkrótszej ścieżki • Wyznaczenie najkrótszych ścieżek o wspólnym początku • Algorytm Dijkstry (zachłanny) dla grafów ważonych: • wagi są nieujemne • brak krawędzi oznaczany jest przez „odpowiednio dużą” wagę • Q – zbiór wierzchołków, do których nie jest znana optymalna droga • D – tablica z najmniejszymi odległościami od wierzchołka do źródła • P – tablica zawierająca nr poprzedzającego wierzchołka na najkrótszej drodze dr Paweł Drozda

  25. 1 10 100 30 2 5 60 50 10 4 3 20 Algorytm Dijkstry Dijkstra(G,s): foreach wierzchołek w begin d[w] = ∞; p[w] = -1; end d[s] = 0; Q = V; while~empty(Q) do begin u = wyjmij_min(Q); foreachsasiadwierzcholka u begin alt = d[u]+koszt(u,sasiad); ifalt<d[sasiad] then begin d[sasiad] = alt; p[sasiad] = u; end end end dr Paweł Drozda

  26. Algorytm Bellmana – Forda Najkrótsze ścieżki z jednego źródła Wagi mogą być ujemne p[] – tablica poprzedników d[] – odległość od źródła informuje czy da się wyznaczyć najkrótsze ścieżki – czy nie zawiera cykli ujemnych dr Paweł Drozda

  27. Kodowanie – algorytm Bellmana - Forda dla każdego v  V p[v] = nil d[v] = ∞ for i=1 to |V| - 1 dla każdej krawędzi e(u,v)  E if d[v] > d[u] +w(u,v) d[v] = d[u] +w(u,v) p[v] = u dla każdej krawędzi e(u,v)  E if d[v] > d[u] +w(u,v) RETURN FALSE RETURN TRUE dr Paweł Drozda

  28. Ścieżka Eulera • Ścieżka przechodząca przez wszystkie krawędzie dokładnie raz • Graf nieskierowany • eulerowski – jeżeli wszystkie wierzchołki grafu (nieskierowanego) mają stopień parzysty, to da się skonstruować cykl Eulera • półeulerowski – jeżeli najwyżej dwa wierzchołki mają nieparzysty stopień, to możliwe jest zbudowanie ścieżki Eulera • Graf skierowany • eulerowski – wszystkie wierzchołki z wyjątkiem dwóch mają takie same stopnie wychodzące i wchodzące • półeulerowski – wszystkie wierzchołki z wyjątkiem dwóch mają takie same stopnie wychodzące i wchodzące, w jednym z tych dwóch wierzchołków stopień wychodzący jest o 1 większy niż wchodzący a w drugim odwrotnie dr Paweł Drozda

  29. Algorytm • Zbadać czy graf jest spójny • Zbadać stopnie wierzchołków grafu • Przejdź graf zaczynając od wierzchołka o nieparzystym stopniu (jeżeli jest) O(|V|+|E|)+O(|V|+|E|) = O(|V|+|E|) dr Paweł Drozda

  30. Problem kojarzenia małżeństw • Graf dwudzielny – graf, w którym możemy podzielić wierzchołki na 2 podzbiory tak, że nie istnieje krawędź łącząca 2 wierzchołki z tego samego podzbioru dr Paweł Drozda

  31. Problem kojarzenia małżeństw Problem małżeństw jest rozwiązywalny, jeśli każdy podzbiór k panien, akceptuje jako przyszłych mężów co najmniej k kawalerów, gdzie k ≤ n. Filip Gustaw Henryk Igor Jan Anna Beata Celina Danuta Ewa dr Paweł Drozda

More Related