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

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

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

Digraf. 13 maja 2017

Ogólne wiadomości o grafach

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

Matematyczne Podstawy Informatyki

Algorytmy wyznaczania centralności w sieci Szymon Szylko

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

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

5. Najkrótsze ścieżki

Rozwiązywanie problemów metodą przeszukiwania

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

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

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

ĆWICZENIE 1: Przeszukiwanie grafów cz. 1 strategie ślepe

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

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Grafy i sieci w informatyce - opis przedmiotu

TEORETYCZNE PODSTAWY INFORMATYKI

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Sprawozdanie do zadania numer 2

Wstęp do Programowania potok funkcyjny

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

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

Wykład 10 Grafy, algorytmy grafowe

Algorytmiczna teoria grafów

Wstęp do Programowania potok funkcyjny

Algorytmy i Struktury Danych.

Programowanie obiektowe

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel.

Programowanie dynamiczne cz. 2

Wstęp do Sztucznej Inteligencji

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

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

Programowanie dynamiczne

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

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

Programowanie obiektowe

Lista 0. Kamil Matuszewski 1 marca 2016

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Algorytmy i Struktury Danych.

Wykład 7. Algorytmy grafowe

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

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

Zadanie 1: Piętnastka

Wybrane podstawowe rodzaje algorytmów

Wyznaczanie optymalnej trasy problem komiwojażera

SZTUCZNA INTELIGENCJA

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

Kilka zagadnień dotyczących Sztucznej inteligencji.

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

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

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

Heurystyczne metody przeszukiwania

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

Załącznik Nr 5 do Zarz. Nr 33/11/ Kod przedmiotu:aisd2

TEORIA GRAFÓW I SIECI

Algorytmika Problemów Trudnych

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

5c. Sieci i przepływy

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

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

Grafy w MATLABie. LABORKA Piotr Ciskowski

Algorytmy stochastyczne laboratorium 03

Egzaminy i inne zadania. Semestr II.

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

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

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD V: Agent wciąż szuka rozwiązania (choć już nie na ślepo)

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010.

PRACA DYPLOMOWA MAGISTERSKA

Wstęp do programowania

Minimalne drzewa rozpinające

TEORIA GRAFÓW I SIECI

SZTUCZNA INTELIGENCJA

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

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

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Konspekt. 15 października Wykład III (16 października 2014 r.): optymalizacja kombinatoryczna na grafach (metody sieciowe)

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

LABORATORIUM 2: Przeszukiwanie grafów cz. 2 strategie heurystyczne

Algorytmy i Struktury Danych.

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

Przykład planowania sieci publicznego transportu zbiorowego

Informatyka II. Laboratorium.

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

Metody przeszukiwania

Grafy i ich reprezentacja

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

Matematyczne Podstawy Informatyki

Wstęp do programowania

Programowanie dynamiczne i algorytmy zachłanne

Podejście zachłanne, a programowanie dynamiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych.

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Łukasz Kowalik, ASD 2003: Algorytmy grafowe 1

Transkrypt:

Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015

Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First Search - 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 samego wierzchołka. Powoduje to konieczność modyfikacji podstawowego algorytmu w celu wyeliminowania zapętlenia się. Rozwiązaniem jest wprowadzenie dla każdego wierzchołka dodatkowego składnika, który będzie informował algorytm, czy wierzchołek ten został już odwiedzony.

Algorytm DFS w głąb Przykład:

Algorytm DFS w głąb Wynik:

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 odwiedzamy wszystkich nieodwiedzonych jeszcze sąsiadów sąsiadów. Itd.

Algorytm BFS wszerz Przykład:

Algorytm BFS wszerz Wynik:

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

Algorytm Dijkstry Działanie Algorytm Dijkstry znajduje w grafie wszystkie najkrótsze ścieżki pomiędzy wybranym wierzchołkiem a wszystkimi pozostałymi, przy okazji wyliczając również koszt przejścia każdej z tych ścieżek. Algorytm Dijkstry jest przykładem algorytmu zachłannego. Zastosowanie Z algorytmu Dijkstry można skorzystać przy obliczaniu najkrótszej drogi do danej miejscowości. Wystarczy przyjąć, że każdy z punktów skrzyżowań dróg to jeden z wierzchołków grafu, a odległości między punktami to wagi krawędzi.

Algorytm Dijkstry Przykład:

Algorytm Dijkstry D 1 2 3 4 5 1,2,3,4,5 3 - - 6-2,3,4,5 3 4-6 - 3,4,5 3 4 7 6 5 3,4 3 4 6 6 5 4 3 4 6 6 5

Algorytm Bellmana-Forda Algorytm Bellmana-Forda rozwiązuje problem najkrótszej ścieżki, tj. pozwala znaleźć ścieżkę o najmniejszej wadze pomiędzy dwoma wierzchołkami w grafie ważonym. W odróżnieniu od algorytmu Dijkstry, poprawność algorytmu Bellmana-Forda nie opiera się na założeniu, że wagi w grafie są nieujemne (nie może jednak występować cykl o łącznej ujemnej wadze osiągalny ze źródła). Za tę ogólność płaci się jednak wyższą złożonością czasową.

Algorytm Bellmana-Forda Przykład:

Algorytm Bellmana-Forda Przebieg:

Algorytm Floyda-Warshalla Algorytm Floyda-Warshalla jest przykładem algorytmu wyznaczają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 wymiarach N x N, gdzie N jest liczbą wierzchołków grafu. W rezultacie wykonania algorytmu w każdej komórce D[i,j] znajduje się wartość odpowiadająca kosztowi najkrótszej ścieżki prowadzącej z wierzchołka i do wierzchołka j.

Algorytm Floyda-Warshalla Przykład:

Algorytm Floyda-Warshalla D(1)

Algorytm Floyda-Warshalla D(2)

Algorytm Floyda-Warshalla D(3)

Algorytm Floyda-Warshalla D(4)

Koniec Dziękuję za uwagę :)