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

Podobne dokumenty
Digraf. 13 maja 2017

Ogólne wiadomości o grafach

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

Matematyczne Podstawy Informatyki

Algorytmy wyznaczania centralności w sieci Szymon Szylko

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

Zastosowanie teorii grafów w Geograficznych Systemach Informacyjnych

Algorytmy i Struktury Danych.

Wstęp do programowania

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

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

Algorytmy i Struktury Danych.

Algorytmiczna teoria grafów

5c. Sieci i przepływy

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

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

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

Minimalne drzewa rozpinające

Programowanie sieciowe. Tadeusz Trzaskalik

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Matematyka dyskretna - 7.Drzewa

5. Najkrótsze ścieżki

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

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

Sprawozdanie do zadania numer 2

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

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

Suma dwóch grafów. Zespolenie dwóch grafów

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

Programowanie dynamiczne i algorytmy zachłanne

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

Przykład planowania sieci publicznego transportu zbiorowego

Algorytmiczna teoria grafów Przepływy w sieciach.

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

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

Algorytmy mrówkowe (optymalizacja kolonii mrówek, Ant Colony optimisation)

PRACA DYPLOMOWA MAGISTERSKA

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

Wstęp do programowania

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Wykorzystanie algorytmów mrówkowych w dynamicznym problem

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Sieć (graf skierowany)

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

Zagadnienie najkrótszej drogi w sieci

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

Programowanie obiektowe

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Matematyka dyskretna - 5.Grafy.

Programowanie obiektowe

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

Programowanie dynamiczne

Opracowanie prof. J. Domsta 1

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Wykład 7. Algorytmy grafowe

MODELE SIECIOWE 1. Drzewo rozpinające 2. Najkrótsza droga 3. Zagadnienie maksymalnego przepływu źródłem ujściem

Zestaw A-1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: 4,3,3 2,2,1 Zad. 2: 3,3,3 Zad.

Zestaw C-11: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp i.h)!!! Zad. 1: Zad. 2:

7. Teoria drzew - spinanie i przeszukiwanie

Prawa potęgowe w grafach przepływu informacji dla geometrycznych sieci neuronowych

Grafy Alberta-Barabasiego

Sortowanie topologiczne skierowanych grafów acyklicznych

Plan wykładu. Przykład. Przykład 3/19/2011. Przykład zagadnienia transportowego. Optymalizacja w procesach biznesowych Wykład 2 DECYZJA?

Algorytmy stochastyczne laboratorium 03

Podejście zachłanne, a programowanie dynamiczne

1 Automaty niedeterministyczne

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

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

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Informatyka II. Laboratorium.

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

G. Wybrane elementy 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

Znajdowanie wyjścia z labiryntu

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

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.

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

Heurystyczne metody przeszukiwania

Algorytmy i Struktury Danych.

ALGORYTMY OPTYMALIZACJI TRAS PRZEJAZDU POJAZDÓW

Przykładowe rozwiązania

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Wyznaczanie optymalnej trasy problem komiwojażera

Wybrane podstawowe rodzaje algorytmów

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Informatyka w szkole - algorytm Dijkstry dla każdego. Krzysztof Diks Instytut Informatyki, Uniwersytet Warszawski

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

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

ZAGADNIENIE TRANSPORTOWE(ZT)

Algorytmika Problemów Trudnych

Planowanie drogi robota, algorytm A*

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

Algorytm Stentz a D. Przemysław Klęsk Katedra Metod Sztucznej Inteligencji i Matematyki Stosowanej

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Transkrypt:

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Używane struktury danych: V - zbiór wierzchołków grafu, V = {1,2,3...,n} E - zbiór krawędzi grafu, E = {(i,j),...}, gdzie i, j Î V i istnieje krawędź pomiędzy i,j (graf nieskierowany) lub od i do j (graf skierowany) v o - wybrany wierzchołek grafu, v o Î V, który jest początkiem wyznaczania najkrótszych ścieżek do wszystkich pozostałych wierzchołków d(i) - koszt dojścia od wierzchołka vo do wierzchołka i-tego wzdłuż najkrótszej ścieżki. Koszt dojścia jest sumą wag krawędzi, przez które przechodzimy posuwając się wzdłuż wyznaczonej najkrótszej ścieżki. p(i) - dla i-tego wierzchołka grafu p(i) zawiera numer wierzchołka poprzedzającego na najkrótszej ścieżce waga(i,j) - waga ścieżki pomiędzy wierzchołkami i oraz j (graf nieskierowany) lub od wierzchołka i-tego do j-tego (graf skierowany) S - zbiór wierzchołków grafu o policzonych już najkrótszych ścieżkach od wybranego wierzchołka v o Q - zbiór wierzchołków grafu, dla których najkrótsze ścieżki nie zostały jeszcze policzone Dane wejściowe n, V, E, v o Dane wyjściowe Dla każdego wierzchołka i należącego do V algorytm wyznacza koszt dojścia d(i) oraz poprzednika p(i) na najkrótszej ścieżce. K01: S Ø; Q V K02: Dla i = 1,2,...,n : p(i) 0; d(i) K03: d(v o ) 0 K04: Dopóki Q Ø wykonuj kroki od K05 do K07 K05: u wierzchołek ze zbioru Q o najmniejszym d(u) K06: Q Q \ u; S S u K07: Dla każdego v Q, takiego że krawędź (u,v) E, jeśli d(v) > d(u) + waga(u,v), to d(v) d(u) + waga(u,v); p(v) u K08: Zakończ algorytm

