Matematyczne Podstawy Informatyki

Podobne dokumenty
Matematyczne Podstawy Informatyki

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

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

Matematyczne Podstawy Informatyki

Digraf. 13 maja 2017

Algorytmiczna teoria grafów

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

Opracowanie prof. J. Domsta 1

Ogólne wiadomości o grafach

Algorytmy i Struktury Danych.

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

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

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

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

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

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

Graf. Definicja marca / 1

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

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

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

Wykład 4. Droga i cykl Eulera i Hamiltona

Matematyka dyskretna

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

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Minimalne drzewa rozpinające

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska.

Sortowanie topologiczne skierowanych grafów acyklicznych

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

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

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

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

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Podstawowe własności grafów. Wykład 3. Własności grafów

7. Teoria drzew - spinanie i przeszukiwanie

Grafy i sieci w informatyce - opis przedmiotu

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

Algorytmy i Struktury Danych.

Wykłady z Matematyki Dyskretnej

Matematyka dyskretna - 7.Drzewa

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

Wykład 10 Grafy, algorytmy grafowe

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

TEORIA GRAFÓW I SIECI

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Sprawozdanie do zadania numer 2

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Podejście zachłanne, a programowanie dynamiczne

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

Wstęp do programowania

Matematyka dyskretna - 5.Grafy.

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

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

Znajdowanie wyjścia z labiryntu

TEORIA GRAFÓW I SIECI

Szukanie najkrótszych dróg z jednym ródłem

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

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

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

Egzaminy i inne zadania. Semestr II.

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

E ' E G nazywamy krawędziowym zbiorem

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

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

Rozwiązywanie problemów metodą przeszukiwania

Algorytmy i Struktury Danych.

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Programowanie dynamiczne cz. 2

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.

5. Najkrótsze ścieżki

Grafy i Zastosowania. 5: Drzewa Rozpinające. c Marcin Sydow. Drzewa rozpinające. Cykle i rozcięcia fundamentalne. Zastosowania

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

Lista 4. Kamil Matuszewski 22 marca 2016

Wstęp do Programowania potok funkcyjny

6a. Grafy eulerowskie i hamiltonowskie

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Programowanie dynamiczne i algorytmy zachłanne

Elementy teorii grafów Elementy teorii grafów

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

G. Wybrane elementy teorii grafów

Wstęp do Programowania potok funkcyjny

Grafy. Jeżeli, to elementy p i q nazywamy końcami krawędzi e. f a b c d e γ f {1} {1,2} {2,3} {2,3} {1,3}

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

Z-LOG-1004 Matematyka dyskretna Discrete mathematics. Przedmiot podstawowy Wybieralny polski Semestr III

Algorytmy z powracaniem

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

5c. Sieci i przepływy

Algorytmy i struktury danych.

6. Wstępne pojęcia teorii grafów

Przykłady problemów optymalizacyjnych

Algorytm chińskiego listonosza Katarzyna Ignaszewska SPI51. Temat: Problem chińskiego listonosza, czyli jak obejść miasto najmniejszym nakładem sił.

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Wybrane podstawowe rodzaje algorytmów

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

Tworzenie gier na urządzenia mobilne

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

Wyznaczanie optymalnej trasy problem komiwojażera

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

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

Transkrypt:

Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0

Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą wszerz:. Wybrany wierzchołek grafu włożyć do kolejki Q (FIFO) i zaznaczenie go.. Dopóki kolejka q nie jest pusta:. Wybór pierwszego elementu kolejki Q.. Dopisanie do kolejki wszystkich wierzchołków z nim sąsiadujących (o ile nie były jeszcze zaznaczone) i zaznaczenie każdego z nich..3 Usunięcie pierwszego elementu kolejki Q.

Przeszukiwanie w głąb i wszerz II Przeszukiwanie metodą w głąb:. Zaznaczenie wybranego wierzchołka v.. Dla każdego wierzchołka sąsiadującego z v:. Jeśli wierzchołek nie został zaznaczony jako odwiedzony to rekurencyjnie odwiedź dany wierzchołek.

Przeszukiwanie w głąb i wszerz III Przeszukiwanie wszerz: 6 9 0

