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

Podobne dokumenty
Ogólne wiadomości o grafach

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

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

Matematyczne Podstawy Informatyki

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

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

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

Algorytmiczna teoria 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:

Digraf. 13 maja 2017

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

Sprawozdanie do zadania numer 2

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

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

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

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Wykład 7. Algorytmy grafowe

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

Algorytmy i Struktury Danych.

Wykład 10 Grafy, algorytmy grafowe

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

Sortowanie topologiczne skierowanych grafów acyklicznych

Matematyka dyskretna - 7.Drzewa

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

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

Algorytmy i Struktury Danych.

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

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

Wstęp do Programowania potok funkcyjny

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

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do Programowania potok funkcyjny

Egzaminy i inne zadania. Semestr II.

Podejście zachłanne, a programowanie dynamiczne

7. Teoria drzew - spinanie i przeszukiwanie

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

Minimalne drzewa rozpinające

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

G. Wybrane elementy teorii grafów

Algorytmy i Struktury Danych.

Graf. Definicja marca / 1

Algorytmy wyznaczania centralności w sieci Szymon Szylko

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

Programowanie obiektowe

Grafowy model danych

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Programowanie dynamiczne i algorytmy zachłanne

Algorytmy z powracaniem

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

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

Matematyczne Podstawy Informatyki

Grafy w MATLABie. LABORKA Piotr Ciskowski

Programowanie obiektowe

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

Matematyka dyskretna

Grafy i sieci w informatyce - opis przedmiotu

Rozwiązywanie problemów metodą przeszukiwania

Teoretyczne podstawy informatyki

TEORETYCZNE PODSTAWY INFORMATYKI

Wykłady z Matematyki Dyskretnej

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

5. Najkrótsze ścieżki

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

Matematyczne Podstawy Informatyki

Znajdowanie skojarzeń na maszynie równoległej

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

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.

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

TABLICE HASZUJĄCE PRZYKŁAD FUNKCJE HASZUJĄCE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI TABLICE HASZUJĄCE, GRAFY.

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

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

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

E ' E G nazywamy krawędziowym zbiorem

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

Algorytmiczna teoria grafów

Teoretyczne podstawy informatyki

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

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow

Sieć (graf skierowany)

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

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

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

AiSD zadanie trzecie

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

Przeszukiwanie grafów

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Opracowanie prof. J. Domsta 1

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

TEORIA GRAFÓW I SIECI

Teoretyczne podstawy algorytmów grafowych

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Transkrypt:

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

Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy ścieżkowe.

Algorytmy grafowe: podstawowe pojęcia Graf nieskierowany jest parą uporządkowaną G = V, E, gdzie V = v, v,, v n jest zbiorem wierzchołków (ang. vertices), E = e, e,, e n jest zbiorem krawędzi (ang. edges), e i = {v, v } jest łukiem będącym zbiorem dwuelementowym wierzchołków. v e v v e = {v, v } v Nie ma pętli {v i, v i }. v

Algorytmy grafowe: podstawowe pojęcia Droga (ścieżka) w grafie nieskierowanym jest ciągiem krawędzi ({v, v }, v, v,, {v k, v k }, v k, v k ), który można wyrazić ciągiem wierzchołków (v, v, v,, v k, v k, v k ). v v v v v ({, v }, v, v, {v, v }, {v, v }, v, v ) Niekiedy dla uproszczenia przyjmuje się: ((, v ), (v, v ), (v,v ), (v, v ), (v, v )) (, v, v, v, v, v )

Algorytmy grafowe: podstawowe pojęcia Graf skierowany jest parą uporządkowaną G = V, A, gdzie V = v, v,, v n jest zbiorem wierzchołków (ang. vertices), A = a, a,, a n jest zbiorem łuków (ang. arcs), a i = v j, v k lub a i =< v j, v k > jest łukiem będącym parą uporządkowaną wierzchołków. a v v v a = (v, v ) v v

Algorytmy grafowe: podstawowe pojęcia Droga (ścieżka) w grafie skierowanym jest ciągiem łuków ((v, v ), (v, v ),, (v k, v k ), (v k, v k )), który można wyrazić ciągiem wierzchołków (v, v, v,, v k, v k, v k ). v v v v (, v, v, v, (v, v ), (v, v )) v (, v, v, v, v )

