Najkrótsze drogi w grafach z wagami

Podobne dokumenty
Najkrótsze drogi w grafach z wagami

Podstawowe algorytmy grafowe i ich zastosowania

Podstawowe algorytmy grafowe i ich zastosowania

Minimalne drzewa rozpinaj ce

12: Znajdowanie najkrótszych ±cie»ek w grafach

Szukanie najkrótszych dróg z jednym ródłem

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Lab. 02: Algorytm Schrage

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

c Marcin Sydow Spójno± Grafy i Zastosowania Grafy Eulerowskie 2: Drogi i Cykle Grafy Hamiltonowskie Podsumowanie

Minimalne drzewo rozpinaj ce

Grafy i Zastosowania. 6: Najkrótsze ±cie»ki. c Marcin Sydow. Najkrótsze cie»ki. Warianty. Relaksacja DAG. Algorytm Dijkstry.

Teoria grafów i sieci 1 / 58

Minimalne drzewo rozpinaj ce

Matematyczne Podstawy Informatyki

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Digraf. 13 maja 2017

TEORIA GRAFÓW. Graf skierowany dla ka»dej kraw dzi (oznaczanej tutaj jako ªuk) para wierzchoªków incydentnych jest par uporz dkowan {u, v}.

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

1 a + b 1 = 1 a + 1 b 1. (a + b 1)(a + b ab) = ab, (a + b)(a + b ab 1) = 0, (a + b)[a(1 b) + (b 1)] = 0,

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

Grafy i Zastosowania. 5: Drzewa Rozpinaj ce. c Marcin Sydow. Drzewa rozpinaj ce. Cykle i rozci cia fundamentalne. Zastosowania

Teoria grafów i jej zastosowania. 1 / 126

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Wykªad 1. Wprowadzenie do teorii grafów

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Wykªad 4. Funkcje wielu zmiennych.

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009

Przetwarzanie sygnaªów

Informacje pomocnicze

Wstp. Warto przepływu to

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Wektory w przestrzeni

Algorytmy i struktury danych

Zbiory i odwzorowania

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Elementy geometrii w przestrzeni R 3

Algorytmy zwiazane z gramatykami bezkontekstowymi

1 Bª dy i arytmetyka zmiennopozycyjna

Materiaªy do Repetytorium z matematyki

Listy i operacje pytania

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Programowanie wspóªbie»ne

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Teoria grafów i sieci 1 / 188

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Elementy geometrii analitycznej w przestrzeni

Oba zbiory s uporz dkowane liniowo. Badamy funkcj w pobli»u kresów dziedziny. Pewne punkty szczególne (np. zmiana denicji funkcji).

c Marcin Sydow Planarno± Grafy i Zastosowania Tw. Eulera 7: Planarno± Inne powierzchnie Dualno± Podsumowanie

Programowanie funkcyjne. Wykªad 13

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Przetwarzanie sygnaªów

Podstawy matematyki dla informatyków

2 Liczby rzeczywiste - cz. 2

Egzaminy i inne zadania. Semestr II.

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow. Digrafy. Porz dki cz ±ciowe * Euler i Hamilton. Turnieje

Ukªady równa«liniowych

Interpolacja funkcjami sklejanymi

Metodydowodzenia twierdzeń

Egzaminy i inne zadania. Semestr II.

10a: Wprowadzenie do grafów

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

Wnioskowanie Boolowskie i teoria zbiorów przybli»onych

Szeregowanie zada« Wykªad nr 5. dr Hanna Furma«czyk. 4 kwietnia 2013

Wst p do sieci neuronowych 2010/2011 wykªad 7 Algorytm propagacji wstecznej cd.

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Problemy optymalizacyjne - zastosowania

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Aproksymacja funkcji metod najmniejszych kwadratów

Przekroje Dedekinda 1

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw

Podstawowepojęciateorii grafów

Wska¹niki, tablice dynamiczne wielowymiarowe

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Funkcja kwadratowa, wielomiany oraz funkcje wymierne

Algorytmy i Struktury Danych

