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



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

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Matematyczne Podstawy Informatyki

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

TEORIA GRAFÓW I SIECI

Matematyka dyskretna

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

Ogólne wiadomości o grafach

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Digraf. 13 maja 2017

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

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

G. Wybrane elementy teorii grafów

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyczne Podstawy Informatyki

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

Algorytmiczna teoria grafów

Kolorowanie wierzchołków

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

Sprawozdanie do zadania numer 2

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

Graf. Definicja marca / 1

Algorytmiczna teoria grafów

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

Matematyczne Podstawy Informatyki

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

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

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

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

Opracowanie prof. J. Domsta 1

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

Programowanie dynamiczne i algorytmy zachłanne

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

Grafy i sieci w informatyce - opis przedmiotu

Wykład 10 Grafy, algorytmy grafowe

KURS MATEMATYKA DYSKRETNA

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

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

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

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

Wykład 7. Algorytmy grafowe

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

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

Algorytmy z powracaniem

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

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

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

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

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

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

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

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

TEORIA GRAFÓW I SIECI

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

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Grafy podstawowe pojęcia

Matematyka dyskretna - 5.Grafy.

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Wykłady z Matematyki Dyskretnej

PRZEWODNIK PO PRZEDMIOCIE

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

TEORIA GRAFÓW I SIECI

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Algorytmy i struktury danych

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

Teoria grafów dla małolatów

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

[1] E. M. Reingold, J. Nievergelt, N. Deo Algorytmy kombinatoryczne PWN, 1985.

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

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

Matematyka dyskretna - 7.Drzewa

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

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

Programowanie obiektowe

Sortowanie topologiczne skierowanych grafów acyklicznych

TEORETYCZNE PODSTAWY INFORMATYKI

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

Tworzenie gier na urządzenia mobilne

TEORIA GRAFÓW I SIECI

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

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

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia

Elementy teorii grafów Elementy teorii grafów

E ' E G nazywamy krawędziowym zbiorem

Algorytmy i struktury danych.

Minimalne drzewa rozpinające

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

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

Programowanie obiektowe

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

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

PODSTAWY INFORMATYKI wykład 10.

AiSD zadanie trzecie

Podejście zachłanne, a programowanie dynamiczne

Transkrypt:

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

Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów 3. Spójność grafu, lasy, drzewa, drzewa rozpinające 4. Najkrótsze ścieżki w grafie, algorytm Dijkstry 5. Algorytm Kruskala 6. Cykle Hamiltona w grafach 7. Kolorowanie grafów 8. Skojarzenia w grafach

Literatura Podstawowa T. H. Cormen, C. E. Leiserson, R. L. Rivest, Wprowadzenie do algorytmów M. Karoński, Algorytmy grafowe N. Deo, Teoria grafów i jej zastosowania w technice i informatyce L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych Dodatkowa E. Reingold, J. Nievergelt, N. Deo, Algorytmy kombinatoryczne M. M. Sysło, N. Deo, J. S. Kowalik, Algorytmy optymalizacji dyskretnej

Zaliczenie Kolokwium po ostatnich zajęciach

Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów 3. Spójność grafu, lasy, drzewa, drzewa rozpinające 4. Najkrótsze ścieżki w grafie, algorytm Dijkstry 5. Algorytm Kruskala 6. Cykle Hamiltona w grafach 7. Kolorowanie grafów 8. Skojarzenia w grafach

Wprowadzenie Celem przedmiotu jest przedstawienie klasy algorytmów operujących na strukturze grafu (sieci). Przedstawione zostaną odpowiednie struktury danych do reprezentacji grafów, a następnie algorytmy grafowe: algorytmy znajdowania najkrótszej ścieżki w grafie, przeglądania grafu, znajdowania drzewa rozpinającego grafu oraz problemy kolorowania i spójności grafów.

Podstawowe pojęcia teorii grafów Graf to jedna z dynamicznych struktur danych, umożliwiająca reprezentację zależności pomiędzy obiektami Inne znane dynamiczne struktury danych to Listy jednokierunkowe Listy dwukierunkowe Listy cykliczne (jedno i dwukierunkowe) Drzewa binarne Drzewa Lasy

Przykłady struktur Lista Lista cykliczna

Przykłady struktur Lista dwukierunkowa Lista dwukierunkowa cykliczna

Przykłady struktur Drzewo binarne

