Wykład 9. Znajdowanie najlepszej drogi

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

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

Digraf. 13 maja 2017

Matematyczne Podstawy Informatyki

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

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Ogólne wiadomości o grafach

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

5. Najkrótsze ścieżki

Algorytmy i Struktury Danych.

Krzywe stożkowe. 1 Powinowactwo prostokątne. 2 Elipsa. Niech l będzie ustaloną prostą i k ustaloną liczbą dodatnią.

TEORETYCZNE PODSTAWY INFORMATYKI

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

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

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wstęp do Programowania potok funkcyjny

Wykład 3. Drzewa czerwono-czarne

Najkrótsze drogi w grafach z wagami

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

a) 7 b) 19 c) 21 d) 34

Wstęp do Programowania potok funkcyjny

Sprawozdanie do zadania numer 2

Wykład 7. Algorytmy grafowe

6. Wstępne pojęcia teorii grafów

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

Wstęp do programowania

Najkrótsze drogi w grafach z wagami

Programowanie obiektowe

Algorytmy i Struktury Danych

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Podstawowe własności grafów. Wykład 3. Własności grafów

Algorytmiczna teoria grafów

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Drzewa poszukiwań binarnych

Wstęp do programowania

Zagadnienie najkrótszej drogi w sieci

Algorytmy i Struktury Danych.

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

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

Struktury danych: stos, kolejka, lista, drzewo

Porządek symetryczny: right(x)

Listy, kolejki, stosy

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

ALGORYTMY I STRUKTURY DANYCH

Sztuczna Inteligencja i Systemy Doradcze

Skrypt 18. Trygonometria

Programowanie obiektowe

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Podejście zachłanne, a programowanie dynamiczne

Wykład 6. Drzewa poszukiwań binarnych (BST)

Matematyka dyskretna - 7.Drzewa

Programowanie dynamiczne i algorytmy zachłanne

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

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Drzewa wyszukiwań binarnych (BST)

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Wykłady z Matematyki Dyskretnej

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

Graf. Definicja marca / 1

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

Złożoność obliczeniowa klasycznych problemów grafowych

Grafem skierowanym. Typowe zastosowania grafów skierowanych obejmują wiele dziedzin:

Kolejka Priorytetowa. Algorytmy i Struktury Danych. (c) Marcin Sydow. Kolejka priorytetowa. implementacja. Kopiec Binarny. Tablicowa.

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Wykład 8. Drzewa AVL i 2-3-4

Wykład 2. Drzewa poszukiwań binarnych (BST)

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Grafy i ich reprezentacja

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Matematyka dyskretna - 5.Grafy.

Znajdowanie skojarzeń na maszynie równoległej

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

Struktury Danych i Złożoność Obliczeniowa

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Minimalne drzewa rozpinające

Problem 1 prec f max. Algorytm Lawlera dla problemu 1 prec f max. 1 procesor. n zadań T 1,..., T n (ich zbiór oznaczamy przez T )

Egzaminy i inne zadania. Semestr II.

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Algorytmy i Struktury Danych.

Zagadnienia optymalizacji na grafach

Algorytmy i Struktury Danych

0-0000, , , itd

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Laboratorium nr 7 Sortowanie

Algorytmy zachłanne. dr inż. Urszula Gałązka

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

Transkrypt:

Wykład 9 Znajdowanie najlepszej drogi 1

Algorytmy znajdowania najkrótszyh śieżek Właśiwośi najkrótszyh śieżek Algorytm Bellmana-Forda Algorytm Dijsktry Literatura Cormen, Leiserson, Rivest, Wprowadzenie do algorytmów, rozdz.

Grafy z wagami - powtórzenie Grafem z wagami nazywamy graf, dla którego każdej krawędzi przypisana jest waga (koszt): w(v i, v j ) > 0. Każdy graf może być traktowany jako graf z wagami jeśli przyjąć wagę 1 dla każdej krawędzi. Dodatkowo jeśli wierzhołki nie są połązone to można przyjąć, że krawędź łąząa je (nieistniejąa) ma wagę. 1 3 4 4 8 1 Koszt śieżki = suma kosztów krawędzi ją tworząyh: k i= 1 ( ) = w( v, v ) w p i 1 i 3

Przykład grafu z wagami a 1 b s 10 3 9 4 d 4