Działanie algorytmu Dijkstry dla przykładowego grafu. Dany jest graf skierowany G = (V,E): V = {1,2,3,4,5,6} E = {(1-2,3),(1-4,3),(2-3,2),(3-1,6),(3-6,1),(4-5,1),(5-3,1),(5-6,2),(6-4,3)} W grafie wyróżniamy jeden z wierzchołków. Tutaj jest to wierzchołek 1. Będziemy wyznaczać najniższe koszty dojścia od wyróżnionego wierzchołka do wszystkich pozostałych wierzchołków w grafie oraz najkrótsze ścieżki pomiędzy wyróżnionym wierzchołkiem, a wszystkimi pozostałymi wierzchołkami w grafie. Tworzymy dwa zbiory S (wierzchołki, dla których są policzone najkrótsze ścieżki) oraz Q (wierzchołki jeszcze nie przetworzone). Zbiór S jest początkowo pusty. Zbiór Q obejmuje wszystkie wierzchołki grafu. Dla każdego wierzchołka v ustawiamy d(v). Dla wybranego wierzchołka v o ustawiamy d(v o ) 0. Ustawiamy również p(v) 0. d(indeks) 0 p(indeks) 0 0 0 0 0 0 Jest to wierzchołek 1 (czyli nasze v o ). Wierzchołek ten przenosimy do zbioru S. Następnie sprawdzamy wartość d wszystkich sąsiadów przeniesionego wierzchołka (2 i 4). Jeśli ich d jest większe od kosztu d(1) + waga krawędzi do sprawdzanego wierzchołka, to modyfikujemy odpowiednio d i p dla tych wierzchołków. d(indeks) 0 3 3 p(indeks) 0 1 0 1 0 0

Są dwa takie wierzchołki: 2 i 4 o d=3. Wybieramy arbitralnie wierzchołek nr 2 i przenosimy go do zbioru S. Wierzchołek 2 posiada tylko jednego sąsiada - 3. Modyfikujemy odpowiednio d[3] i p[3]. d(indeks) 0 3 5 3 p(indeks) 0 1 2 1 0 0 Teraz jest to wierzchołek 4 o d[4] = 3. Przenosimy go do zbioru S. Wierzchołek 4 posiada tylko jednego sąsiada - 5. Modyfikujemy odpowiednio d[5] i p[5]. d(indeks) 0 3 5 3 4 p(indeks) 0 1 2 1 4 0 Jest to wierzchołek 5 o d[5] = 4. Przenosimy go do zbioru S. Wierzchołek 5 posiada dwóch sąsiadów: 3 i 6. Ponieważ d[3]=5 jest takie samo jak d[5] + waga(5-3) = 4+1=5, nie modyfikujemy parametrów d i p dla wierzchołka 3. Do modyfikacji jest tylko wierzchołek 6. Jest to wierzchołek 3 o d[3] = 5. Przenosimy go do zbioru S. Wierzchołek 3 posiada dwóch sąsiadów: 1 i 6. Ponieważ wierzchołek 1 jest już w zbiorze S, to nie bierzemy go pod uwagę. Drugi wierzchołek posiada d[6]=6, czyli takie samo jak d[3]+waga(3-6)=5+1=6. Nie modyfikujemy zatem wierzchołka 6.

Do zbioru S przenosimy ostatni wierzchołek z Q. Wierzchołek ten nie posiada sąsiadów w Q połączonych z nim krawędzią, dlatego nic nie modyfikujemy. Ponieważ zbiór Q stał się pusty, algorytm kończymy. Po zakończeniu algorytmu w tablicy d mamy najmniejsze koszty dojścia do poszczególnych wierzchołków w grafie. Np. minimalny koszt przejścia z wierzchołka 1 do 6 wynosi d(6)=6, a z 1 do 5 wynosi d(5)=4. Informacja o najkrótszych ścieżkach zakodowana jest w tablicy p, która dla węzła i-tego określa jego bezpośredniego poprzednika p(i) na tej ścieżce. Informacja podana w ten sposób pozwala nam się cofać po ścieżce wstecz, czyli przejść ją od jej końca do początku. Aby uzyskać odpowiedni ciąg wierzchołków musimy postępować wg poniższego algorytmu: Wejście i - numer wierzchołka grafu, do którego ma prowadzić ścieżka z wybranego wierzchołka p - tablica poprzedników na najkrótszej ścieżce dla poszczególnych wierzchołków grafu Wyjście L - lista kolejnych wierzchołków najkrótszej ścieżki od wybranego wierzchołka grafu do wierzchołka i-tego K01: L Ø K02: Dopóki i 0, wykonuj kroki od K03 do K04 K03: Wstaw i na początek listy L K04: i p(i) K05: Zakończ algorytm Do odwrócenia kolejności wierzchołków można również wykorzystać strukturę stosu. K01: Zeruj stos K02: Dopóki i 0, wykonuj kroki od K03 do K04 K03: Umieść i na stosie K04: i p(i)

K05: Dopóki stos nie jest pusty, pobierz wierzchołek ze stosu i prześlij go na wyjście K06: Zakończ algorytm