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

Podobne dokumenty
Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

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

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

E S - uniwersum struktury stosu

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Ogólne wiadomości o grafach

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

Wstp. Warto przepływu to

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

Przeszukiwanie przestrzeni stanów. Wprowadzenie do Sztucznej Inteligencji. Podstawowe problemy teorii przeszukiwania przestrzeni stanów

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

Sortowanie topologiczne skierowanych grafów acyklicznych

Wykład 10 Grafy, algorytmy grafowe

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

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

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

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

Temat: Dynamiczne liniowe struktury danych - stos, kolejka, lista. 1. Wady i zalety struktury tablicy

oraz spełnia warunki: (*) dla wszystkich wierzchołków

Matematyczne Podstawy Informatyki

Podstawowe algorytmy grafowe i ich zastosowania

Algorytmy i Struktury Danych.

Wstęp do programowania

Rozwiązywanie problemów metodą przeszukiwania

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

Programowanie obiektowe

Wstęp do Programowania potok funkcyjny

Algorytmiczna teoria grafów

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

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

Algorytmy i Struktury Danych.

Podstawowe algorytmy grafowe i ich zastosowania

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Digraf. 13 maja 2017

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

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

Programowanie obiektowe

Temat: Problem minimalnego drzewa Steinera. Definicja problemu. Zastosowania. Algorytm dokładny Hakimi. Algorytmy aproksymacyjne.

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

Programowanie dynamiczne i algorytmy zachłanne

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

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Wykład 7. Algorytmy grafowe

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Wstęp do Programowania potok funkcyjny

Algorytmy i Struktury Danych.

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

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

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

Wstęp do Sztucznej Inteligencji

Podejście zachłanne, a programowanie dynamiczne

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

Algorytmy z powracaniem

Programowanie dynamiczne

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

TEORIA GRAFÓW I SIECI

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

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

AiSD zadanie trzecie

Sprawozdanie do zadania numer 2

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska

Wektor o pocztku i kocu odpowiednio w punktach. Prosta zawierajca punkty p i q: pq Półprosta zaczynajca si w punkcie p i zawierajca punkt q:.

Programowanie obiektowe

Algorytmy i Struktury Danych.

RKI Zajęcia 14 Przeszukiwanie grafu w głąb

Graf. Definicja marca / 1

Algorytmy i Struktury Danych

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

Algorytmy i Struktury Danych

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Grafy podstawowe pojęcia

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Skojarzenia. Najliczniejsze skojarzenia: Dokładne skojarzenia o maksymalnej sumie wag w obcionych pełnych grafach dwudzielnych.

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

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

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

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

Sieć (graf skierowany)

Wprowadzenie do Sztucznej Inteligencji

Wprowadzenie do Sztucznej Inteligencji

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych

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

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

Problemy optymalizacyjne - zastosowania

Struktury danych (I): kolejka, stos itp.

Grafy w MATLABie. LABORKA Piotr Ciskowski

Podstawowe struktury danych

Wstęp do sieci neuronowych, wykład 04. Skierowane sieci neuronowe. Algorytmy konstrukcyjne dla sieci skierowanych

12: Znajdowanie najkrótszych ±cie»ek w grafach

Programowanie i struktury danych 1 / 44

Algorytmy i Struktury Danych.

Transkrypt:

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe. Oznaczenia G = V, E - graf bez wag, gdzie V - zbiór wierzchołków, E- zbiór krawdzi V = n - liczba wierzchołków grafu G E = m - liczba krawdzi grafu G i, - krawd (para uporzdkowana) z wierzchołka i do wierzchołka j w grafie skierowanym i, j - krawd (podzbiór) łczca wierzchołki i oraz j w grafie nieskierowanym G = V, E, f - graf z wagami, gdzie V - zbiór wierzchołków, E- zbiór krawdzi, f: V R ( j) Załoenia Graf skierowany nie ma ptli, czyli dla kadej krawdzi ( j) i j, zachodzi Wierzchołki grafu s reprezentowane numerami:,,..., n i, grafu. Struktury danych do reprezentacji grafu bez wag a) macierz ssiedztwa Definiujemy tablic dwuwymiarow G o rozmiarach n n. Jeeli graf jest nieskierowany to: [, j] G i 0 = dla dla i, j i, j E E