Wyszukiwanie. Algorytmy i Struktury Danych. (c) Marcin Sydow. Dziel i rz d¹. Wyszukiwanie. Statystyki pozycyjne. Podsumowanie

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykorzystanie lokalnej geometrii danych w Maszynie Wektorów No±nych

c Marcin Sydow Grafy i Zastosowania BFS DFS 4: Przeszukiwanie Grafów (BFS, DFS i zastosowania) DFS nieskierowane DFS skierowane Podsumowanie

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Przykªady problemów optymalizacji kombinatorycznej

Programowanie wspóªbie»ne

Zagadnienia na wej±ciówki z matematyki Technologia Chemiczna

1 0 Je»eli wybierzemy baz A = ((1, 1), (2, 1)) to M(f) A A =. 0 2 Daje to znacznie lepszy opis endomorzmu f.

Transkrypt:

Najkrótsze drogi w grafach z wagami dr Andrzej Mróz (UMK w Toruniu) 013 Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych Poddziaªanie 4.1.1 Programu Operacyjnego Kapitaª Ludzki

Spis tre±ci 1 Wst p 3 1.1 Problem......................................... 3 Grafy z wagami 3.1 Graf z wagami..................................... 3. Przykªad......................................... 3.3 Reprezentacje grafu z wagami............................. 4.4 Waga drogi........................................ Najkrótsze drogi w grae z wagami...........................6 Problem cykli ujemnych................................ 6. Warianty problemu najkrótszych dróg........................ 6 3 Przygotowanie 3.1 Oznaczenia i konwencje................................ 3. Procedura relaksacji.................................. 3.3 Poprawno±....................................... 8 3.4 Inicjalizacja....................................... 8 4 Dijkstra 8 4.1 Specykacja....................................... 8 4. Ogólna idea....................................... 8 4.3 Kolejka priorytetowa - przypomnienie........................ 9 4.4 Kolejka priorytetowa - relaksacja........................... 9 4. Algorytm........................................ 10 4.6 Algorytm - zªo»ono±.................................. 10 4. Algorytm - przebieg.................................. 11 4.8 Algorytm - wyniki................................... 1 Bellman-Ford 1.1 Uwagi wst pne..................................... 1. Specykacja....................................... 1.3 Algorytm........................................ 13.4 Algorytmy - proste porównanie............................ 13

1 Wst p 3 1.1 Problem Na poprzednim wykªadzie omawiali±my problem znajdowania najkrótszych dróg w grae (algorytm BFS), przy czym najkrótsze drogi oznaczaªy drogi o najmniejszej liczbie kraw dzi. W praktycznych zastosowaniach rzeczywisto± lepiej modeluj grafy, w których kraw dzie maj dªugo± (inaczej koszt = wag ). Na tym wykªadzie zajmiemy si zagadnieniem poszukiwania najkrótszych dróg wzgl dem tego dodatkowego parametru. Algorytm BFS wykorzystywaª kolejk. Przedstawimy algorytm Dijkstry, który b dzie w pewnym sensie modykacj algorytmu BFS, wykorzystuj c tym razem kolejk priorytetow (ze wzgl du na dodatkowy parametr, wag ). Przedstawimy te» inne podej±cie, algorytm Bellmana-Forda, realizuj cy zbli»one zadanie. Ma on gorsz zªo»ono± ale jest prostszy w implementacji (nie korzysta z kolejki priorytetowej). Algorytmy te, zwªaszcza algorytm Dijkstry, s w praktyce wykorzystywane w routingu sieciowym, ro»nego rodzaju urz dzeniach nawigacyjnych (jak GPS...), aplikacjach zwi zanych z mapami (jak Google Maps), planowaniu lotów, sieciach telefonicznych, i innych, bardziej specjalistycznych zagadnieniach. Zaczniemy od sformalizowania problemu. Grafy z wagami.1 Graf z wagami Denicja. Grafem z wagami nazywamy graf (skierowany) G = (V, E) wraz z funkcj wagi w : E R. Uwaga. W tej prezentacji ograniczamy si do grafów zorientowanych, algorytmy w wersji niezorientowanej s analogiczne. Zauwa»my,»e w ogólnej denicji na funkcj wagi nie nakªada si»adnych ogranicze«, w szczególno±ci jej warto±ci mog by ujemne.. Przykªad Na rysunku grafu warto±ci funkcji wagi zaznaczamy zazwyczaj przy kraw dziach: 1 3 10 0 6 4 6 4,

