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

Podobne dokumenty
Matematyka dyskretna

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

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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Algorytmiczna teoria grafów

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

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

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

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

G. Wybrane elementy teorii grafów

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

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

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

Opracowanie prof. J. Domsta 1

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyczne Podstawy Informatyki

Digraf. 13 maja 2017

Graf. Definicja marca / 1

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

Ogólne wiadomości o grafach

KURS MATEMATYKA DYSKRETNA

Wykład 7. Algorytmy grafowe

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

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

Grafy. Graf ( graf ogólny) to para G( V, E), gdzie:

Wykład 10 Grafy, algorytmy grafowe

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

Sortowanie topologiczne skierowanych grafów acyklicznych

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

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

Algorytmiczna teoria grafów

Algorytmy z powracaniem

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

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.

Matematyka dyskretna - 5.Grafy.

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

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

Wykład 4. Droga i cykl Eulera i Hamiltona

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

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI

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

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

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

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

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

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

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

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

SKOJARZENIA i ZBIORY WEWN. STABILNE WIERZCH. Skojarzeniem w grafie G nazywamy dowolny podzbiór krawędzi parami niezależnych.

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

Wstęp do Programowania potok funkcyjny

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

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

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

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

E ' E G nazywamy krawędziowym zbiorem

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

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Elementy teorii grafów Elementy teorii grafów

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

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

Wykłady z Matematyki Dyskretnej

KURS MATEMATYKA DYSKRETNA

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

Ilustracja S1 S2. S3 ściana zewnętrzna

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

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

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

Ścieżki w grafach. Grafy acykliczne i spójne

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

Wstęp do Programowania potok funkcyjny

Kolorowanie wierzchołków

6a. Grafy eulerowskie i hamiltonowskie

Wprowadzenie Podstawy Fundamentalne twierdzenie Kolorowanie. Grafy planarne. Przemysław Gordinowicz. Instytut Matematyki, Politechnika Łódzka

Kombinowanie o nieskończoności. 2. Wyspy, mosty, mapy i kredki materiały do ćwiczeń

Znajdowanie skojarzeń na maszynie równoległej

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

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

Teoria grafów. Magdalena Lemańska

Matematyka dyskretna - 6.Grafy

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

TEORIA GRAFÓW I SIECI

Matematyka dyskretna - 7.Drzewa

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

Grafy Alberta-Barabasiego

PRZESZUKIWANIE W GŁĄB ALGORYTM PRZYKŁAD - C.D. PRZYKŁAD PRZESZUKIWANIE W GŁĄB (DFS) PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

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

Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków

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

Sieć (graf skierowany)

Programowanie dynamiczne

TEORIA GRAFÓW I SIECI

Transkrypt:

Grafy

Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf zapisujemy w postaci uporządkowanej pary G = (V, E), gdzie V = {v 1, v 2,, v n } to zbiór n ponumerowanych wierzchołków a E = {e 1, e 2,, e m } to zbiór m krawędzi. Każda krawędź jest parą wierzchołków grafu (u,v) połączonych tą krawędzią, przy czym u,v V. Oznaczenia: V = n E = m

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

Historia grafów Za najstarszy przykład zastosowania grafów w rozwiązaniu zadanego problemu uznaje się zagadnienie mostów królewieckich, opis którego opublikował w 1736 roku Leonhard Euler.

Sąsiedztwo Dwa wierzchołki u i v sąsiadują ze sobą (są sąsiednie), gdy istnieje krawędź {u,v} E. Dwie krawędzie są incydentne, gdy mają wspólny koniec, czyli {u,v} i {v,w}. Krawędź e jest incydentna z wierzchołkiem v, gdy v jest jednym z końców krawędzi e. Stopień wierzchołka v to liczba wszystkich incydentnych z nim krawędzi w grafie, co oznaczamy deg(v).