G: 0 0 0 0 0 0 0 0 0 Złoono pamiciowa: n Macierz ssiedztwa jest symetryczna wzgldem głównej przektnej dla grafu nieskierowanego. Jeeli graf jest skierowany to: [, j] G i 0 = dla dla ( i, j) ( i,j) E E G: 0 0 0 0 0 0 0 0 0 0 0 0 Złoono pamiciowa: n

Wady: dua złoono pamiciowa dla grafów rzadkich (tj. takich dla których m<<n ), nieefektywna realizacja algorytmów grafowych wymagajcych dotarcia do wszystkich wzłów incydentnych z danym wzłem. Zalety: efektywna realizacja (stały koszt) dodawania i usuwania krawdzi grafu, efektywna realizacja (stały koszt) sprawdzenia, czy w grafie jest dana krawd b) Listy incydencji Struktur danych jest w tym przypadku jednowymiarowa tablica wskaników na listy wierzchołków incydentnych. W indeksie i takiej tablicy znajduje si adres pierwszego elementu listy zawierajcej numery tych wierzchołków grafu, które incyduj z wierzchołkiem numer i. Rozmiar tablicy jest równy n. dla grafu nieskierowanego, T tablica incydencji T[]:,, T[]:,, T[]:,, T[]:,, T[]:, grafu skierowanego T[]:,, T[]:, T[]: T[]: T[]: Złoono pamiciowa: n+m

Wady: nieefektywna realizacja dodawania (usuwania) krawdzi grafu (Trzeba sprawdzi cał list incydencji, aby ustali, czy krawdzi wstawianej (usuwanej) nie ma ju (jest) w grafie. nieefektywna realizacja sprawdzenia, czy w grafie jest dana krawd (Trzeba przejrze cał list incydencji). struktura trudniejsza w realizacji Zalety: efektywna złoono pamiciowa dla skierowanych grafów rzadkich, efektywna realizacja algorytmów grafowych wymagajcych dotarcia do wszystkich wzłów incydentnych z danym wzłem.. Struktury danych do reprezentacji grafu z wagami a) macierz ssiedztwa Definiujemy tablic dwuwymiarow G o rozmiarach n n. Jeeli graf jest skierowanego to: [, j] G i = f dla ( i, j) (( i, j) ) dla ( i, j) E E Warto ustalana jest indywidualnie dla konkretnego grafu i konkretnego algorytmu grafowego. Na przykład dla problemu najkrótszych cieek n f max, gdzie f max to maksimum funkcji wag. G: * -6 8. 0 6. 8 Złoono pamiciowa: n

Analogicznie definiujemy macierz ssiedztwa dla nieskierowanego grafu z wagami. c) Listy incydencji Struktur danych jest w tym przypadku jednowymiarowa tablica wskaników na listy wierzchołków incydentnych. W indeksie i takiej tablicy znajduje si adres pierwszego elementu listy zawierajcej numery tych wierzchołków grafu, które incyduj z wierzchołkiem numer i oraz wagi tych krawdzi. Rozmiar tablicy jest równy n.. Algorytmy bazowe dla grafów bez wag i ich przykładowe zastosowanie a) Przegldania grafu metod wszerz (breadth-first search (BFS)) WP: G graf bez wag, s- wierzchołek startowy WK: Odwiedzenie kadego wierzchołka grafu G, do którego istnieje co najmniej jedna cieka z s. Struktura do reprezentacji grafu G - tablica struktur z polami: link - wskanik na list incydencji, color typ z trzema wartociami: biały, szary, czarny, Wskanik listy incydencji zawiera pola: nr numer wierzchołka next adres kolejnego elementu listy Struktura pomocnicza kolejka z operacjami: in, out, first, empty. (in(e,q)- wstawia do kolejki Q element e, out(q) usuwa element e z kolejki Q, first(q) zwraca dane z pierwszego elementu niepustej kolejki Q, empty(q) sprawdza, czy kolejka Q jest niepusta)