Algorytmy grafowe: podstawowe pojęcia Rozmiary grafu: Liczba wierzchołków n, Liczba krawędzi (łuków) m.

Algorytmy grafowe: podstawowe pojęcia Graf nieskierowany z wagami krawędzi jest trójką uporządkowaną G = V, E, W, gdzie: R jest zbiorem liczb rzeczywistych, W: E R jest funkcją wagi krawędzi. Graf nieskierowany z wagami wierzchołków jest trójką uporządkowaną G = V, E, W, gdzie W: V R jest funkcją wagi wierzchołków. Graf skierowany z wagami łuków jest trójką uporządkowaną G = V, A, W, gdzie: W: A R jest funkcją wagi łuku.

Algorytmy grafowe: podstawowe pojęcia Przykład grafu nieskierowanego z wagami krawędzi i jego macierz wag. v v v v v 6 6 Niekiedy na przekątnej wpisywane są inne wartości wyróżnione.

Algorytmy grafowe: podstawowe pojęcia Wagą (długością) drogi w grafie nieskierowanym jest suma wag krawędzi tej drogi. Wagą (długością) drogi w grafie skierowanym jest suma wag łuków tej drogi.

Algorytmy grafowe: podstawowe pojęcia v v v v v Waga drogi między wierzchołkami v a równa

Algorytmy grafowe: podstawowe pojęcia v v v v v Waga drogi między wierzchołkami v a równa 6

Algorytmy grafowe: podstawowe pojęcia Graf nieskierowany jest spójnym, jeśli istnieje droga między każdą parą jego wierzchołków. Graf skierowany jest spójnym, jeśli jego wersja nieskierowana jest grafem spójnym. Drzewo nieskierowane jest grafem nieskierowanym spójnym i acyklicznym. E = V. Dołączenie krawędzi do drzewa nieskierowanego tworzy cykl. Usunięcie krawędzi z drzewa nieskierowanego powoduje jego niespójność.

Algorytmy grafowe: podstawowe pojęcia Podgrafem grafu nieskierowanego G = graf, że V V i E E. V, E jest taki Drzewo rozpinające nieskierowanego grafu spójnego G = (V, E) jest podgrafem S = (V S, E S ) spójnym będącym drzewem takim, że V S = V. Minimalne drzewo rozpinające grafu nieskierowanego z wagami jest drzewem rozpinającym o minimalnej sumie wag.

Algorytmy grafowe: podstawowe pojęcia Przykład drzewa rozpinającego nieskierowanego grafu spójnego v v v v v v v v v v Waga drzewa rozpinającego 0

Algorytmy grafowe: podstawowe pojęcia Przykład drzewa rozpinającego nieskierowanego grafu spójnego v v v v v v v v v v Waga drzewa rozpinającego

Algorytmy grafowe: reprezentacja grafów Podział grafów nieskierowanych ze względu na liczbę krawędzi względem liczby wierzchołków grafu pełnego: Rzadki, gdy E V, Gęsty, gdy E bliskie V. Reprezentacja grafów, jeśli ważniejsza zajętość pamięci: Rzadkich - raczej za pomocą list, Gęstych - raczej macierzowa. Reprezentacja macierzowa daje szybszy dostęp. Oszczędność pamięci można uzyskać przez pamiętanie ośmiu składowych macierzy w jednym bajcie.

Algorytmy grafowe: podstawowe pojęcia Rozmiary grafu: Liczba wierzchołków n, Liczba krawędzi (łuków) m.

Algorytmy grafowe: reprezentacja grafów Graf nieskierowany i jego macierz sąsiedztwa. 6 v v v v v 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Niekiedy na przekątnej wpisywane są inne wartości wyróżnione. Zajętość pamięci O(n )

Algorytmy grafowe: reprezentacja grafów Graf nieskierowany i jego listy sąsiedztwa v v v v v 6 6 6 Zajętość pamięci O(n + m)

Algorytmy grafowe: reprezentacja grafów Graf nieskierowany i jego macierz incydencji. 6 8 9 v v v e e e e e e 8 e e 9 v e 6 v 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Niekiedy na przekątnej wpisywane są inne wartości wyróżnione.