Podstawowe pojęcia teorii grafów Graf jest uogólnieniem wszystkich powyższych struktur dynamicznych Jego budowa przypomina sieć komputerową, gdzie stacje będą wierzchołkami grafu, a bezpośrednie połączenia między nimi będą krawędziami grafu Za pomocą odpowiednio dobranej struktury grafu można rozwiązywać różne problemy, nie tylko związane z sieciami komputerowymi

Zastosowania grafów Zależności grafowe mogą opisywać przykładowo poszukiwanie drogi pomiędzy miastami, połączeń kolejowych, połączeń drogowych między skrzyżowaniami, system pozycjonowania GPS Algorytmy działające na takich grafach mogą wyszukiwać optymalne drogi, najszybsze, najkrótsze

Zastosowania grafów W grach komputerowych przy zastosowaniu sztucznej inteligencji można odnajdywać optymalne drogi poruszania się wirtualnych postaci sterowanych przez komputer Podobne sytuacje spotykamy w robotyce, gdzie urządzenie posiadające wbudowaną mapę musi dotrzeć w najkrótszym czasie do zadanego celu

Zastosowania grafów Strony internetowe mają również strukturę grafu z połączeniami (linkami) do innych stron jako krawędzie łączące kolejne strony, wyszukiwarki internetowe przeglądają sieć w ten sposób, zliczając liczbę krawędzi prowadzących do danej strony budują ranking stron Podobnie w lingwistyce buduje się zależności między słowami w zdaniu (syntaktyka) oraz między ich znaczeniem (semantyka), co dalej ma zastosowanie w rozpoznawaniu mowy, w interakcji między maszyną a człowiekiem

Zastosowania grafów Grafy mają również szerokie zastosowanie w socjologii biologii fizyce chemii energetyce matematyce

Pojęcie grafu Główne rodzaje grafów Grafy proste bez krawędzi wielokrotnych oraz pętli, czyli krawędzi których końcami jest ten sam wierzchołek Multigrafy mogą zawierać krawędzie wielokrotne oraz pętle Graf lub multigraf G składa się zatem z dwóch zbiorów (V, E), gdzie V jest zbiorem wierzchołków ponumerowanych v 1, v 2,, v m E jest zbiorem krawędzi e 1, e 2,, e n łączących dwa wierzchołki Każda krawędź jest zatem parą dwóch wierzchołków e i = { v k, v l }

Przykład grafu Graf nieskierowany prosty Multigraf

Pojęcie grafu Inne rodzaje grafów Grafy skierowane (nazywane również digrafami) to grafy w których krawędzie są uporządkowanymi parami wierzchołków Zatem krawędź e i = ( v k, v l ), jest skierowana od wierzchołka v k do wierzchołka v l (takie krawędzie nazywamy łukami)

Przykład grafu Graf skierowany prosty

Pojęcie grafu Inne rodzaje grafów Grafy ważone to grafy gdzie dodatkowo każdej krawędzi przypisana jest waga (np. koszt przesłania informacji od jednego wierzchołka do drugiego) Hipergrafy to rozszerzenie pojęcia grafu, krawędzie w tym przypadku krawędzie mogą być zbiorami więcej niż dwóch wierzchołków Zbiór krawędzi E jest podzbiorem zbioru wszystkich możliwych niepustych zbiorów o elementach z V

Przykład grafu Graf skierowany ważony prosty

Przykład grafu Hipergraf o czterech krawędziach i sześciu wierzchołkach

Pojęcia opisujące grafy Wprowadzimy teraz kilka podstawowych pojęć opisujących właściwości grafu Przez stopień wierzchołka w grafie nieskierowanym rozumiemy liczbę krawędzi przylegających do danego wierzchołka v, oznaczamy ją deg(v) W grafie skierowanym, możemy mówić o stopniu wyjścia (liczba krawędzi wychodzących) i stopniu wejścia (liczba krawędzi wchodzących), oznaczamy je deg Out (v), deg In (v)

Przykład grafu Graf nieskierowany prosty Wierzchołki mają stopnie deg(v 1 ) = 2 deg(v 2 ) = 5 deg(v 3 ) = 2 deg(v 4 ) = 3 deg(v 5 ) = 3 deg(v 6 ) = 3

Przykład grafu Graf skierowany prosty Wierzchołki mają stopnie deg In (v 1 ) = 1, deg Out (v 1 ) = 1 deg In (v 2 ) = 3, deg Out (v 2 ) = 2 deg In (v 3 ) = 1, deg Out (v 3 ) = 1 deg In (v 4 ) = 1, deg Out (v 4 ) = 2 deg In (v 5 ) = 2, deg Out (v 5 ) = 1 deg In (v 6 ) = 1, deg Out (v 6 ) = 2

