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.
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.
Algorytm DFS ”w głąb”
Przykład:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm DFS ”w głąb”
Wynik:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
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.
Algorytm BFS ”wszerz”
Przykład:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm BFS ”wszerz”
Wynik:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
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.
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.
Algorytm Dijkstry
Przykład:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
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.
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.
Algorytm Bellmana-Forda
Przykład:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm Bellmana-Forda
Przebieg:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
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.
Algorytm Floyda-Warshalla
Przykład:
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm Floyda-Warshalla
D(1)
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm Floyda-Warshalla
D(2)
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm Floyda-Warshalla
D(3)
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Algorytm Floyda-Warshalla
D(4)
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.
Koniec
Dziękuję za uwagę :)
Daniel Golubiewski Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu.