Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Algorytmy grafowe Minimalne drzewa rozpinające Algorytm Kruskala Algorytm Prima Wyszukiwanie najkrótszych ścieżek z jednym źródłem Algorytm Dijkstry Algorytm."— Zapis prezentacji:

1 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

2 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 Przykład minimalnego drzewa rozpinającego

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

4 Algorytm Kruskala (przykład)

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

6 Algorytm Prima (przykład)

7 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 Ważony graf skierowany Drzewo najkrótszych ścieżek s

8 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) 1for każdy wierzchołek v  V[G] 2do d[v] :=  3  [v] := NIL 4d[s] := 0 Relaksacja krawędzi - ewentualne zmniejszenie oszacowania wagi najkrótszej ścieżki d[v] Relax(u, v, w) 1if d[v] > d[u] + w(u, v) 2then d[v] := d[u] + w(u, v) 3  [v] := u

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

10 Algorytm Dijkstry (przykład) s     s   s s s s

11 Algorytm Bellmana-Forda Bellman-Ford(G, w, s) 1Initialize-Single-Source(G, s) 2for i = 1 to |V[G]| - 1 3do 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] 6do if d[v] > d[u] + w(u, v) 7 then return FALSE 8 return TRUE

12 Algorytm Bellmana-Forda (przykład) s     s   s s s


Pobierz ppt "Algorytmy grafowe Minimalne drzewa rozpinające Algorytm Kruskala Algorytm Prima Wyszukiwanie najkrótszych ścieżek z jednym źródłem Algorytm Dijkstry Algorytm."

Podobne prezentacje


Reklamy Google