Przeszukiwanie w głąb i wszerz IV Przeszukiwanie w głąb: 6 3 9 0

Poszukiwanie ścieżki prostej Rozwiązanie bazuje na przeszukiwaniu w głąb. Algorytm wykorzystuje rekurencyjną funkcję searchs(int v, int w). Funkcja sprawdza dla każdej krawędzi incydentnej z wierzchołkiem v, czy istnieje ścieżka prosta od t do v, która nie przechodzi przez ten wierzchołek. Do oznaczenia wierzchołków, które już zostały odwiedzone służy wektor. Algorytm działa w czasie liniowym.

Ścieżka Hamiltona Algorytm wykorzystuje rekurencyjną funkcję searchh(int v, int w, int d). Funkcja zwraca prawdę jedynie w sytuacji, gdy algorytm znajdzie ścieżkę o długości d. Poszukiwanie ścieżki Hamiltona wymaga czasu wykładniczego (przeszukiwanie nawet niewielkich grafów (np. około 3 wierzchołkach) mogłoby zająć stulecia).

Znajdowanie ścieżki Eulera w czasie liniowym Algorytm startuje od wstępnego przetworzenia grafu i sprawdzenia jego spójności. W kolejnym kroku budowana jest tablica stopni wierzchołków. Funkcja pomocnicza jest odpowiedzialna za analizę i usuwanie krawędzi na ścieżce cyklicznej.

