Algorytmy grafowe Minimalne drzewa rozpinające

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

STRUKTURY DANYCH.
DOMINOWANIE W GRAFACH Magdalena Lemańska.
Zaawansowane techniki algorytmiczne
Geometria obrazu Wykład 4
ALGORYTMY GRAFOWE.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Grafy inaczej, czyli inne modele grafów
ELEMENTY TEORII 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
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.
Geometria obliczeniowa Wykład 2
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 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.
WYKŁAD 8. Siła spójności A,B – dowolne podzbiory V(G)
Dariusz Odejewski Krzysztof Wójcik
Teoretyczne podstawy informatyki
Materiały pomocnicze do wykładu
Algorytmy grafowe Reprezentacja w pamięci
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
FP-Growth Adam Pieśkiewicz Kamil Niezręcki Krzysztof Grześkowiak Michał Kucal
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
Przepływy w sieciach. Twierdzenie minimaksowe.
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Geometria obliczeniowa Wykład 8
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
Reprezentacja grafów i operacje na grafach na przykładzie algorytmu Dijkstry i algorytmu na odnajdywanie Silnych Spójnych Składowych Temat Opracowali:
Geometria obliczeniowa Wykład 6
Rodzaje, przechodzenie grafu
Najkrótsza ścieżka w grafie Algorytm Dijkstry
3. SPOSOBY REPREZENTACJI GRAFÓW
Geometria obliczeniowa Wykład 12
Algorytm Dijkstry 1 Zbiory: T - zbiór wierzchołków
Algorytmy i Struktury Danych
Geometria obliczeniowa Wykład 13 Planowanie ruchu 1.Znajdywanie ścieżki między dwoma punktami. 2.Ruch postępowy robota wielokątnego na płasz- czyźnie.
Geometria obliczeniowa Wykład 12 Planowanie ruchu 1.Najkrótsza ścieżka między dwoma punktami. 2.Znajdywanie ścieżki między dwoma punktami. 3.Ruch postępowy.
Geometria obrazu Wykład 6
Geometria obliczeniowa Wykład 14 Algorytmy randomizowane 1.Programowanie liniowe w R 2. 2.Lokalizacja punktu w siatce trapezów. 3.Znajdywanie średnicy.
Algorytmy i Struktury Danych Grafy
Drogi i cykle Eulera w grafach nieskierowanych
WĘDRÓWKI PO GRAFACH Obchody Eulera Cykle Hamiltona.
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
Przeszukiwanie wszerz
WYKŁAD 5. Skojarzenia – ciąg dalszy Skojarzenie w grafie G to niezależny zbiór krawędzi (rozłączne, bez wspólnych końców). α’(G) – moc największego skojarzenia.
Geometria obliczeniowa Wykład 2
Grafy.
ALGORYTMY I STRUKTURY DANYCH
Zagadnienia transportowe Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Geometria obrazu Wykład 5 Segmentacja Grafy sąsiedztwa. 1.Grafy definiowane przez różne obszary. 2.Minimalne drzewo rozpinające. Metody obszarowe. 1.Drzewa.
Geometria obliczeniowa Wykład 6
Geometria obrazu Wykład 4
Działania na grafach Autor: Anna Targońska.
Algorytm Dijkstry Podano graf Zdefiniowano jego listę sąsiedztwa 1 2 3
Geometria obliczeniowa Wykład 6
Geometria obliczeniowa Wykład 8
ZNAJDOWANIE NAJKRÓTSZYCH DRÓG oraz NAJNIŻSZYCH i NAJKRÓTSZYCH DRZEW WSTĘP DO OBLICZEŃ NA GRAFACH
Algorytmy i struktury danych
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Algorytmy grafowe Minimalne drzewa rozpinające Algorytm Kruskala Algorytm Prima Wyszukiwanie najkrótszych ścieżek z jednym źródłem Algorytm Dijkstry Algorytm Bellmana-Forda

Minimalne drzewa rozpinające Podgraf T spójnego grafu G nazywa się jego drzewem rozpinającym, jeśli T jest acykliczny i łączy wszystkie wierzchołki G. Jeśli krawędziom przypisane są wagi, i suma wag krawędzi T jest minimalna, T nazywamy minimalnym drzewem rozpinającym. 4 8 7 9 14 10 2 1 11 6 Przykład minimalnego drzewa rozpinającego

