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

Podobne dokumenty
Wstp. Warto przepływu to

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

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

Pojcie grafu. { {v 1, v 2 }, {v 2, v 3 }, {v 3, v 4 }, {v 4, v 1 },{v 2, v 4 } } )

Digraf. 13 maja 2017

Minimalne drzewa rozpinaj ce

Najkrótsze drogi w grafach z wagami

Skojarzenia. Najliczniejsze skojarzenia: Dokładne skojarzenia o maksymalnej sumie wag w obcionych pełnych grafach dwudzielnych.

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

oraz spełnia warunki: (*) dla wszystkich wierzchołków

Matematyczne Podstawy Informatyki

Temat: Problem minimalnego drzewa Steinera. Definicja problemu. Zastosowania. Algorytm dokładny Hakimi. Algorytmy aproksymacyjne.

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

Najkrótsze drogi w grafach z wagami

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

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

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

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

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

Algorytmy i Struktury Danych.

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

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

Wstęp do programowania

Sortowanie topologiczne skierowanych grafów acyklicznych

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

Kolorowanie wierzchołków

5. Najkrótsze ścieżki

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

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

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

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

Temat: Algorytmy zachłanne

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

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

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

Ogólne wiadomości o grafach

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

Rys1 Rys 2 1. metoda analityczna. Rys 3 Oznaczamy prdy i spadki napi jak na powyszym rysunku. Moemy zapisa: (dla wzłów A i B)

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy i Struktury Danych.

Lab. 02: Algorytm Schrage

TEORETYCZNE PODSTAWY INFORMATYKI

Znajdowanie skojarzeń na maszynie równoległej

Zagadnienie najkrótszej drogi w sieci

Porządek symetryczny: right(x)

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

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

Wykład 9. Znajdowanie najlepszej drogi

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

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Nieklasyczne modele kolorowania grafów

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

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

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}.

Przeszukiwanie przestrzeni stanów. Wprowadzenie do Sztucznej Inteligencji. Podstawowe problemy teorii przeszukiwania przestrzeni stanów

Algorytmy zwiazane z gramatykami bezkontekstowymi

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

KLUCZ PUNKTOWANIA ODPOWIEDZI

Zaawansowane algorytmy i struktury danych

Matematyka dyskretna - 5.Grafy.

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Drzewa poszukiwań binarnych

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Analiza algorytmów zadania podstawowe

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Algorytmiczna teoria grafów Przepływy w sieciach.

Algorytm wyznaczania najkrótszej ścieżki w grafie skierowanym w zbiorze liczb rozmytych

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

Sprawozdanie do zadania numer 2

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

Algorytmy i Struktury Danych

KLUCZ ODPOWIEDZI DO ZADA ZAMKNITYCH POPRAWNA ODPOWIED 1 D 2 C 3 C 4 B 5 D 6 A 7 D 8 D 9 A 10 C 11 B 12 A 13 A 14 B 15 D 16 B 17 C 18 A 19 B 20 D

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk Studenckie Koªo Automatyków SKALP

stopie szaro ci piksela ( x, y)

PRAWIDŁOWE ODPOWIEDZI DO ZADA ZAMKNITYCH

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

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy i Struktury Danych.

Egzaminy i inne zadania. Semestr II.

Matematyka dyskretna - 7.Drzewa

Temat: Algorytmy aproksymacyjne (przyblione) cz. I. Majc do rozwizania trudny obliczeniowo problem, moemy wybra jedno z dwóch nastpujcych podej:

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

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

Temat: Algorytmy aproksymacyjne dla wybranych NP-trudnych problemów grafowych

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

Algorytmy z powracaniem

Program do konwersji obrazu na cig zero-jedynkowy

Przyspieszenie knn. Plan wykładu. Klasyfikacja w oparciu o przykładach. Algorytm klasyfikacji. Funkcja odległoci

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Problemy optymalizacyjne - zastosowania

Wstęp do programowania

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

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Transkrypt:

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

Algorytm Dijkstry Załoenia: dany jest spójny graf prosty G z wagami na krawdziach waga w(e) dla kadej krawdzi e jest nieujemna dany jest wyróniony wierzchołek s Wyjcie: dla kadego wierzchołka v algorytm znajduje d[v], długo najkrótszej drogi z wierzchołka s do v. Przez długo drogi rozumiemy sum wag krawdzi nalecych do drogi. Uwaga: Algorytm mona łatwo zmodyfikowa tak, aby oprócz długoci drogi wyznaczał krawdzie do niej nalece oraz tak, aby działał w przypadku grafów skierowanych.

9 Pseudokod Uwaga S jest pomocniczym zbiorem wierzchołków (nazywany zbiorem pewnoci). O wierzchołku v nalecym do S wiadomo, e jego etykieta d[v] jest równa długoci najkrótszej drogi z s do v. Procedure Dijkstra(G, s) begin S := ; d[s] = ; d[ v] = dla v s; for i := to n do begin znajd v V\S, posiadajcy minimaln etykiet d[ v]; S := S {v}; for kady ssiad u V\S do begin d[ u] := min{d[ u], d[ v] + w({u,v}) };

4 Przykład s Procedure Dijkstra(G, s) begin S := ; d[s] = ; d[ v] = dla v s; for i := to n do begin znajd v V\S, o minimalnym d[ v]; S := S {v}; for kady ssiad u V\S do begin d[ u] := min{d[ u], d[ v] + w({u,v}) }; 4 4 2 4 2 9 2 2 Szukamy długoci najkrótszej drogi z s do t. Elementy zbioru S oznaczamy kolorem czerwonym. Odpowied: najkrótsza droga z s do t ma długo. 4 t 5