Dwie podstawowe własnośi dla najkrótszyh śieżek Nierówność trójkąta nieh G=(V,E) będzie skierowanym grafem z wagami, w: E R funkją kosztu, a s V wierzhołkiem pozątkowym. Wtedy dla każdej krawędzi e=(u,v) E: δ(s,v) δ(s,u) + w(u,v) Struktura optymalnej śieżki nieh p = <v 1,.. v k > będzie najkrótsząśieżką pomiędzy v 1 i v k. Wtedy jej podśieżka p ij = <v i,.. v j >, dla 1 i,j k, jest najkrótsząśieżka pomiędzy v i i v j.

Krawędzie o ujemnyh wagah W niektóryh zadaniah mogą pojawić się koszty ujemne. Najkrótsze śieżki są dobrze zdefiniowane tylko dla zadań z nieujemnymi kosztami śieżek jeśli dopuśimy koszty ujemne każda droga może być pomniejszona poprzez dodanie yklu o wartośi ujemnej - 10 a b 1 3-1 Można dopuśić ujemne wagi, ale nie można ykli o koszie ujemnym (w przykładzie a->b->->a ma koszt -1)!

Najkrótsze drogi, a ykle Najkrótsza śieżka pomiędzy dwoma dowolnymi węzłami nie zawiera ykli. Reprezentaja najkrótszyh śieżek pomiędzy wybranym węzłem, a wszystkimi pozostałymi jest taka sama jak dla drzewa (podgrafu poprzedników) w BFS (breath-first tree): G π = (V π,e π ) takie, że V π = {v V: π[v] null} {s} i E π = {(π[v],v), v V {s}} Udowodnimy, że drzewo BFS jest drzewem najkrótszyh śieżek z korzeniem w wybranym węźle.

Przykład drzewa najkrótszyh śieżek 1 0 s 3 3 9 a 1 4 3 b d 11 8

Przykład drzewa najkrótszyh śieżek 0 s 3 3 9 a 1 4 3 b d 11 9

Metoda kolejnyh przybliżeń Podobnie, jak dla BFS (dla grafów bez wag) przehowujemy etykietę, która jest kolejnym przybliżeniem kosztu najlepszej drogi z s do v. Pozątkowo, dist[s] = 0 oraz dist[v] = dla wszystkih v s, π[v] = null. Dla kolejnyh iteraji algorytmu: dist[v] δ(s,v). I na konie: dist[v] = δ(s,v) i (π[v],v) E π 10

Relaksaja Proes relaksaji krawędzi (inazej osłabiania ogranizeń) (u,v) polega na sprawdzaniu, zy możemy poprawić najlepsząśieżkę z s do v jeśli droga będzie wiodła przez wierzhołek u. Relax(u,v) if dist[v] > dist[u] + w(u,v) then dist[v] dist[u] + w(u,v) π[v] u 11

Własnośi relaksaji Nierówność trójkąta e = (u,v) E: δ(s,v) δ(s,u) + w(u,v) Własność ogranizenia górnego v V: dist[v] δ(s,v) Własność braku drogi jeżeli nie istnieje droga z s do v, to: dist[v]=δ(s,v) = 1

Własnośi relaksaji Własność zbieżnośi jeżeli s u v jest najkrótsząśieżką w G dla pewnego u i v, oraz dist[u]= δ(s,u) zawsze przed wykonaniem relaksaji krawędzi (u,v), to również dist[v]=δ(s,v) zawsze po relaksaji. Własność relaksaji śieżki nieh p = <v 0,.. v k > będzie najkrótsząśieżką pomiędzy v 0 i v k. Jeżeli relaksaja krawędzi jest przeprowadzana w kolejnośi (v 0, v 1 ), (v 1, v ), (v k-1, v k ), to dist[v k ]=δ(s,v k ).. 13

Algorytmy wyznazania najkrótszyh śieżek 1. Algorytm Bellmanna-Forda. Algorytm Dijkstry uogólnienie BFS 14

Algorytm Bellmana-Forda przegląd Dopuszza ujemne wagi. Jeśli napotkany zostaje ykl o wadze ujemnej zwraane jest negative yle. Idea: Istnieje najlepsza droga od s do każdego innego wierzhołka nie zawierająa ykli dodatnih (ykle muszą zostać wyeliminowane). Maksymalna ilość krawędzi w takiej śieże wynosi V 1, ponieważ w śieże bez ykli może być o najwyżej V wierzhołków. wystarzy sprawdzaćśieżki do V 1 wierzhołków. 1