Algorytm Kruskala MST-Kruskal(G, w) 1 A :=  2 for każdy wierzchołek vV[G] 3 do Make-Set(v) 4 posortuj krawędzie z E niemalejąco względem wag w 5 for każda krawędź (u,v)  E, w kolejności niemalejących wag 6 do if Find-Set(u)  Find-Set(v) 7 then A := A  {(u,v)} 8 Union(u,v) 9 return A

Algorytm Kruskala (przykład) 4 8 7 9 14 10 2 1 11 6 4 8 7 9 14 10 2 1 11 6 4 8 7 9 14 10 2 1 11 6 4 8 7 9 10 11 2 6 1 2 4 8 7 9 14 10 2 1 11 6 4 8 7 9 14 10 2 1 11 6

Algorytm Prima MST-Prim(G, w, r) 1 Q := V[G] 2 for każdy uQ 3 do key[u] :=  4 key[r] := 0 5  [r] := NIL 6 while Q   7 do u := Extract-Min(Q) 8 for każdy v  Adj[u] 9 do if vQ i w(u,v) < key[v] 10 then  [v] := u 11 key[v] := w(u,v)

Algorytm Prima (przykład) 8 7 4 8 7 9 14 10 2 1 11 6 4 9 14 10 2 1 11 7 8 6 4 8 7 9 14 10 2 1 11 6 2 1 4 8 7 9 10 11 6 4 8 7 9 14 10 2 1 11 6 8 7 4 9 14 10 11 2 7 8 6 1 2

Najkrótsze ścieżki z jednym źródłem Dany jest ważony graf skierowany G=(V,E) i wyróżniony wierzchołek sV, nazywany źródłem; dla każdego wierzchołka vV należy znaleźć najkrótszą ścieżkę z s do v. Wagą ścieżki jest suma wag tworzących ją krawędzi. Najkrótszą ścieżką jest ścieżka o najmniejszej wadze. s 6 3 5 7 11 9 2 1 4 s 6 3 5 7 9 2 1 4 11 Ważony graf skierowany Drzewo najkrótszych ścieżek

Najkrótsze ścieżki z jednym źródłem d[v] - oszacowanie wagi najkrótszej ścieżki, [v] - poprzednik v Initialize-Single-Source(G, s) 1 for każdy wierzchołek vV[G] 2 do d[v] :=  3 [v] := NIL 4 d[s] := 0 Relaksacja krawędzi - ewentualne zmniejszenie oszacowania wagi najkrótszej ścieżki d[v] Relax(u, v, w) 1 if d[v] > d[u] + w(u, v) 2 then d[v] := d[u] + w(u, v) 3 [v] := u

Algorytm Dijkstry Dijkstra(G, w, s) 1 Initialize-Single-Source(G, s) 3 Q := V[G] 4 while Q   5 do u := Extract-Min(Q) 6 S := S  {u} 7 for każdy wierzchołek v  Adj[u] 8 do Relax(u, v, w)

Algorytm Dijkstry (przykład) 1 10 5 6  2 3 4 9 7 1 10 5 6 7 14 8 2 3 4 9 s 1 10 5 6 7 9 8 2 3 4 s 1 10 5 6  2 3 4 9 7 1 10 5 6 7 13 8 2 3 4 9 1 s 10 5 6 7 9 8 2 3 4 s s

Algorytm Bellmana-Forda Bellman-Ford(G, w, s) 1 Initialize-Single-Source(G, s) 2 for i = 1 to |V[G]| - 1 3 do for każda krawędź (u, v)  E[G] 4 do Relax(u, v, w) 5 for każda krawędź (u, v)  E[G] 6 do if d[v] > d[u] + w(u, v) 7 then return FALSE 8 return TRUE

Algorytm Bellmana-Forda (przykład) s 5 6 7 2 4 8 3 9 -4 -2 -3 s 5 6 7 -2 4 2 8 3 -4 -3 s 5 6 7  8 3 9 -4 -2 2 -3 s 5 6 7  8 3 9 -4 -2 2 -3 s 5 6 7 2 4 8 3 -4 -2 -3 9