4 Uwagi o implementacji operacje znajd v V\S, o minimalnym d[ v]; S := S {v}; s wykonywane O(n) razy operacja d[ u] := min{d[ u], d[ v] + w({u,v}) }; jest wykonywana O(m) razy do wydajnej implementacji wykorzystujemy kopiec binarny o tej własnoci, e klucz zapamitany w danym wle jest mniejszy od kluczy jego synów elementami kopca s wierzchołki V\S, a klucze to liczby d[v] w ogólnym przypadku czas budowy kopca to O(nlogn), lecz w algorytmie Dijkstry (wykorzystujc fakt, e inicjalnie wszystkie klucze, z wyjtkiem d[s] s identyczne) czas ten jest liniowy wyszukiwanie wierzchołka w zbiorze V\S o minimalnym kluczu, dziki własnoci kopca, moe by wykonana w czasie stałym usunicie elementu o minimalnym kluczu (czyli instrukcja S := S {v}; ) wymaga czasu O(log( V\S )) = O(logn) operacja d[ u] := min{d[ u], d[ v] + w({u,v}) }; wymaga czasu O(log( V\S )) ostatecznie, czas działania algorytmu Dijkstry to O((n+m)logn)

42 Algorytm Bellmana-Forda Wejcie: obciony spójny digraf G. Dozwolone ujemne wagi na krawdziach. Algorytm stwierdza czy istnieje cykl o ujemnej sumie wag. Jeli taki cykl istnieje, to algorytm zwraca informacj o błdzie Jeli powyszego cyklu nie ma, to algorytm znajduje długoci najkrótszych dróg ze ródła s do wszystkich pozostałych wierzchołków grafu

4 Szkic algorytmu algorytm szuka długoci najkrótszych dróg z wyrónionego wierzchołka s do wszystkich pozostałych wierzchołków grafu długo znalezionej drogi z s do v jest zapamitana jako d[v] inicjalnie d[s] = oraz d[v] = dla s v główna ptla algorytmu jest wykonywana n razy kady przebieg głównej ptli polega na wykonaniu relaksacji kadej krawdzi relaksacja krawdzi (u,v) jest zmniejszeniem oszacowania d[v] jeli warto dotychczas zapamitana jest wiksza ni d[u] + w((u,v)), gdzie w((u,v)) to waga krawdzi (u,v) po zakoczeniu oblicze w głównej ptli algorytmu nastpuje sprawdzenie czy w digrafie istnieje cykl o ujemnej sumie wag, co jest realizowane poprzez sprawdzenie czy mona dokona relaksacji dowolnej krawdzi jeli relaksacja jest moliwa, to graf zawiera cykl o ujemnej sumie wag, co oznacza, e najkrótszych dróg nie mona obliczy jeli relaksacja nie jest moliwa, to zapamitane wartoci d[v] s szukanymi długociami najkrótszych dróg z s

44 Pseudokod procedure Bellman-Ford( G, w, s ) begin d[s] = ; for each v V(G)\{s} do d[v] = + ; for i := to n do for each (u,v) E(G) do if d[u] + w((u,v)) < d[v] then d[v] := d[u] + w((u,v)); for each (u,v) E(G) do if d[u] + w((u,v)) < d[v] then return false; return true;

45 Przykład 2 Rys. : Sytuacja po inicjalizacji. 2 Rys. 2: Sytuacja po wykonaniu ptli dla i = 4 2 Rys. : Sytuacja po wykonaniu ptli dla i = 2 5 4 2 5 Rys. 4: Sytuacja po wykonaniu ptli dla i = 2 5 Rys. 5: Sytuacja po wykonaniu ptli dla i = 4 2 5 Rys. : Sytuacja po wykonaniu ptli dla i = 5

4 Poprawno Tw Jeli digraf G nie posiada ujemnych cykli osigalnych ze ródła s, to po zakoczeniu algorytmu Bellmana-Forda d[v] jest równe długoci najkrótszej cieki z s do v dla kadego wierzchołka v osigalnego z s. Dowód: niech s=v,...,v k =v bdzie najkrótsz ciek z s do v mamy k < V(G) dowodzimy indukcyjnie, e d[v i ] jest równe długoci najkrótszej cieki z s do v i po i-tym przebiegu drugiej ptli for jeli i=, to własno wynika z faktu, e w fazie inicjalizacji algorytmu podstawiamy d[s]= i równo ta nie ulega zmianie podczas działania algorytmu niech i >. Po dokonaniu relaksacji krawdzi (v i-,v i ) w i-tym przebiegu ptli liczba d[v i ] przyjmuje warto najkrótszej cieki z s do v i.

4 Poprawno Tw. Jeli digraf G zawiera cykl o ujemnej wadze osigalny z s, to algorytm Bellmana-Forda zwraca warto false. Dowód: niech v,...,v k =v bdzie cyklem o ujemnej sumie wag, tzn. i=, )) < Gdyby algorytm zwrócił warto true, to dla kadego wierzchołka cyklu mamy d[v i ] d[v i- ] + w((v i-,v i )). Sumujc nierównoci parami otrzymujemy k i= Wartoci pierwszych dwóch sum w powyszym wyraeniu s sobie równe wic co prowadzi do sprzecznoci. i k d[ v ] k i= w(( v i v i k i= w(( d[ v i ] + k i= v i, v i )) w(( v i, v )) i