Podgrafy Podgraf to fragment grafu pierwotnego. Graf G =(V,E ) jest podgrafem grafu G=(V,E), co zapisujemy G G, gdy G powstał z G przez usunięcie części wierzchołków wraz z incydentnymi krawędziami oraz części krawędzi, czyli V V oraz E E.

Graf gęsty Graf gęsty to graf, w którym jest stosunkowo dużo krawędzi, czyli m Ω(n 2- ), dla pewnego [0,1). Graf gęsty najczęściej zapisujemy w postaci macierzy sąsiedztwa. Macierz sąsiedztwa dla grafu prostego jest symetryczna względem głównej przekątnej można więc zredukować macierz kwadratową do macierzy trójkątnej dolnej. Pamięć potrzebna do zaprezentowania grafu w postaci macierzy sąsiedztwa wynosi Θ(n 2 ).

Graf rzadki Graf rzadki to graf, w którym jest stosunkowo mało krawędzi, czyli m O(n 1+ ), dla pewnego [0,1). Graf rzadki najczęściej zapisujemy w postaci listy sąsiadów. Każdej krawędzi odpowiadają 2 węzły na różnych liściach sąsiadów. Pamięć potrzebna do zaprezentowania grafu w postaci listy sąsiadów wynosi Θ(n+m).

Grafy szczególne Graf pusty E =0 Graf pełny E =(n 2 -n)/2 Graf liniowy Graf cykliczny Graf kołowy Graf dwudzielny zbiór wierzchołków możemy podzielić na dwa rozłączne podzbiory w taki sposób, że każda krawędź ma końce należące do różnych podzbiorów, czyli V=A B, gdzie A B=, oraz każda krawędź e=(u,v) E jest postaci u A i v B.

Ścieżki i cykle Ścieżka w grafie G o długości k, to ciąg k+1 wierzchołków (v i0,v i1,v i2,,v ik ) taki, że każde dwa sąsiednie wierzchołki tym ciągu są krawędzią w G, czyli (v ij-1,v ij ) E dla j=1 k. Ścieżka prosta w grafie G o długości k, to ścieżka, w której żadne dwa wierzchołki nie pojawiają się dwukrotnie. Cykl w grafie G to ścieżka, w której pierwszy i ostatni wierzchołek są takie same. Cykl prosty grafie G to cykl, w którym żaden wierzchołek, za wyjątkiem pierwszego i ostatniego, nie powtarzają się.

Spójność Graf jest spójny, gdy pomiędzy każdą parą wierzchołków istnieje jakaś ścieżka prosta, która je łączy. Każdy graf można przedstawić w postaci sumy podgrafów spójnych, które nazywają się spójnymi składowymi grafu. Wierzchołek, którego stopień wynosi 0 nazywamy wierzchołkiem izolowanym. Spójna składowa do której należy wierzchołek v to podgraf, składający się ze zbioru wszystkich wierzchołków połączonych jakąś ścieżką z wierzchołkiem v oraz podzbiór wszystkich krawędzi incydentnych z tymi wierzchołkami.

Spójność Minimalna liczba krawędzi w grafie spójnym wynosi n- 1. Taki graf nazywa się drzewem. W drzewie nie ma cykli. Liczba krawędzi w grafie złożonym z k składowych spójności wynosi n k m (n-k)(n-k+1)/2. Graf, który ma n wierzchołków i m > (n-1)(n-2)/2 krawędzi jest spójny.

Grafy eulerowskie Graf eulerowski to graf posiadający cykl Eulera. Cykl Eulera to cykl, który przechodzi przez wszystkie krawędzie dokładnie jeden raz. Twierdzenie: Każdy graf spójny, w którym stopnie wszystkich wierzchołków są parzyste posiada cykl Eulera. Graf jest semi-eulerowski, gdy istnieje w nim ścieżka, która przechodzi przez wszystkie krawędzie dokładnie jeden raz (grafy eulerowskie są również semieulerowskie).