Algorytmy grafowe: reprezentacja grafów Graf skierowany i jego macierz sąsiedztwa v a v v v v 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Algorytmy grafowe: reprezentacja grafów Graf skierowany i jego macierz incydencji v v a a v a a a v a a 6 a 8 a 9 v 6 6 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Algorytmy grafowe: reprezentacja grafów Przykład grafu nieskierowanego z wagami krawędzi i jego macierz wag. v v v v v 6 6 Niekiedy na przekątnej wpisywane są inne wartości wyróżnione.

Algorytmy grafowe: podstawowe pojęcia Przykład grafu nieskierowanego z wagami krawędzi i jego lista krawędzi w postaci tablicy. v v v v v ind(v i ) ind(v j ) W({v i, v j }) 6 6 Zajętość pamięci O(m)

Algorytmy grafowe: metody przeszukiwania Metody przeszukiwania: Wszerz (ang. Breadth-First Search), W głąb (ang. Depth-First Search).

Algorytmy grafowe: metody przeszukiwania Kolejność odwiedzania wiezrchołków w BFS działającej na drzewie 6 0 9 8 6

Algorytmy grafowe: metody przeszukiwania Przeszukiwanie wszerz Kolory ( ang. color) wierzchołków: Biały (nieodwiedzony), Szary (odwiedzony, nie wszyscy sąsiedzi tegoż odwiedzeni), Czarny (odwiedzeni: ten i jego sąsiedzi). Metoda wykonywana z: jednego źródła, wielu źródeł.

d[u] zmienna przechowująca odległość od źródła s do wierzchołka u najkrótszą odległość daną liczbą krawędzi, d s = 0, π u zmienna wskazująca wierzchołek, z którego wierzchołek u został odwiedzony, u=nil, jeśli u = s lub u nie został jeszcze odwiedzony. [CLRS, Wprowadzenie do algorytmów] O( V + E )

Algorytmy grafowe: metody przeszukiwania Kolejność odwiedzania wierzchołków w DFS działającej na drzewie

Algorytmy grafowe: metody przeszukiwania Przeszukiwanie w głąb Kolory ( ang. color) wierzchołków: Biały (nieodwiedzony), Szary (odwiedzony, nie wszyscy sąsiedzi tegoż odwiedzeni), Czarny (odwiedzeni: ten i jego sąsiedzi). Metoda wykonywana z: jednego źródła, wielu źródeł.

O( V + E ) [CLRS, Wprowadzenie do algorytmów]

Algorytmy grafowe: minimalne drzewa rozpinające Drzewo rozpinające nieskierowanego grafu spójnego G = (V, E) jest podgrafem S = (V S, E S ) spójnym będącym drzewem takim, że V S = V. Minimalne drzewo rozpinające grafu nieskierowanego z wagami krawędzi jest drzewem rozpinającym o minimalnej sumie wag krawędzi.

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Kruskala: z posortowanej niemalejąco wg wag listy krawędzi dołączane są kolejne, jeśli nie tworzą cyklu (algorytm zachłanny). Lista uporządkowana: (v,v ) (v, ) (v,v ) (v,v ) (v,v ) (v,v ) (,v ) (v,v )(v,v ) v v v v v v v v v v v v v v v

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Kruskala: z posortowanej niemalejąco wg wag listy krawędzi dołączane są kolejne, jeśli nie tworzą cyklu (algorytm zachłanny). Lista uporządkowana: (v,v ) (v, ) (v,v ) (v,v ) (v,v ) (v,v ) (,v ) (v,v )(v,v ) v v v v v v v v v v v v v v v

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Kruskala: z posortowanej niemalejąco wg wag listy krawędzi dołączane są kolejne, jeśli nie tworzą cyklu (algorytm zachłanny). Lista uporządkowana: (v,v ) (v, ) (v,v ) (v,v ) (v,v ) (v,v ) (,v ) (v,v )(v,v ) v v v v v v v v v v

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Kruskala:. Wszystkie wierzchołki zostają parami różnie pokolorowane tworząc jednowierzchołkowe drzewa,. Z posortowanej niemalejąco wg wag listy krawędzi dołączane są kolejne, jeśli nie tworzą cyklu (algorytm zachłanny),. Dla dwu drzew łączonych w jedno ujednolicane zostają kolory.

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Kruskala: z posortowanej niemalejąco wg wag listy krawędzi dołączane są kolejne, jeśli nie tworzą cyklu (algorytm zachłanny). Przy próbie dołączenia krawędzi (u, v) występują następujące przypadki:. Wierzchołki u, v nie zostały wybrane (nie dołączono krawędzi incydentnych z nimi), są różnie pokolorowane,. Dokładnie jeden z wierzchołków, przyjmijmy u, został dotychczas wybrany, są różnie pokolorowane,. Oba wybrane ale różnie pokolorowane,. Oba wybrane ale jednolicie pokolorowane.