Algorytm I Krok: Inicjalizacja tablicy grafu G: nr wierzchołka color biały biały biały biały biały link,,, II Krok: Przegldanie grafu z wierzchołka s BFS(G, s) G[s].color = szary; Q= ; in(s,q); while (!empty(q)) u= first(q); temp = G[u].link; while (temp!=null) v = temp->nr; if (G[v].color == biały) 6

// odwiedzenie wierzchołka v G[v].color = szary; in(v,q); temp = temp->next; out(q); G[u].color = czarny; G: nr wierzchołka color czarny czarny czarny czarny czarny Link,,, b) Zastosowanie przegldania grafu metod wszerz (breadth-first search (BFS)) do ustalania najkrótszych cieek w grafie bez wag WP: G graf bez wag, s- wierzchołek startowy WK: najkrótsze cieki z wierzchołka s do pozostałych wierzchołków grafu Struktura do reprezentacji grafu G - tablica struktur z polami: link - wskanik na list incydencji, color typ z trzema wartociami: biały, szary, czarny, d odległo od wierzchołka startowego, 7

pi poprzednik na ciece Wskanik listy incydencji zawiera pola: nr numer wierzchołka next adres kolejnego elementu listy Struktura pomocnicza kolejka z operacjami: in, out, first, empty. (in(e,q)- wstawia do kolejki Q element e, out(q) usuwa element e z kolejki Q, first(q) zwraca dane z pierwszego elementu niepustej kolejki Q, empty(q) sprawdza, czy kolejka Q jest niepusta) Algorytm I Krok: Inicjalizacja tablicy grafu G: nr wierzchołka color biały biały biały biały biały D pi - - - - - link,,, II Krok: Przegldanie grafu z wierzchołka s z jednoczesnym ustawianiem etykiet d i pi 8

BFS(G, s) G[s].color = szary; G[s].d = 0; Q= ; in(s,q); while (!empty(q)) u= first(q); temp = G[u].link; while (temp!=null) v = temp->nr; if (G[v].color == biały) G[v].color = szary; G[v].d = G[u].d + ; G[v].pi = u; in(v,q); temp = temp->next; out(q); G[u].color = czarny; G: nr wierzchołka color czarny czarny czarny czarny czarny d 0 pi - link,,, 9

Złoono czasowa BFS Jako operacj elementarn przyjmujemy wykonanie operacji in lub out na kolejce Q oraz operacj przegldania list incydencji grafu. Kady wierzchołek jest wstawiany co najwyej raz i co najwyej raz jest z niej usuwany. Std łczny czas wykonania operacji na kolejce wynosi O(n). Poniewa lista incydencji kadego wierzchołka jest przegldana tylko wtedy, gdy wierzchołek zostanie usunity z kolejki, lista incydencji kadego wierzchołka jest przegldana co najwyej raz. Suma długoci wszystkich list wynosi Θ(m). Łczny czas przegldania list wynosi zatem O(m). Inicjowanie grafu zabiera czas O(n). Reasumujc: koszt BFS wynosi O(m+n). c)przegldania grafu metod w głb (depth-first search (DFS)) WP: G graf bez wag, s- wierzchołek startowy WK: Odwiedzenie kadego wierzchołka grafu G, dla którego istnieje co najmniej jedna cieka z s Struktura do reprezentacji grafu G - tablica struktur z polami: link - wskanik na list incydencji, color typ z trzema wartociami: biały, szary, czarny, Wskanik listy incydencji zawiera pola: nr numer wierzchołka next adres kolejnego elementu listy Struktura pomocnicza stos z operacjami: push, pop, top, empty. (push(e,s)- wstawia do stosu S element e, pop(s) usuwa element e ze stosu S, top(s) zwraca dane z wierzchołka niepustego stosu S, empty(s) sprawdza, czy stos S jest niepusty) 0