Powy»szy diagram przedstawia graf G = (V, E), gdzie V = {1,, 3, 4,, 6}, E = { (1, ), (, 1), (1, ), (1, 4), (4, ), (, ), (, 3), (, 6) }, z funkcj wagi w : E R okre±lon : 4 w(1, ) = 10 w(, 1) = w(1, ) = 10 w(1, 4) = w(4, ) = w(, ) = 0 w(, 3) = 6 w(, 6) = 4,..3 Reprezentacje grafu z wagami Ustalmy graf zorientowany G = (V, E) z funkcj wagi w : E R. Najwygodniejsze reprezentacje grafów z wagami to odpowiednie modykacje macierzy s siedztwa lub list s siedztwa. Macierz s siedztwa (wagowa): macierz A = A(G) M n n (Z) o wspóªczynnikach: { 0, (i, j) / E, A i,j = w((i, j)), (i, j) E (analogicznie w wersji niezorientowanej). Przykªad wagowej macierzy s siedztwa. 1 3 10 0 6 4 6 4, A i,j 1 3 4 6 1 0 10 0 10 0 0 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 0 6 0 0 4, 6 0 0 0 0 0 0 Listy s siedztwa (wagowe): tablica Adj[1..n], gdzie Adj[i] = wska¹nik do listy s siadów i, tj. tych wierzchoªków j,»e (i, j) E. Ka»dy element j listy s siadów wierzchoªka i zawiera dodatkowe pole z wag w(i, j). Przykªad wagowych list s siedztwa. 1 3 10 0 6 4 6 4,

L[i] 1 {; 10} {; 10} {4; } {1; } {; 0} 3 4 {; } {3; 6} {6; 4, } 6 Lista kraw dzi (wagowa): [ [u 1, v 1, w(u 1, v 1 )], [u, v, w(u, v )],..., [u m, v m, w(u m, v m )] ], gdzie E = { (u i, v i ) : i = 1,..., m }. Przykªad wagowej listy kraw dzi. 1 3 10 0 6 4 6 4, [ [1,, 10], [, 1, ], [1,, 10], [1, 4, ], [4,, ], [,, 0], [, 3, 6], [, 6, 4,] ].4 Waga drogi Dla dowolnej drogi P = (v 0, v 1,..., v k ) w grae G = (V, E), v i V, deniujemy jej wag jako liczb k w(p ) := w((v i 1, v i )). Czyli rozszerzamy denicj funkcji w z kraw dzi na wszystkie drogi. Przykªad. i=1 1 3 10 0 6 4 6 4, w((1,,, 3)) = 10 + 0 6 = 4, w((1,, 1, 4)) = 10 + + =, w((1,, 1,,, 6)) = 10 + + 10 + 0 + 4, = 49,.. Najkrótsze drogi w grae z wagami Ustalmy graf G = (V, E) z wagami w : E R. Denicja. Waga najkrótszej drogi z u do v, dla u, v V, to liczba { min{w(p ) : u P v}, gdy istnieje droga z u do v, δ(u, v) :=, w p.p.

u P v oznacza,»e P jest drog z u do v. Uwaga. Minimum w denicji nie zawsze istnieje! Wrócimy do tego za chwil. Przykªad. 1 3 10 0 6 4 6 4, 6 δ(1, ) = 10, δ(1, ) = 9, δ(, ) = 14, δ(1, 6) = 13,..6 Problem cykli ujemnych Rozwa»my graf z wagami: 1 3 1 Wówczas w(1,, 3) = 10, w(1,, 3, 1,, 3) = 1, w(1,, 3, 1,, 3, 1,, 3) = 0,... Czyli warto± δ(1, 3) = min{w(p ) : u P v} jest nieokre±lona! W takiej sytuacji kªadziemy δ(1, 3) :=. Jest to tzw. problem cykli ujemnych. Algorytm poszukiwania najkrótszych dróg powinien sobie z nim radzi (albo go unikn ).. Warianty problemu najkrótszych dróg 1. Najkrótsze drogi z jednym ¹ródªem. Analogicznie jak BFS dla grafów bez wag z poprzedniego wykªadu.. Najkrótsze drogi z jednym wierzchoªkiem docelowym. Ten problem mo»na rozwi za przy pomocy pierwszego. 3. Najkrótsza droga mi dzy par wierzchoªków. Pokazuje si,»e ten problem jest obliczeniowo równowa»ny pierwszemu. Tzn. algorytmy szukaj ce najkrótszej drogi z u do v, jako skutek uboczny i tak musz wyliczy wszystkie najkrótsze drogi z jednym ¹ródªem u. 4. Najkrótsze drogi mi dzy wszystkimi parami wierzchoªków. Ten problem mo»na rozwi za przy pomocy pierwszego (dla wszystkich ¹ródeª). S te» specjalne algorytmy opracowane dla tego konkretnego problemu, np. algorytm Floyda-Warshalla.

W dalszej cz ±ci wykªadu omówimy dwa ró»ne algorytmy rozwi zuj ce wariant pierwszy, najkrótsze drogi z jednym ¹ródªem: 1. Algorytm Dijkstry.. Algorytm Bellmana-Forda. 3 Przygotowanie 3.1 Oznaczenia i konwencje Ustalmy graf z wagami G = (V, E). Najkrótsze drogi z jednym ¹ródªem s V. π[v] poprzednik wierzchoªka v na tymczasowej najkrótszej drodze z s do v. Dla ka»dego v V trzymamy atrybut d[v] = oszacowanie wagi najkrótszej drogi = górne ograniczenie wagi najkrótszej drogi z s do v. W trakcie algorytmów atrybuty (wektory) te b d modykowane, by mo»e wielokrotnie na tych samych wspóªrz dnych. Warto±ci d[v] b d male. Po zako«czeniu algorytmów: π b dzie zawieraª poprzedników na najkrótszych drogach z s, d b dzie zawieraª wagi najkrótszych dróg z s, tj. d[v] = δ(s, v), dla ka»dego v V. Poniewa» wykorzystujemy znak jako stra»nika, ustalamy prost arytmetyk na niesko«- czono±ciach: Dla a R { }, przyjmujemy a + = + a =. Dla a R { }, przyjmujemy a + ( ) = ( ) + a =. Realizacja tej arytmetyki zale»y od konkretnej implementacji. 3. Procedura relaksacji Relaksacja (=osªabienie ogranicze«) kraw dzi (u, v) sprawdzenie, czy przechodz c przez u, mo»na znale¹ krótsz od dotychczas najkrótszej drogi do v. Je»eli tak, uaktualniamy warto±ci d[v] i π[v]. Relax(u, v, w) if d[v] > d[u] + w(u,v) then d[v] := d[u] + w(u,v); π[v] := u end end;

3.3 Poprawno± 8 Oba algorytmy polegaj na wykonaniu serii relaksacji w odpowiedniej kolejno±ci. Dowód poprawno±ci obu algorytmów opiera si na nast puj cych prostych faktach (zwi zanych z relaksacj ). Lemat 1. Poddroga najkrótszej drogi te» jest najkrótsz drog. Lemat (Nierówno± trójk ta). Dla ka»dych u, v, x V zachodzi nierówno± : δ(u, v) δ(u, x) + δ(x, v). Peªen dowód pomijamy, mo»na go znale¹ np. w ksi»ce [1] ze spisu literatury do wykªadu (T. H. Cormen et al.). 3.4 Inicjalizacja W obu algorytmach wykorzystamy nast puj c inicjalizacj wektorów π i d: Initialize(G, s) for ka»dy v V(G) do d[v] := ; π[v] := end; d[s] := 0 end; 4 Dijkstra 4.1 Specykacja Przypomnijmy,»e przy ujemnych warto±ciach funkcji wagi mog wyst pi ujemne cykle. W przypadku algorytmu Dijkstry po prostu nie dopuszcza si wag ujemnych by unikn problemu. Algorytm Dijkstry. Dane: graf skierowany G = (V, E), nieujemna funkcja wagi w oraz wierzchoªek ¹ródªowy s V. Wynik: dla ka»dego v V osi galnego z s, warto± d[v] = δ(s, v) oraz poprzednik π[v] na najkrótszej drodze z s do v. 4. Ogólna idea Strategia (zachªanna): S = zbiór wierzchoªków, dla których wagi najkrótszych dróg s policzone, tj. v S d[v] = δ(s, v). powtarzanie nast puj cych operacji:

bierzemy u V \ S o najmniejszej warto±ci d[u] ( zbiór V \ S kolejka priorytetowa!); dodajemy u do S i wykonujemy relaksacj na wszystkich kraw dziach u v. Zbiór S i operacje na nim mo»na pomin w implementacji. 4.3 Kolejka priorytetowa - przypomnienie Kolejka priorytetowa (typu MIN) = struktura danych K, w której elementy s liniowo uporz dkowane (przy pomocy pewnego klucza, inaczej priorytetu) i przetwarzane w kolejno±ci od obiektu o najni»szym priorytecie do obiektu o najwy»szym priorytecie. Operacja: ExtractMin(K) zwrócenie i usuni cie elementu o najni»szym priorytecie z kolejki K. Uwaga. warto±ci d[v]. W algorytmie Dijkstry elementami kolejki K b d wierzchoªki, ich priorytetami Przypomnijmy,»e kolejk priorytetow najefektywniej implementuje si przy pomocy kopca. Mo»na te» zasymulowa jej dziaªanie na zwykªej tablicy (wtedy operacja ExtractMin polega m.in. na wyszukaniu minimum w tablicy). Mo»na te» u»y gotowych struktur, jak priority_queue biblioteki STL j zyka C++ http://www.cplusplus.com/reference/queue/priority_queue/ 4.4 Kolejka priorytetowa - relaksacja Uwaga techniczna: W procedurze relaksacji uaktualniamy warto±ci wektora d (czyli priorytety): Relax(u, v, w) if d[v] > d[u] + w(u,v) then d[v] := d[u] + w(u,v); π[v] := u end end; Zatem w zale»no±ci od implementacji kolejki priorytetowej nale»y odpowiednio uaktualni struktur kolejki: je»eli kolejka implementowana jest na kopcu, nale»y przywróci wªasno± kopca! 9

4. Algorytm 10 Dijkstra(G, w, s) 1 Initialize(G, s); 3 S := ; 4 Q := V(G); while Q <> do 6 u := ExtractMin(Q); 8 S := S {u}; 9 for ka»dy v Adj[u] do 10 Relax(u, v, w); 11 end 1 end; Najwa»niejsze w dowodzie poprawno±ci: dla ka»dego u dodawanego do S mamy d[u] = δ(s, u) (por. 3.3). 4.6 Algorytm - zªo»ono± Zªo»ono± (szkic). 1. Kolejka implementowana na tablicy: ExtractMin na tablicy: O( V ); wiersz wykonany V razy, st d skªadnik O( V ) w zªo»ono±ci caªego algorytmu; dodatkowo wiersz 10 globalnie wykonywany jest O( E ) razy. Zªo»ono± caªego algorytmu O( V + E ) = O( V ), gdy» E = O( V ).. Kolejka implementowana na kopcu: ExtractMin - koszt O(log V ); relaksacja - koszt O(log V ) (przywrócenie wªasno±ci kopca); wiersz globalnie wykonywany jest O( V ) razy, st d skªadnik O( V log V ) w zªo-»ono±ci caªego algorytmu; wiersz 10 globalnie wykonywany jest O( E ) razy, st d skªadnik O( E log V ) w zªo-»ono±ci caªego algorytmu. Zªo»ono± caªego algorytmu O(( V + E ) log V ). Gdy G jest (sªabo) spójny, to V = O( E ), a zatem wówczas zªo»ono± wynosi O( E log V ).

4. Algorytm - przebieg Rozwa»my graf G: 1 3 10 0 6 4 6 4, 11 Jako wierzchoªek startowy we¹my s = 1. Przypomnijmy pseudokody Dijkstra(G, w, s) 1 Initialize(G, s); 3 S := ; 4 Q := V(G); while Q <> do 6 u := ExtractMin(Q); 8 S := S {u}; 9 for ka»dy v Adj[u] do 10 Relax(u, v, w); 11 end 1 end; Relax(u, v, w) if d[v] > d[u] + w(u,v) then d[v] := d[u] + w(u,v); π[v] := u end end; Po przygotowaniach w wierszach -4 kolejka Q zawiera wierzchoªki 1,, 3, 4,, 6, a wektory π i d maj ksztaªt π[1] π[] π[3] π[4] π[] π[6] d[1] d[] d[3] d[4] d[] d[6] 0 Przebieg gªównej p tli π d Q 1 3 4 6 1 3 4 6 u v d[v] d[u] w(u, v) 3 4 6 0 1 > 0 + 10 3 4 6 1 0 10 1 4 > 0 + 3 4 6 1 1 0 10 1 > 0 + 10 3 6 1 1 1 0 10 10 4 10 > + 3 6 1 1 4 0 10 9 3 > 9 + 6 3 6 1 1 4 0 10 1 9 6 > 9 + 4, 3 6 1 1 4 0 10 1 9 13, 1 0 < 10 + 3 6 1 1 4 0 10 1 9 13, 9 < 10 + 0 3 1 1 4 0 10 1 9 13, 6 1 1 4 0 10 1 9 13, 3

4.8 Algorytm - wyniki W poprzednim paragrae wykonali±my algorytm Dijkstry na grae 1 3 10 0 6 4 6 4, 1 dla s = 1. Otrzymali±my wynik: w π[w] d[w] 1 0 1 10 3 1 4 1 4 9 6 13, w wektorze π s zakodowane najkrótsze drogi z s = 1 do poszczególnych wierzchoªków (poprzez system poprzedników), w wektorze d s zakodowane ich dªugo±ci. I tak np. najkrótsza droga z 1 do 3 to: 1 4 3, o dª. 1. Bellman-Ford.1 Uwagi wst pne Algorytm Bellmana-Forda. Dopuszczamy ujemne wagi (w przeciwie«stwie do algorytmu Dijkstry). Algorytm potra wykry ujemne cykle. Nie wykorzystuje kolejki priorytetowej (ªatwiejszy w implementacji). Ma za to wy»sz zªo»ono± od algorytmu Dijkstry.. Specykacja Algorytm Bellmana-Forda. Dane: graf skierowany G = (V, E), funkcja wagi w oraz wierzchoªek ¹ródªowy s V. Wynik: warto± true, gdy G nie zawiera ujemnych cykli osi galnych z s, ponadto: dla ka»dego v V osi galnego z s, warto± d[v] = δ(s, v) oraz poprzednik π[v] na najkrótszej drodze z s do v. Gdy G zawiera ujemny cykl osi galny ze ¹ródªa, warto± false.

.3 Algorytm 13 Bellman-Ford(G, w, s) 1 Initialize(G, s); 3 for i := 1 to V(G) 1 do 4 for ka»da (u,v) E(G) do Relax(u, v, w); 6 for ka»da (u,v) E(G) do if d[v] > d[u]+w(u, v) then 8 return false; 9 return true 10 end; Zªo»ono± : O( V E ) (p tla w wierszach 3- dominuj ca)..4 Algorytmy - proste porównanie Zasymulowanie przebiegu algorytmu Bellmana-Forda zostawimy jako wiczenie. W celu porównania obu algorytmów przypomnijmy,»e dla grafu G: 1 3 10 0 6 4 6 4, algorytm Dijkstry wykonaª 8 relaksacji (tyle ile kraw dzi). Natomiast algorytm Bellmana-Forda wykona (6 1) 8 = 40 relaksacji (patrz wiersze 3- kodu). (Czyli analogiczna tabela przebiegu, jak przedstawili±my przy przebiegu algorytmu Dijkstry, tu b dzie miaªa 40 wierszy).