Pojęcia opisujące grafy Graf, którego każdy wierzchołek jest połączony bezpośrednio krawędzią z każdym innym wierzchołkiem, nazywamy grafem pełnym Graf pełny na m wierzchołkach oznaczamy K m Graf, którego każdy wierzchołek jest stopnia k nazywamy grafem regularnym stopnia k W trakcie wykładu będą pojawiać się jeszcze inne pojęcia związane z budową grafu

Przykłady grafów pełnych K 1 K 2 K 3 K 4 K 5 K 6

Przykłady grafów regulanych Graf regularny stopnia 5 Graf regularny stopnia 3 Graf regularny stopnia 2

Reprezentacje komputerowe grafów Zajmijmy się teraz możliwościami zapisu grafu w komputerze Rozważmy następujący graf prosty na pięciu wierzchołkach V = {v 1, v 2, v 3, v 4, v 5 } o siedmioelementowym zbiorze krawędzi E = {e 1, e 2, e 3, e 4, e 5, e 6, e 7 }

Przykład grafu Graf nieskierowany prosty na 5 wierzchołkach o 7 krawędziach

Przykład grafu Ten sam graf w wersji planarnej, tzn. narysowany na płaszczyźnie tak, że żadne krawędzie nie przecinają się

Reprezentacje komputerowe grafów Macierz przyległości (sąsiedztwa) Graf G = (V, E), gdzie V = {v 1, v 2,..., v m } jest zbiorem wierzchołków, zapisujemy w postaci macierzy przyległości A(G) o wymiarach m m o elementach (a ij ), gdzie a ij jest liczbą krawędzi łączących wierzchołek v i z v j W przypadku grafu skierowanego a ij jest liczbą łuków z wierzchołka v i do v j

Reprezentacje komputerowe grafów W przykładowym grafie macierz przyległości wygląda następująco v 1 v 2 v 3 v 4 v 5 v 1 0 1 0 1 0 v 2 1 0 1 1 1 A(G) = v 3 0 1 0 1 0 v 4 1 1 1 0 1 v 5 0 1 0 1 0

Reprezentacje komputerowe grafów Własności macierzy przyległości dla grafu prostego macierz przyległości A(G) jest macierzą binarną (złożoną wyłącznie z zer i jedynek) Macierz przyległości wymaga V 2 = m 2 bitów pamięci Jeżeli w jest długością słowa maszynowego, to każdy wiersz macierzy przyległości można zapisać jako ciąg m bitów na [m/w] słowach maszynowych (gdzie [x] oznacza najmniejszą liczbę całkowitą nie mniejszą niż x)

Reprezentacje komputerowe grafów Własności macierzy przyległości (c. d.) W grafie prostym macierz A(G) jest symetryczna Można ją zatem zapisać na mniejszej liczbie bitów, zajmuje ona m(m 1)/2 bitów (nad przekątną) W grafie skierowanym zajmuje m[m/w] (m wierszy) Reprezentacja macierzowa jest korzystniejsza dla grafów gęstych, tzn. mających stosunkowo dużo krawędzi, niewiele mniej niż kwadrat liczby wierzchołków, czyli n m 2

Reprezentacje komputerowe grafów Macierz incydencji Dany jest graf G = (V, E), gdzie V = {v 1, v 2,..., v m } jest zbiorem wierzchołków, E = {e 1, e 2,..., e n } zbiorem krawędzi grafu Macierzą incydencji grafu G jest macierz M(G) = (m ij ), 1 i m, 1 j n, gdzie liczba m ij {0, 1, 2} oznacza ile razy v i oraz e j są incydentne (krawędź przylega do wierzchołka) Wartość 2 występuje w przypadku pętli

Przykład grafu Graf nieskierowany prosty na 5 wierzchołkach o 7 krawędziach

Reprezentacje komputerowe grafów Dla przykładowego grafu macierz incydencji wygląda następująco e 1 e 2 e 3 e 4 e 5 e 6 e 7 v 1 1 0 0 0 0 0 1 v 2 1 1 1 0 1 0 0 M(G) = v 3 0 1 0 1 0 0 0 v 4 0 0 0 1 1 1 1 v 5 0 0 1 0 0 1 0