Algorytm I Krok: Inicjalizacja tablicy grafu G: nr wierzchołka color biały biały biały biały biały link,,, II Krok: Przegldanie grafu z wierzchołka s DFS_VISIT(u) (funkcja rekurencyjna) G[u].color = szary; temp=g[u].link; while (temp!=null) v=temp->nr; if (G[v].color ==biały ) // odwiedzenie wierzchołka v DFS_VISIT(v); temp = temp->link; G[u].color = czarny;

DFS (G, s): DFS_VISIT(s); G: nr wierzchołka color czarny czarny czarny czarny czarny link,,, d) Zastosowanie przegldania grafu metod w głb (depth-first search (DFS)) do sortowania topologicznego grafu WP: G graf bez wag, skierowany i acykliczny (bez cykli) WK: Nowa numeracja wierzchołków taka, e jeeli graf G zawiera krawd (u, v), to w tym porzdku wierzchołek u wystpuje przed wierzchołkiem v (wierzchołek u ma mniejszy numer ni wierzchołek v). Numery wierzchołków w nowej numeracji zapamitane s w stosie wynikowym W. Jeeli graf nie jest acykliczny to takie uporzdkowanie nie jest moliwe. Struktura do reprezentacji grafu G - tablica struktur z polami: link - wskanik na list incydencji, color typ z trzema wartociami: biały, szary, czarny, Wskanik listy incydencji zawiera pola:

nr numer wierzchołka next adres kolejnego elementu listy Struktura pomocnicza stos z operacjami: push, pop, top, empty. (push(e,s)- wstawia do stosu S element e, pop(s) usuwa element e ze stosu S, top(s) zwraca dane z wierzchołka niepustego stosu S, empty(s) sprawdza, czy stos S jest niepusty) Algorytm I Krok: Inicjalizacja tablicy grafu Graf G: Krawd (u, v) oznacza, e cz garderoby u powinna by załoona przed czci garderoby v. slipki spodnie skarpetki buty zegarek pasek koszula krawat marynarka nr 6 7 8 9 wierzchołka dane wierchołka skarpetki slipki spodnie Buty zegarek koszula pasek krawat marynarka color biały biały biały biały biały biały biały biały biały link,, 7 - - 7, 8 9 9 -

II Krok: Przegldanie grafu metod w głb z wierzchołka startowego s. Wierzchołki, które staj si czarne s wstawiane do stosu wynikowego W. Kolejno wierzchołków w stosie W okrela nowa numeracj wierzchołków grafu po sortowaniu topologicznym. DFS_VISIT(u) (funkcja rekurencyjna) W= ; G[u].color = szary; temp=g[u].link; while (temp!=null) v=temp->nr; if (G[v].color ==biały ) DFS_VISIT(v); temp = temp->link; G[u].color = czarny; push(u,w); DFS(G, s); W= ; DFS_VISIT(s); for (i=;i<=n;i++) if (G[i].color==biały) DFS_VISIT(i); nr 6 7 8 9 wierzchołka dane wierchołka skarpetki slipki spodnie buty zegarek koszula pasek krawat marynarka color czarny czarny czarny czarny czarny czarny czarny czarny czarny link,, 7 - - 7, 8 9 9 - nowa numeracja 6 7 8 9

Złoono czasowa DFS Jako operacj elementarn przyjmujemy liczb wywoła rekurencyjnych procedury DFS_VISIT (operacje stosowe realizowane w stosie wywoła) oraz operacj przegldania list incydencji grafu. Koszt procedury DFS wynosi O(m+n) - uzasadnienie analogiczne jak dla BFS.