Minimalne drzewo rozpinające. Minimalne drzewo rozpinające - drzewo rozpinające grafu o najmniejszej możliwej sumie wag.. Algorytmy:. Kruskala (O( E log( V )),. Prima (O( E log( V )),.3 Boruvki (O( E log( V )).

Algorytm Kruskala I. Dane: Skończony graf spójny z wagami, którego krawędzie zostały uporządkowane według wzrastających wag.. E := 3. Dla j = do E(G) jeśli graf E e j jest acykliczny, to dołącz e j do E.

Algorytm Kruskala II 6 6 3 0

Algorytm Kruskala III 6 6 3 0

Algorytm Kruskala IV 6 6 3 0

Algorytm Kruskala V 6 6 3 0

Algorytm Kruskala VI 6 6 3 0

Algorytm Kruskala VII 6 6 3 0

Algorytm Kruskala VIII 6 6 3 0

Algorytm Kruskala IX 6 6 3 0

Algorytm Prima I. E :=. Wybór w ze zbioru V(G) i W := {w}. 3. Dopóki W V (G): 3. Wybór w zbiorze E(G) krawędzi {u, v} o najmniejszej możliwej wadze, takiej że u W i v V (G)\W 3. Dołączenie krawędzi {u, v} do zbioru E i wierzchołka v do zbioru V.

Algorytm Prima II 6 6 3 0

Algorytm Prima III 6 6 3 0

Algorytm Prima IV 6 6 3 0

Algorytm Prima V 6 6 3 0

Algorytm Prima VI 6 6 3 0

Algorytm Prima VII 6 6 3 0

Algorytm Prima VIII 6 6 3 0

Algorytm Prima IX 6 6 3 0

Algorytm Boruwki I. Dla każdego wierzchołka v w grafie G:. przeglądanie zbioru incydentnych krawędzi z v,. wybór krawędzi o najmniejszej wadze i dołączenie jej do rozwiązania (zbioru E ).. Tworzenie grafu G w którym wierzchołki stanowiące spójne składowe zostaną ze sobą połączone. 3. Dopóki nie ma jednej spójnej składowej, powtarza się kroki - za graf G podstawiając graf G

Algorytm Boruwki II 6 6 3 0

Algorytm Boruwki III 6 6 3 0

Algorytm Boruwki IV 6 6 3 0

Zagadnienie najkrótszej drogi I 6 6 3 0 Mapa stanowi graf spójny, w którym każdej krawędzi przypisano nieujemną wagę. Ten rodzaj grafu jest nazywany grafem z wagami. Zagadnienie polega na znalezieniu drogi z jednego miejsca do drugiego (np. z A do K), tak aby suma wag na tej drodze była najmniejsza. Algorytymy szukające najkrótszej drogi

Zagadnienie najkrótszej drogi II. algorytm Dijkstry,. algorytm Forda-Bellmana, 3. algorytm Floyda-Warshalla.

Algorytm Dijkstry I for v V (G) do d[v] := poprzednik[v] := niezdefiniowane end d[s] := 0 Q := V while Q niepuste do u := Zdejmij Min(Q) for v sasiad(u) do if d[v] > d[u] + w(u, v) then d[v] := d[u] + w(u, v) poprzednik[v] := u Dodaj(Q, v) end end end

Algorytm Dijkstry II 6 6 3 0 i 6 d(i) 0 p(i) 0 - - - - - - -

Algorytm Dijkstry III 6 6 3 0 i 6 d(i) 0 p(i) 0 - - - - -

Algorytm Dijkstry IV 6 6 3 0 i 6 d(i) 0 p(i) 0 - - -

Algorytm Dijkstry V 6 6 3 0 i 6 d(i) 0 3 p(i) 0-6 6

Algorytm Dijkstry VI 6 9 3 6 3 0 i 6 d(i) 0 3 p(i) 0-6 6

Algorytm Dijkstry VII 6 9 3 6 3 0 i 6 d(i) 0 0 3 p(i) 0 6 6

Algorytm Dijkstry VIII 6 9 3 6 3 0 i 6 d(i) 0 0 3 p(i) 0 6 6

Algorytm Dijkstry IX 6 9 3 6 3 0 i 6 d(i) 0 0 3 p(i) 0 6 6

Algorytm Forda-Bellmana I for v V (G) do d[v] := poprzednik[v] := niezdefiniowane end d[s] := 0 for i = to V (G) do for (u, v) E(G) do if d[v] > d[u] + w(u, v) then d[v] = d[u] + w(u, v) poprzednik[v] = u end end end

Algorytm Forda-Bellmana II 6 6 3 0 i 6 d(i) 0 p(i) 0 - - - - - - -

Algorytm Forda-Bellmana III 6 6 3 0 i 6 d(i) 0 p(i) 0 - - - - -

Algorytm Forda-Bellmana IV 6 6 3 0 i 6 d(i) 0 p(i) 0 - - - - -

Algorytm Forda-Bellmana V 6 6 3 0 i 6 d(i) 0 p(i) 0 - - -

Algorytm Forda-Bellmana VI 6 6 3 0 i 6 d(i) 0 0 p(i) 0 3 -

Algorytm Forda-Bellmana VII 6 6 3 0 i 6 d(i) 0 0 3 p(i) 0 -

Algorytm Forda-Bellmana VIII 6 6 3 0 i 6 d(i) 0 0 3 p(i) 0

Zagadnienie chińskiego listonosza Oryginalne zagadnienie polegało na znalezieniu takiej drogi dla listonosza, żeby mógł przejść najkrótszą łączną drogę i wrócić do punktu wyjścia (musi przejść po każdej ulicy przynajmniej raz). Dla grafów Eulerowskich zagadnienie sprowadza się do szukania cyklu Eulera. Dla grafów półeulerowskich wyznacza się najpierw ścieżkę półeulerowską i wyszukuje najkrótszą ściężkę łączącą wierzchołki o nieparzystych stopniach.

Problem komiwojażera Problem polega na tym, aby komiwojażer, który ma za zadanie dojechać do kilku miejsc, znalazł drogę o najmniejszej łącznej długości. Problem daje się sprowadzić do grafów z wagami i polega na znalezieniu cyklu Hamiltona o najmniejszej sumie wag na danej drodze. Algorytmy ogólne są nieefektywne - zamiast nich stosowane są algorytmy heurystyczne, które wyszukują rozwiązania przybliżone.

Literatura Do napisania materiałów wykorzystano:. R.J. Wilson Wprowadzenie do teorii grafów, PWN 00. R. Sedgewick Algorytmy w C++ - grafy, Wydawnictwo RM 003 3. K.A. Ross Matematyka dyskretna, PWN 003. P. Rembelski Algorytmy i struktury danych