Reprezentacje komputerowe grafów Właściwości macierzy incydencji Wymaga V. E bitów pamięci (dla grafów prostych), czyli przy naszych oznaczeniach m. n Wartość ta może być większa niż V 2 bitów w macierzy przyległości, ponieważ liczba krawędzi E jest często większa niż liczba wierzchołków V W niektórych jednak przypadkach może być korzystniejsze użycie macierzy incydencji, niż macierzy przyległości pomimo zwiększonej zajętości pamięci Macierze incydencji są szczególnie dogodne przy rozpatrywaniu obwodów elektrycznych i układów przełączających

Reprezentacje komputerowe grafów Kolejnym zapisem grafu jest lista krawędzi Jest to najbardziej naturalny zapis, prosty ale mający również spore zastosowanie w praktyce Dla przykładowego grafu z poprzedniego przykładu otrzymujemy następującą postać listy krawędzi {v 1, v 2 }, {v 1, v 4 }, {v 2, v 3 }, {v 2, v 4 }, {v 2, v 5 }, {v 3, v 4 }, {v 4, v 5 } W przypadku grafów skierowanych, na liście pojawiają się pary uporządkowane wierzchołków zamiast zbiorów

Reprezentacje komputerowe grafów Liczba bitów potrzebna przechowania etykiet (czyli ich numerów) wierzchołków grafu G na m wierzchołkach wynosi b, gdzie 2 b 1 < m 2 b, czyli b = log 2 m + 1 Ilość pamięci do zapisania całego grafu G wynosi zatem 2. b. E bitów Ten sposób reprezentacji jest bardziej ekonomiczny niż macierz przyległości, pod warunkiem, że zachodzi 2 b E < V 2 Reprezentacja taka, jest zatem korzystniejsza dla grafów rzadkich

Reprezentacje komputerowe grafów Podobną reprezentacją do poprzedniej jest lista wierzchołków Przechowujemy graf wykorzystując dwie tablice liniowe F = (f 1, f 2,..., f e ), H = (h 1, h 2,..., h e ) Elementami obu tablic są etykiety wierzchołków Długość tablic e jest równa E W grafie skierowanym, i-ty łuk, e i, prowadzi od wierzchołka f i, do wierzchołka h i W grafie nieskierowanym krawędź e i łączy f i i h i

Przykład grafu W rozpatrywanym grafie Zapis w postaci dwóch list wygląda następująco F = (v 1, v 2, v 2, v 3, v 2, v 4, v 1 ), H = (v 2, v 3, v 5, v 4, v 4, v 5, v 4 )

Reprezentacje komputerowe grafów Kolejną reprezentacją, bardzo często spotykaną w praktyce jest lista wierzchołków sąsiednich (czyli następników) Metoda ta jest efektywna w reprezentacji grafów gdy stosunek E / V nie jest duży Dla każdego wierzchołka v tworzymy listę (lub tablicę), której pierwszym elementem jest v, a pozostałymi elementami są wierzchołki będące sąsiadami wierzchołka v, w przypadku grafów nieskierowanych W przypadku grafów skierowanych zapisujemy do listy bezpośrednich następników wierzchołka v, czyli takie wierzchołki, do których istnieje łuk z wierzchołka v

Przykład grafu W rozpatrywanym grafie Zapis w postaci listy następników wygląda następująco v 1 : v 2, v 4 v 2 : v 1, v 3, v 4, v 5 v 3 : v 2, v 4 v 4 : v 1, v 2, v 3, v 5 v 5 : v 2, v 4

Przykład grafu Dokładniejsza reprezentacja listowa takiego zapisu wygląda następująco Graf nieskierowany 1 2 4 NULL 2 1 4 5 6 NULL 3 5 6 NULL 4 1 2 5 NULL 5 2 3 4 NULL 6 2 3 NULL

Przykład grafu W przypadku grafu skierowanego 1 2 NULL 2 4 6 NULL 3 5 NULL 4 1 5 NULL 5 2 NULL 6 3 6 NULL

Reprezentacje komputerowe grafów Zajętość pamięci jest równa E + V dla grafów skierowanych oraz 2 E + V dla nieskierowanych, ogólnie zatem O( E + V ) Niestety przeglądanie zbioru krawędzi w tej reprezentacji zajmuje rzędowo około E kroków Sprawdzenie, czy krawędź {v i, v j } należy do grafu, wymaga czasu proporcjonalnego do min{ deg(v i ), deg(v j ) } Usunięcie krawędzi {v i, v j } wymaga czasu proporcjonalnego do max{ deg(v i ), deg(v j ) }

Następny wykład Algorytmy przeglądania, przeszukiwania elementów grafu