Algorytm Bellmana-Forda for if ( ) for każdego u, v E doif dist[v] > dist[u] + w u, v dist[ v] dist[ u] + w( u, v) π[ v] u ( ) Bellman- Ford( G, s) Initialize( G, s) fori 1to V 1 ( u, v ) E [ v] > d[ u] + w( u, v ) return"negativeyle" każdego dist 1

Przykład: algorytm Bellmana-Forda (1) 0 s 8 a - -3-4 9 b d (a,b) (a,) (a,d) (b,a) (,b) (,d) (d,s) (d,b) (s,a) (s,b) 1

Przykład: algorytm Bellmana-Forda () 0 s 8 a - b -3-4 9 d (a,b) (a,) (a,d) (b,a) (,b) (,d) (d,s) (d,b) (s,a) (s,) 18

Przykład: algorytm Bellmana-Forda (3) 0 s 8 11 4 a - b -3-4 9 d (a,b) (a,) (a,d) (b,a) (,b) (,d) (d,s) (d,b) (s,a) (s,) 19

Przykład: algorytm Bellmana-Forda (4) 0 s 8 4 a - b -3-4 9 d (a,b) (a,) (a,d) (b,a) (,b) (,d) (d,s) (d,b) (s,a) (s,b) 0

Przykład: algorytm Bellmana-Forda () 0 s 8 4 a - b -3-4 9 d - (a,b) (a,) (a,d) (b,a) (,b) (,d) (d,s) (d,b) (s,a) (s,b) 1

Własnośi algorytmu Bellmana-Forda Przy pierwszym przejśiu krawędzi tylko sąsiedzi s są rozpatrywani (śieżki o długośi 1). Znajdujemy wszystkie najlepsze śieżki do tyh węzłów. Przy drugim przejśiu znajdujemy najlepsze drogi o długośi. Po V -1 przejśiah, sprawdzone zostały wszystkie możliwośi. Cel: staramy się poprawićśieżkę z poprzedniego przebiegu jeśli jest to możliwe, bez tworzenia ujemnego yklu.

Złożoność algorytmu Bellmana-Forda odwiedzenie V 1 wierzhołków O( V ) Przeprowadzanie relaksaji dla wszystkih krawędzi O( E ) Łąznie, O( V. E ) dla zasu i O( V + E ) dla pamięi. 3

Algorytm Bellmana-Forda dla DAG Dla skierowanyh grafów aykliznyh (Direted Ayli Graphs - DAG), wystarzająe jest relaksaji O( V + E ) jeśli wierzhołki są odwiedzane w porządku topologiznym (jeśli graf zawiera krawędź (u,v) to wierzhołek u występuje przed wierzhołkiem v): DAG-Shortest-Path(G) 1. Posortuj topologiznie wierzhołki grafu G. Inijuj G (dist[v] i π(v)) z wierzhołkiem s jako źródłem. 3. for każdego wierzhołka u do 4. for każdego wierzhołka v połązonego z u do. Relax(u,v) 4

Przykład: algorytm Bellmana-Forda dla DAG (1) a 0 s 1 b -1 d - e 3 4 Wierzhołki są posortowane od lewej do prawej

Przykład: algorytm Bellmana-Forda dla DAG () a 0 s 1 b -1 d - e 3 4

Przykład: algorytm Bellmana-Forda dla DAG (3) a 0 s 1 b -1 d - e 3 4

Przykład: algorytm Bellmana-Forda dla DAG(4) a 0 s 1 b -1 d - 4 e 3 4 8

Przykład: algorytm Bellmana-Forda dla DAG () a 0 s 1 b -1 d - 4 e 3 4 9

Przykład: algorytm Bellmana-Forda dla DAG () a 0 s 1 b -1 d - 3 e 3 4 30

Przykład: algorytm Bellmana-Forda dla DAG () a 0 s 1 b -1 d - 3 e 3 4 31

Poprawność algorytmu Bellmana-Forda dla DAG Własność relaksaji śieżki nieh p = <v 0,.. v k > będzie najkrótsząśieżką pomiędzy v 0 i v k. Jeżeli relaksaja śieżek jest przeprowadzana w kolejnośi (v 0, v 1 ), (v 1, v ), (v k-1, v k ), to dist[v k ]=δ(s,v k ). Dla DAG, mamy dobry porządek wierzhołków! Stąd złożoność: O( V + E ). 3

