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

Post on 11-Jan-2017

222 views 1 download

Transcript of 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.

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.