porównanie algorytmów wyszukiwania najkrótszych ścieżek między

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

Upload: lytu

Post on 11-Jan-2017

225 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Porównanie algorytmów wyszukiwanianajkrótszych ścieżek między wierzchołkami

grafu.

Daniel Golubiewski

Instytut Informatyki

22 listopada 2015

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 2: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm DFS ”w głąb”

Algorytm przejścia/przeszukiwania w głąb (ang. Depth FirstSearch - DFS). W przypadku grafu istnieje pewna trudność,która nie pojawiała się przy drzewach – w grafach krawędzie

mogą tworzyć cykle lub pętle, czyli prowadzić do tego samegowierzchołka. Powoduje to konieczność modyfikacji

podstawowego algorytmu w celu wyeliminowania zapętleniasię. Rozwiązaniem jest wprowadzenie dla każdego wierzchołkadodatkowego składnika, który będzie informował algorytm, czy

wierzchołek ten został już odwiedzony.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 3: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm DFS ”w głąb”

Przykład:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 4: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm DFS ”w głąb”

Wynik:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 5: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm BFS ”wszerz”

Algorytm przechodzenia wszerz (ang. breadth-first search,BFS) opisaliśmy już przy przechodzeniu drzew binarnych. Dla

grafu działa on następująco:Zaczynamy odwiedzanie od wierzchołka startowego. Następnie

odwiedzamy wszystkich jego sąsiadów. Dalej odwiedzamywszystkich nieodwiedzonych jeszcze sąsiadów sąsiadów. Itd.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 6: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm BFS ”wszerz”

Przykład:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 7: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm BFS ”wszerz”

Wynik:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 8: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Dijkstry

Algorytm Dijkstry, opracowany przez holenderskiegoinformatyka Edsgera Dijkstrę, służy do znajdowania najkrótszejścieżki z pojedynczego źródła w grafie o nieujemnych wagach

krawędzi.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 9: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Dijkstry

DziałanieAlgorytm Dijkstry znajduje w grafie wszystkie najkrótsześcieżki pomiędzy wybranym wierzchołkiem a wszystkimipozostałymi, przy okazji wyliczając również koszt przejściakażdej z tych ścieżek. Algorytm Dijkstry jest przykłademalgorytmu zachłannego.

ZastosowanieZ algorytmu Dijkstry można skorzystać przy obliczaniunajkrótszej drogi do danej miejscowości. Wystarczy przyjąć, żekażdy z punktów skrzyżowań dróg to jeden z wierzchołkówgrafu, a odległości między punktami to wagi krawędzi.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 10: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Dijkstry

Przykład:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 11: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Dijkstry

D 1 2 3 4 51,2,3,4,5 3 - - 6 -2,3,4,5 3 4 - 6 -3,4,5 3 4 7 6 53,4 3 4 6 6 54 3 4 6 6 5

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 12: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Bellmana-Forda

Algorytm Bellmana-Forda rozwiązuje problem najkrótszejścieżki, tj. pozwala znaleźć ścieżkę o najmniejszej wadzepomiędzy dwoma wierzchołkami w grafie ważonym. W

odróżnieniu od algorytmu Dijkstry, poprawność algorytmuBellmana-Forda nie opiera się na założeniu, że wagi w grafie są

nieujemne (nie może jednak występować cykl o łącznejujemnej wadze osiągalny ze źródła). Za tę ogólność płaci się

jednak wyższą złożonością czasową.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 13: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Bellmana-Forda

Przykład:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 14: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Bellmana-Forda

Przebieg:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 15: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

Algorytm Floyda-Warshalla jest przykładem algorytmuwyznaczającegon koszt najkrótszej ścieżki między każdą parą

wierzchołków w grafie ważonym. Do wyznaczania najkrótszychścieżek stosuje się najczęściej reprezentację grafu w postaci

macierzy sąsiedztwa. Rozwiązanie problemu jest równieżzapisywane w postaci tablicy dwuwymiarowej D o wymiarachN x N, gdzie N jest liczbą wierzchołków grafu. W rezultaciewykonania algorytmu w każdej komórce D[i,j] znajduje się

wartość odpowiadająca kosztowi najkrótszej ścieżkiprowadzącej z wierzchołka i do wierzchołka j.

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 16: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

Przykład:

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 17: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

D(1)

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 18: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

D(2)

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 19: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

D(3)

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 20: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Algorytm Floyda-Warshalla

D(4)

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.

Page 21: Porównanie algorytmów wyszukiwania najkrótszych ścieżek między

Koniec

Dziękuję za uwagę :)

Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.