Algorytm Dijkstry - przegląd Idea: robimy to samo o przy BFS dla grafów bez wag, z różniami: Korzystamy z funkji kosztu jako odległośi Korzystamy z kolejki priorytetowej zamiast zwykłej kolejki. 33

Algorytm BFS BFS(G, s) dist[s] = 0; π[s] = null for dla wszystkih wierzhołków u z V {s} do label[u] not_visited; dist[u] = ; π[u] = null EnQueue(Q,s) while Q is not empty do u DeQueue(Q) for każdego v, który jest sąsiadem u do if label[v] = not_visited then dist[v] dist[u] + 1; π[v] u EnQueue(Q,v) label[u] visited 34

Przykład: algorytm BFS a b s d 3

Przykład: algorytm Dijkstry a 1 b 0 s 10 3 9 4 d 3

Algorytm Dijkstry Dijkstra(G, s) dist[s] = 0; π[u] = null for dla wszystkih wierzhołków u w V {s} do label[u] not_visited; dist[u] = ; π[u] = null Q s while Q is not empty do u Extrat-Min(Q) for każdego v, sąsiada of u do if label[v] = not_visited then if d[v] > d[u] + w(u,v) then d[v] d[u] + w(u,v);π[v] = u Insert-Queue(Q,v) label[u] = visited 3

Przykład: algorytm Dijkstry (1) a 1 b 0 s 10 3 9 4 d 38

Przykład: algorytm Dijkstry () 10 a 1 b 0 s 10 3 9 4 d 39

Przykład: algorytm Dijkstry (3) 8 14 a 1 b 0 s 10 3 9 4 d 40

Przykład: algorytm Dijkstry (4) 8 13 a 1 b 0 s 10 3 9 4 d 41

Przykład: algorytm Dijkstry () 8 9 a 1 b 0 s 10 3 9 4 d 4

Przykład: algorytm Dijkstry () 8 9 a 1 b 0 s 10 3 9 4 d 43

Poprawność algorytmu Dijkstry Twierdzenie: po zakońzeniu algorytmu Dijkstry, dla każdego wierzhołka v V, mamy dist[v] = δ(s,v). Definija: śieżkę z s do v będziemy nazywać spejalną jeśli jest to najkrótsza śieżka, dla której wszystkie wierzhołki (być może poza v) należą do S zbiór wierzhołków, dla któryh oblizono już najlepsze śieżki z s. Lemmat: na konie każdej iteraji pętli while, zahodzą dwie własnośi: 1. Dla każdego w S, dist[w] jest długośią najkrótszej śieżki z s do w.. Dla każdego w V S, dist(w) jest długośią najkrótszej spejalnej śieżki z s do w. Twierdzenie zahodzi, gdy S = V. 44

Złożoność algorytmu Dijkstry Algorytm przeprowadza V operaji Get-Min oraz E operaji EnQueue. Jeśli kolejka priorytetowa jest implementowana jako kopie (heap), wstawianie zabiera O(lg V ) a Get-Min O(lg( V ). Całkowity zas: O( V lg V ) + O( E lg V ) = O( E lg V ) Jeśli E = O( V ), nie dostajemy optymalnośi. W tym wypadku, przeprowadzamy wielokrotnie więej operaji wstawiania, niż wyjmowania. Rozwiązanie: implementaja tabliowa! Wstawianie zajmujeo(1) i Get-Min O( V ) O( V ) + O( E ) = O( V ) o jest lepsze niż dla niż dla kopa póki E jest O( V /lg ( V )). 4

Podsumowanie Rozwiązanie problemu najkrótszyh śieżek dla grafu odbywa się za pomoą relaksaji, opartej na nierównośi trójkąta: dla każdej krawędzi e=(u,v) E: δ(s,v) δ(s,u) + w(u,v) Mamy dwa algorytmy rozwiązująe ten problem: Bellmana-Forda: dla każdego wierzhołka, relaksaja po wierzhołkah. Zajmuje to zas O( E. V ). Działa dla grafów bez ykli ujemnyh. Dijkstry: podobny do BFS, działa w zasie O( E lg V ). 4