Grafy hamiltonowskie Graf hamiltonowski to graf posiadający cykl Hamiltona. Cykl Hamiltona to cykl, który przechodzi przez wszystkie wierzchołki dokładnie jeden raz. Twierdzenie: Jeśli w grafie stopień każdego wierzchołka jest n/2, gdzie n to liczba wierzchołków w grafie, to w grafie tym istnieje cykl Hamiltona. Graf jest semi-hamiltonowski, gdy istnieje w nim ścieżka, która przechodzi przez wszystkie wierzchołki dokładnie jeden raz.

Przeglądanie grafu wszerz Zaznaczamy wszystkie wierzchołki jako nieodwiedzone. Wyznaczamy wierzchołek startowy s i wrzucamy go do kolejki planowanych odwiedzin. Powtarzamy następująca procedurę: wyciągamy wierzchołek z kolejki, odwiedzamy go, do kolejki odwiedzin wrzucamy wszystkich jego sąsiadów, którzy jeszcze nie byli odwiedzeni i których nie ma w kolejce.

Przeglądanie grafu wszerz Wszerz(graph G, vertex s) { stwórz pustą kolejkę Q; Q.enqueue(s); while ( Q!= {} ) do { x := Q.dequeue(); przetwarzamy x; zaznacz x jako odwiedzony; for u: (x,u) E do if (u nieodwiedzony i nie ma go w kolejce) Q.enqueue(u); } }

Przeglądanie grafu w głąb Zaznaczamy wszystkie wierzchołki jako nieodwiedzone. Wyznaczamy wierzchołek startowy s i wrzucamy go na stos planowanych odwiedzin. Powtarzamy następująca procedurę: ściągamy wierzchołek ze stosu, odwiedzamy go, na stos odwiedzin wrzucamy wszystkich jego sąsiadów, którzy jeszcze nie byli odwiedzeni.

Przeglądanie grafu w głąb W_glab(graph G, vertex s) { stwórz pusty stos S; S.push(s); while ( S!= {} ) do { x := S.pop(); przetwarzamy x; zaznacz x jako odwiedzony; for u: (x,u) E do if (u nieodwiedzony i nie ma go na stosie) S.push(u); } }

Przeglądanie rekurencyjne grafu w głąb W_glab(graph G, vertex u) { } przetwarzamy u; for v: (u, v) E do if (v nieodwiedzony) W_glab(G, v);

Przeglądanie grafu Złożoność czasowa: O(n+m) bo odwiedzamy wszystkie wierzchołki i przetwarzając wierzchołek sprawdzamy wszystkich jego sąsiadów. Złożoność pamięciowa: O(n). Przeglądanie grafu w głąb można zaprogramować rekurencyjnie.

Przeglądanie grafu Aby przeglądnąć (wszerz albo w głąb) wszystkie wierzchołki w grafie niespójnym należy iteracyjnie sprawdzać czy wierzchołek był odwiedzony, a jeśli nie to rozpoczynać ponowne przeglądanie od tego właśnie wierzchołka. przeglądaj(graph G){ } oznacz wszystkie wierzchołki jako nieodwiedzone; for v V do if (v nieodwiedzony) przeglądaj(g, v);

Grafy skierowane Graf skierowany (digraf) to graf, w którym krawędzie mają kierunek (jeden wierzchołek jest początkowy a drugi końcowy). Stopień wejściowy wierzchołka v to liczba krawędzi wchodzących do tego wierzchołka (oznaczany jako indeg(v)); stopień wyjściowy wierzchołka to liczba krawędzi wchodzących z tego wierzchołka (oznaczany jako outdeg(v)). Silnie spójna składowa grafu skierowanego D, to taki maksymalny podgraf H (a jednocześnie jego spójna składowa), że pomiędzy każdą parą wierzchołków w H istnieją ścieżki, które je łączą.

Grafy ważone Graf ważony to graf albo digraf, w którym krawędziom są przypisane pewne wagi (najczęściej nieujemne): G(V, E, w), gdzie w: E R.