Algorytmy grafowe: minimalne drzewa rozpinające Zał: Na początku wierzchołki o parami różnych kolorach.. Wierzchołki u, v nie zostały dotąd wybrane (nie dołączono krawędzi incydentnych z nimi) u u v v Dołączenie nowej krawędzi nie powoduje cyklu, a ujednoli- cenie kolorów wierzchołków u, v daje nowe poddrzewo

Dołączenie nowej krawędzi nie powoduje cyklu, a ujednolicenie kolorów daje większe poddrzewo Algorytmy grafowe: minimalne drzewa rozpinające. Dokładnie jeden z wierzchołków, przyjmijmy u, został dotychczas wybrany u u v v

Algorytmy grafowe: minimalne drzewa rozpinające. Oba wybrane ale różnie pokolorowane u v u v Dołączenie nowej krawędzi nie powoduje cyklu, a ujednolicenie kolorów daje większe poddrzewo

Algorytmy grafowe: minimalne drzewa rozpinające. Oba wybrane ale jednolicie pokolorowane u u v v Dołączenie nowej krawędzi spowodowałoby cykl

Algorytmy grafowe: minimalne drzewa rozpinające Algorytm Kruskala A for każdy wierzchołek v i εv do C(v i ) i posortuj krawędzie z E niemalejąco wg wag W(e j ) for każda krawędź (v l, v k ) E w kolejności niemalejących wag return A do if C(v l ) C(v k ) then A A {(v l, v k )} Ujednolicenie kolorów wierzchołków poddrzewa zawierającego v l, v k O(V) O( E log E + V E )

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Prima: Po wybraniu dowolnego wierzchołka, kolejno dołączany jest najbliższy sąsiad czyli wierzchołek połączony krawędzią o najmniejszej wadze z wcześniej dołączonymi wierzchołkami. v v v v v v v v v v v v v v v

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Prima: Po wybraniu dowolnego wierzchołka, kolejno dołączany jest najbliższy sąsiad czyli wierzchołek połączony krawędzią o najmniejszej wadze z wcześniej dołączonymi wierzchołkami. v v v v v v v v v v v v v v v

Algorytmy grafowe: minimalne drzewa rozpinające Idea algorytmu Prima: Po wybraniu dowolnego wierzchołka, kolejno dołączany jest najbliższy sąsiad czyli wierzchołek połączony krawędzią o najmniejszej wadze z wcześniej dołączonymi wierzchołkami. v v v v v v v v v v

Algorytmy grafowe: problemy ścieżkowe Cykle o ujemnej wadze (długości) v i Cykl o ujemnej wadze s Długość najkrótszej ścieżki z s do v i dąży do.

Algorytmy grafowe: problemy ścieżkowe Wyznaczanie najkrótszych ścieżek z jednego źródła do wszystkich wierzchołków dla grafów skierowanych: Wagi łuków mogą być ujemne Algorytm Bellmana-Forda O( V E ) Wagi łuków są nieujemne Algorytm Dijkstry O( V log V + E ) Acykliczny graf skierowany, Wagi łuków mogą być ujemne Algorytm oparty na sortowaniu topologicznym O( V + E )

d[u] zmienna przechowująca górne oszacowanie odległości od źródła s do wierzchołka u, d s = 0, π u zmienna wskazująca wierzchołek, z którego wierzchołek u został odwiedzony przy wyznaczaniu tego oszacowania, v w(u, v) d[v] u O( V log V + E ) O(log V ) s d[u]

Elementy zbioru S z oszacowaniem odległości od wierzch. s Łuki badane w aktualnym kroku s 0 0 0 0 s 0 0

0 s 0 0 0 s 0 0

0 s 0 0 s 0 8 6

s 0 s 0 8 6 6

s 0 s 0 6 6