Wprowadzenie do teorii grafów. Dr inż. Krzysztof Lisiecki

Podobne dokumenty
Algorytmiczna teoria grafów

Matematyczne Podstawy Informatyki

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

Matematyka dyskretna

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

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

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

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

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

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

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

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

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

Opracowanie prof. J. Domsta 1

Graf. Definicja marca / 1

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Kolorowanie wierzchołków

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

G. Wybrane elementy teorii grafów

Matematyczne Podstawy Informatyki

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

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

KURS MATEMATYKA DYSKRETNA

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

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

Wykłady z Matematyki Dyskretnej

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyczne Podstawy Informatyki

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.

E ' E G nazywamy krawędziowym zbiorem

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

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

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

TEORIA GRAFÓW I SIECI

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

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

Algorytmiczna teoria grafów

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

TEORIA GRAFÓW I SIECI

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

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

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

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

Wykłady z Matematyki Dyskretnej

Sortowanie topologiczne skierowanych grafów acyklicznych

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

TEORIA GRAFÓW I SIECI

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

Macierze. Rozdział Działania na macierzach

6d. Grafy dwudzielne i kolorowania

5. Rozwiązywanie układów równań liniowych

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

Digraf. 13 maja 2017

Wykład 10 Grafy, algorytmy grafowe

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

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

Algebra liniowa z geometrią

Elementy teorii grafów Elementy teorii grafów

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

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

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

Kolorowanie wierzchołków grafu

TEORETYCZNE PODSTAWY INFORMATYKI

3. Macierze i Układy Równań Liniowych

Wykład 4. Droga i cykl Eulera i Hamiltona

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

Lista 4. Kamil Matuszewski 22 marca 2016

Matematyka dyskretna - 7.Drzewa

7. Teoria drzew - spinanie i przeszukiwanie

LOGIKA I TEORIA ZBIORÓW

KURS MATEMATYKA DYSKRETNA

Ogólne wiadomości o grafach

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

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

IX Olimpiada Matematyczna Gimnazjalistów

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

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

Luty 2001 Algorytmy (4) 2000/2001

0 + 0 = 0, = 1, = 1, = 0.

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

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

TEORIA GRAFÓW I SIECI

Grupy. Permutacje 1. (G2) istnieje element jednostkowy (lub neutralny), tzn. taki element e G, że dla dowolnego a G zachodzi.

Matematyka dyskretna - 5.Grafy.

Algorytmy i Struktury Danych.

XII Olimpiada Matematyczna Juniorów Zawody stopnia pierwszego część korespondencyjna (1 września 2016 r. 17 października 2016 r.)

Krzywa uniwersalna Sierpińskiego

domykanie relacji, relacja równoważności, rozkłady zbiorów

6a. Grafy eulerowskie i hamiltonowskie

Rzut oka na współczesną matematykę spotkanie 9-10: Zagadnienie czterech barw i teoria grafów

Matematyka dyskretna - 6.Grafy

Algorytmy z powracaniem

XI Olimpiada Matematyczna Gimnazjalistów

Transkrypt:

1

Reguły gry (1): Uczymy się systematycznie Nie używamy telefonów Zaliczamy w terminie 2

Kontakt: konsultacje poniedziałek 8.45 10.15 (pokój wykładowców) e-mail : krzysztof.lisiecki@p.lodz.pl lub krzysztof@lisiecki.org.pl http: www.lisiecki.org.pl (materiały dydaktyczne, terminy, ważne komunikaty) tel. do pok. 512 (akwarium) (0-42) 631-36-15 3

Reguły gry: Sposób zaliczenia przedmiotu: Kolokwium wykładowe (30 pytań, każde 1p.) Praca domowa max. 6 punktów Przeliczanie punktów 18-23 p. 3 na oceny 24-26 p. 3,5 27-29 p. 30-31 p. 32-36 p. 4 4,5 5 4

Reguły gry (3): Terminy wykładów: poniedziałki 10.15-12.00 Termin zaliczenia przedostatni wykład 2.06.2007r. (poniedziałek) godz. 10.15 Termin oddania pracy domowej - 9.06 (ostatni wykład) 5

Czy można przejść przez wszystkie mosty, przez każdy przechodząc dokładnie jeden raz? 6

wyspa Kneiphof x rzeka Pregoła Czy można przejść przez wszystkie mosty, przez każdy przechodząc dokładnie jeden raz? 7

Odpowiedź na postawione pytanie jest negatywna i wynika z twierdzenia, które zapoczątkowało teorię grafów: W grafie można znaleźć cykl Eulera wtedy i tylko wtedy, gdy graf jest spójny i każdy jego wierzchołek ma parzysty stopień. 8

Grafem nazywamy parę G=(X,G), złożoną ze skończonego zbioru punktów X oraz skończonego zbioru linii G. Punkty ze zbioru X nazywamy wierzchołkami grafu G, a linie zbioru G krawędziami grafu. 9

Krawędzie stanowią połączenia pomiędzy wierzchołkami grafu. Dopuszczamy przy tym, aby krawędź łączyła wierzchołek sam ze sobą. Nazywamy ją wtedy pętlą. 10

Schematycznie graf przedstawiamy w postaci rysunku. 11

12

Zagadnienie mostów królewieckich (L.Euler, 1736) Zagadnienie najkrótszej drogi (algorytm Dijkstry) Problem chińskiego listonosza (Mei Ku Kwan, 1962) Problem komiwojażera (cykl Hamiltona) 13

14

Inne zastosowania Analiza wzorów strukturalnych związków chemicznych Analiza obwodów elektrycznych Problemy kolorowania map (twierdzenie o czterech barwach) Problem kojarzenia małżeństw 15

Krawędź łączącą wierzchołki Xi oraz Xj będziemy zapisywać jako parę nieuporządkowaną {Xi, Xj }. Gdy nie da się stwierdzić, który z wierzchołków jest początkiem, a który końcem krawędzi to taki graf nazywamy nieskierowanym. 16

Gdy określimy, który z wierzchołków jest początkiem, a który końcem krawędzi, to wówczas taką krawędź nazywamy łukiem. Łuk łączący wierzchołek Xi z wierzchołkiem Xj (od wierzchołka Xi do wierzchołka Xj ) będziemy zapisywać jako parę uporządkowaną (Xi, Xj ). 17

Graf G=(X,G), nazywamy nieskierowanym (niezorientowanym), gdy zbiór G składa się z samych krawędzi. 18

Graf G=(X,G), nazywamy digrafem (directed graph) lub grafem skierowanym (zorientowanym), gdy zbiór G składa się z samych łuków. 19

Grafem pustym nazywamy graf składający się jedynie z wierzchołków, nie zawierający żadnych krawędzi. 20

Podgrafem grafu G=(X,G), nazywamy każdy graf G =(X,G ) taki, że X X oraz G G. Dopuszczamy przypadki, gdy X =X lub G =G. 21

Przykładem podgrafu danego grafu jest on sam. Przykładem podgrafu jest także dowolny graf powstały z danego grafu przez usunięcie z niego dowolnej liczby krawędzi (nawet wszystkich ) lub dowolnej liczby wierzchołków (nie wszystkich) 22

Przykład podgrafu 23

Grafem prostym nazywamy graf, który nie zawiera pętli i, w którym zbiór krawędzi jest zbiorem bez powtórzeń. Multigrafem nazywamy graf, w którym zbiór krawędzi zawiera powtórzenia. 24

Grafem zupełnym (grafem pełnym) nazywamy graf, w którym dla każdej pary wierzchołków istnieje krawędź łącząca te wierzchołki. Graf zupełny o n wierzchołkach oznaczamy często Kn 25

Przykłady grafów zupełnych 26

Przykłady grafów zupełnych 27

Przykłady grafów zupełnych 28

Dopełnieniem grafu G nazywamy graf o tym samym zbiorze wierzchołków, który zawiera te wszystkie krawędzie grafu zupełnego o zbiorze wierzchołków, które nie występują w grafie G. 29

Wymiarem grafu G nazywamy liczbę jego wierzchołków. Oznaczamy ją dimg 30

Grafem rzadkim nazywamy graf, w którym liczba krawędzi ( łuków) jest dużo mniejsza od kwadratu liczby wierzchołków Grafem gęstym nazywamy graf, w którym liczba krawędzi ( łuków) jest bliska kwadratowi liczby wierzchołków. 31

Jeżeli do wierzchołka Xi dochodzi krawędź gk, to mówimy, że wierzchołek Xi jest incydentny z krawędzią gk. Dwa wierzchołki incydentne z tą samą krawędzią nazywamy sąsiednimi lub zależnymi. Inaczej mówiąc, dwa wierzchołki sąsiadują ze sobą, jeżeli istnieje krawędź (łuk) łącząca te wierzchołki. 32

Mówimy, że wierzchołek jest izolowany, jeśli nie jest incydentny z żadną krawędzią. 33

Stopniem wierzchołka w grafie (nieskierowanym) nazywamy liczbę krawędzi grafu incydentnych z tym wierzchołkiem. stopień wierzchołka Xi oznaczać będziemy deg Xi. Każda pętla w wierzchołku zwiększa jego stopień o 2. Wierzchołek izolowany ma stopień zero. 34

Przykład 35

Jeśli graf posiada m krawędzi oraz X = { X 1,..., X n } n i= 1 to deg X i = 2m 36

Wniosek W dowolnym grafie jest parzysta ilość wierzchołków nieparzystego stopnia. 37

Graf nazywamy regularnym, gdy każdy jego wierzchołek ma ten sam stopień. 38

Drogą w grafie G (zorientowanym lub nie) nazywamy każdy ciąg { X 1, g1, X 2,..., X n, g n, X n+ 1 } X 1,..., X n + 1 X, g1,..., g n G taki, że koniec jednej krawędzi (łuku) jest początkiem innej. 39

Drogę w grafie G nazywamy zamkniętą, gdy X n+ 1 = X 1 40

Drogę w grafie nazywamy elementarną, gdy wszystkie jej wierzchołki są różne. Drogę w grafie nazywamy prostą, jeżeli wszystkie jej krawędzie (łuki) są różne. Drogę prostą zamkniętą nazywamy cyklem (obwodem). Cykl nazywamy elementarnym, jeżeli jest drogą elementarną (wszystkie wierzchołki są różne). 41

Graf, który nie zawiera cykli nazywamy grafem acyklicznym. Drogą acykliczna nazywamy drogę, dla której graf składający się z wierzchołków i łuków tworzących drogę jest acykliczny. 42

Twierdzenie Jeżeli droga zamknięta { X 1, g1, X 2,..., X n, g n, X 1 } jest długości co najmniej 3 i wierzchołki X 1,..., X n są różne, to jest cyklem. 43

Mówimy, że droga ma długość n jeśli jest postaci { X 1, g1, X 2,..., X n, g n, X n + 1 } oraz przyporządkowanie łukowi pary wierzchołków ( Xi, X i+ 1 ) jest funkcją. Dopuszczamy sytuacje, w których łuk łączy wierzchołek ze sobą. Taką drogę nazywamy pętlą. 44

Odległością między dwoma wierzchołkami w grafie nazywamy długość najkrótszej drogi łączącej te wierzchołki. Średnicą grafu nazywamy maksimum spośród wszystkich odległości między wierzchołkami grafu. 45

Poniżej widzimy graf o średnicy 4 46

Grafem z wagami (grafem ważonym) nazywamy graf, w którym każdej krawędzi (łukowi) przypisana jest pewna liczba nieujemna zwana wagą danej krawędzi. Innymi słowy, na zbiorze krawędzi (łuków) każdego grafu możemy określić pewną funkcję, która danej krawędzi (łukowi) łączącej wierzchołek Xi z wierzchołkiem Xk przypisuje pewna liczbę w(i,k). 47

Gdy nie istnieje krawędź (łuk) łącząca wierzchołek z wierzchołkiem Xi z wierzchołkiem Xk wówczas przyjmujemy w(i,k)=, chociaż w niektórych przypadkach wygodnie jest przyjąć w(i,k)=0. 48

Wagą drogi w grafie ważonym nazywamy sumę wag krawędzi (łuków) tworzących tę drogę. 49

Uwaga: Każdy graf, w którym nie jest określona funkcja wagowa możemy traktować jako graf z wagami przyjmując wagę każdej krawędzi równą jeden. Wówczas droga o najmniejszej wadze łącząca dane dwa wierzchołki jest równa odległości tych wierzchołków. 50

Wagą grafu nazywamy sumę wag wszystkich jego krawędzi 51

Waga poniższego grafu wynosi 28. 52

Graf nazywamy spójnym, jeżeli dla każdej pary jego wierzchołków istnieje droga łącząca te wierzchołki. 53

Składową spójną grafu nazywamy każdy jego spójny podgraf, który nie jest jednocześnie podgrafem innego grafu spójnego. Składową spójną jest też wierzchołek izolowany. 54

Graf o trzech spójnych składowych 55

Krawędź grafu, której usunięcie zwiększa liczbą jego spójnych składowych nazywamy mostem. most most 56

Twierdzenie Jeżeli G jest grafem prostym wymiaru n, posiada m krawędzi oraz k spójnych składowych, to spełniona jest nierówność n k m ( n k )( n k + 1) 2 57

Dla n=8 oraz k=3 mamy 5 m 15 Rys.2 Rys.1 58

Wniosek Jeżeli graf prosty wymiaru ma więcej niż ( n 1)( n 2) 2 krawędzi, to jest spójny. 59

Wniosek Jeśli graf prosty jest spójny wymiaru n posiada m krawędzi, to n ( n 1) n 1 m 2 60

Przykład Dla n=4 mamy 3 m 6 61

Dwa grafy G1 = ( X 1, G1 ) oraz G2 = ( X 2, G2 ) nazywamy izomorficznymi, gdy istnieje wzajemnie jednoznaczne odwzorowanie (bijekcja) zbiorów ich wierzchołków takie, że liczba krawędzi łączących dane dwa wierzchołki pierwszego grafu jest równa liczbie krawędzi łączących odpowiadające im wierzchołki grafu drugiego. 62

Wprost z definicji izomorfizmu grafów wynika, że grafy izomorficzne mają: ten sam wymiar (liczbę wierzchołków), tę samą liczbę krawędzi, tę samą liczbę pętli, tę sama liczbę wierzchołków o danym stopniu. 63

Przykład Rys. a Rys. b 64

Grafy z rysunków są izomorficzne, a odpowiednie odwzorowanie zbioru wierzchołków grafu z rysunku a) na zbiór wierzchołków grafu z rysunku b) przedstawia poniższa tabelka: Wierzchołek z grafu z rys. a) 1 2 3 4 5 Wierzchołek z grafu z rys. b) D A C E B 65

UWAGA: Spełnienie powyższych czterech warunków dla dwóch grafów nie upoważnia nas jeszcze do stwierdzenia, że są one izomorficzne! 66

Przykład Grafy nieizomorficzne spełniające warunki 1-4 67

Grafem planarnym nazywamy graf, który możemy narysować na płaszczyźnie tak, aby jego krawędzie nie przecinały się. Uwaga: Fakt, że rysunek grafu zawiera przecinające się krawędzie nie oznacza, że graf nie jest planarny. 68

Przykładem jest graf (rys. a), który można narysować w ten sposób, by jego krawędzie nie przecinały się (rys. b). Jest to zatem graf planarny. Rys. b Rys. a 69

Twierdzenie Każdy prosty graf planarny można narysować za pomocą odcinków. 70

71

72

73

Grafy platońskie, to grafy utworzone z wierzchołków i krawędzi pięciu wielościanów foremnych 74

Grafy platońskie czworościan foremny (tetraedr) 75

Grafy platońskie sześcian (heksaedr) 76

Grafy platońskie ośmiościan foremny (oktaedr) 77

Grafy platońskie dwunastościan foremny (dodekaedr) 78

Grafy platońskie dwudziestościan foremny (ikosaedr) 79

Miarą nieplanarności grafu jest liczba przecięć. Liczbą przecięć grafu G nazywamy najmniejszą liczbę przecięć, które muszą wystąpić, aby dany graf narysować na płaszczyźnie. Liczbę przecięć grafu G oznaczamy cr(g). Dla dowolnego grafu planarnego liczba przecięć jest równa zero. 80

cr (G). =1 81

Rysunek grafu planarnego dzieli płaszczyznę na obszary (ściany), z których jeden jest nieograniczony (rys. poniżej). 82

Twierdzenie Eulera (1750) Jeżeli G jest grafem planarnym spójnym wymiaru n, posiadającym m krawędzi oraz f ścian, to n m+ f = 2 83

Przykład n=8, m=11, f=5 n-m+f=8-11+5=2 84

Wniosek z tw. Eulera Jeżeli G jest grafem planarnym wymiaru n, posiadającym k spójnych składowych, m krawędzi oraz f ścian, to n m+ f = k + 1 85

Przykład n=9, k=2 m=10, f=4 9-10+4=2+1 86

Dla danego grafu możemy stworzyć jego opis macierzowy budując: macierz sąsiedztwa, macierz incydencji, lub macierz cykli (obwodów) 87

Niech G=(X,G) będzie dowolnym grafem nieskierowanym wymiaru n. Macierzą sąsiedztwa grafu G nazywamy macierz kwadratową, A = [aij ]i, j n której elementy określamy następująco: aij jest liczbą krawędzi od wierzchołka do wierzchołka X j 88

Widzimy więc, że elementy macierzy są liczbami dodatnimi lub zerami, przy czym element aij = 0 wtedy i tylko wtedy, gdy nie istnieje krawędź od wierzchołka X i do wierzchołka X j Macierz sąsiedztwa grafu nieskierowanego niesie wiele informacji na temat grafu. 89

wymiar macierzy n n mówi, że graf ma wymiar n (liczba wierzchołków), ilość jedynek na głównej przekątnej jest równa ilości pętli, Jeśli graf nie ma pętli, to suma wszystkich elementów macierzy jest równa podwojonej liczbie krawędzi w grafie, 90

macierz sąsiedztwa grafu nieskierowanego jest macierzą symetryczną, Jeżeli graf nie ma pętli, to suma elementów i-tego wiersza (i-tej kolumny) jest równa stopniowi wierzchołka 91

Niech G=(X,G) będzie dowolnym grafem skierowanym wymiaru n. Macierzą sąsiedztwa grafu G nazywamy macierz kwadratową, A = [aij ]i, j n której elementy określamy następująco: aij jest liczbą łuków od wierzchołka Xi do wierzchołka X j 92

Macierz sąsiedztwa grafu skierowanego niesie takie informacje na temat grafu skierowanego jak macierz grafu nieskierowanego. Wystarczy we własnościach 1 5 zamienić słowo krawędź na słowo łuk. 93

Przykład Graf nieskierowany i jego macierz sąsiedztwa 0 1 1 1 1 0 1 0 1 94

Przykład Graf skierowany i jego macierz sąsiedztwa 0 0 1 0 1 2 1 0 0 95

Macierzą incydencji grafu wymiaru n bez pętli posiadającego m krawędzi nazywamy macierz A wymiaru n m, której elementy określone są wzorem 1, jeśli j ta krawędź jest aij = incydentna z i tym wierzcholkiem 0 w przeciwnym razie 96

a b c d e f Przykład g 1 1 0 0 0 0 0 0 Graf i jego macierz incydencji 2 1 1 1 0 0 0 0 3 0 1 0 1 1 0 0 4 0 0 1 1 0 1 1 5 0 0 0 0 1 1 1 97

Własności macierzy incydencji Każda kolumna macierzy zawiera dokładnie dwie jedynki, Liczba jedynek w każdym wierszu jest równa stopniowi odpowiadającego mu wierzchołka, 98

Własności macierzy incydencji c.d. 2. Wiersz złożony z samych zer reprezentuje wierzchołek izolowany, 3. Krawędzie równoległe tworzą w macierzy identyczne kolumny, 99

Własności macierzy incydencji c.d. 2. Jeśli graf ma dwie spójne składowe, to jego macierz incydencji jest macierzą blokową postaci A1 0 0 A2 gdzie macierze w lewym górnym i prawym dolnym rogu są, odpowiednio, macierzami incydencji każdej składowej spójnej grafu 100

Uwaga: Jeśli składowych spójnych jest k, to macierz incydencji można zapisać w postaci blokowej A1 0 0 0 0 0 0 A2 0 0 0 0 0 0 Ak 101

Własności macierzy incydencji c.d. 2. Permutacja dwóch wierszy lub kolumn w macierzy incydencji odpowiada przeetykietowaniu wierzchołków i krawędzi tego samego grafu. 102

Wniosek: Dwa grafy są izomorficzne wtedy i tylko wtedy i tylko wtedy gdy ich macierze incydencji różnią się tylko permutacją wierszy i kolumn. 103

Przykład 1 1 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 104

Twierdzenie Rząd macierzy incydencji grafu spójnego wymiaru n jest równy n-1. 105

Twierdzenie o rzędzie macierzy grafu spójnego mówi, że jeden z wierszy jego macierzy incydencji jest liniowo zależny od pozostałych. Sugeruje to, że wszystkie informacje o grafie wymiaru n zawarte są w n-1 wierszach macierzy incydencji. 106

Zredukowaną macierzą incydencji grafu nazywamy macierz otrzymaną z macierzy incydencji przez usunięcie dowolnego wiersza. Macierz ta ma wymiary (n-1) m 107

Wprost z definicji wynika Twierdzenie Macierz incydencji grafu spójnego wymiaru n posiadającego n-1 krawędzi jest nieosobliwą macierzą kwadratową wymiaru n-1 108

Macierzą cykli (obwodów) grafu posiadającego m krawędzi nazywamy macierz A wymiaru n m, której elementy określone są wzorem 1, aij = 0 jeśli i ty cykl zawiera j tą krawędź w przeciwnym razie 109

Przykład Graf i jego cykle 110

111

Macierz cykli grafu 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 112

Własności macierzy cykli Kolumna zer odpowiada krawędzi nie należącej do żadnego cyklu, Każdy wiersz zawiera te i tylko te krawędzie, które tworzą odpowiadający mu cykl 113

Własności macierzy cykli c.d. 2. Wiersz odpowiadający pętli zawiera tylko pojedynczą jedynkę, 3. Liczba jedynek w wierszu jest równa liczbie krawędzi w odpowiadającym mu cyklu, 114

Własności macierzy cykli c.d. 2. Przestawienie dowolnych dwóch wierszy lub kolumn w macierzy cykli odpowiada przeetykietowaniu cykli i krawędzi, 3. Grafy o identycznych macierzach cykli nie muszą być izomorficzne 115

Zastosowanie macierzy sąsiedztwa Problemy: Ile krawędzi łączy dwa dane wierzchołki grafu? Ile dróg długości n łączy dwa dane wierzchołki grafu? 116

Ile jest dróg łączących wierzchołek 2 z wierzchołkiem 4 o długości: b) 1, c) 2, d) 3. 117

Twierdzenie Jeżeli A jest macierzą grafu o wierzchołkach X1, X2,,Xn, to element aij w macierzy Am jest równy liczbie dróg długości m łączących wierzchołek Xi z wierzchołkiem Xj 118

0 1 1 A = 1 1 0 1 0 1 2 A 3 = 3 3 3 3 2 3 2 3 2 1 1 A 2 = 1 2 1 1 1 2 119

Drogą Eulera w grafie nazywamy każdą drogę prostą, która zawiera wszystkie krawędzie grafu. 120

Przykład drogi Eulera { X 1, g 8, X 6, g 7, X 3, g 2, X 1, g1, X 2, g 3, X 3, g 4, X 4, g 5, X 5, g 6, X 6 } 121

Przykład grafu, który nie zawiera drogi Eulera 122

Cyklem Eulera nazywamy zamkniętą drogę Eulera. 123

Przykład Cyklem Eulera jest droga { X 1, g1, X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 6, g 6, X 3, g 7, X 1 } 124

Twierdzenie W grafie spójnym, posiadającym co najwyżej dwa wierzchołki stopnia nieparzystego istnieje droga Eulera. 125

Twierdzenie (Euler, 1736) Jeżeli graf G posiada cykl Eulera, to jest spójny i każdy jego wierzchołek ma parzysty stopień. 126

Przykład grafu posiadającego cykl Eulera 127

Prawdziwe jest również twierdzenie odwrotne. Twierdzenie Jeżeli graf G jest spójny i stopień każdego wierzchołka jest parzysty to posiada cykl Eulera 128

129

Algorytm wyznaczania drogi Eulera w grafie. Wybieramy w grafie dowolny wierzchołek nieparzystego stopnia. Jeśli taki nie istnieje wybieramy dowolny parzystego stopnia. Wybrany wierzchołek oznaczamy przez X. 130

1. Dopóki w grafie są krawędzie incydentne z wierzchołkiem X wykonujemy jedną z poniższych czynności 131

a) jeżeli z wierzchołkiem X jest incydentna dokładnie jedna krawędź g, łącząca ten wierzchołek z wierzchołkiem Y, to podstawiamy X:=Y, zapisujemy g jako kolejny wyraz ciągu oraz usuwamy tę krawędź z grafu. 132

b) jeżeli z wierzchołkiem X incydentna jest więcej niż jedna krawędź, to wybieramy dowolną, która nie jest mostem o postępujemy dalej tak jak w punkcie a. 133

3. a) jeśli otrzymany przez nas ciąg zawiera wszystkie krawędzie grafu oznacza to, że znaleźliśmy drogę Eulera 134

3. b) jeśli otrzymany przez nas ciąg nie zawiera wszystkich krawędzi grafu oznacza to, że graf nie jest spójny 135

Przykład { X 2, g2, X 3} 136

{ X 2, g2, X 3, g3, X 4 } 137

{ X 2, g2, X 3, g3, X 4, g4, X 5 } 138

{ X 2, g2, X 3, g3, X 4, g4, X 5, g5, X 2 } 139

{ X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 2, g1, X 1 } 140

{ X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 2, g1, X 1, g 9, X 6 } 141

{ X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 2, g1, X 1, g 9, X 6, g 8, X 4 } 142

{ X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 2, g1, X 1, g 9, X 6, g 8, X 4, g 7, X 6 } 143

{ X 2, g 2, X 3, g 3, X 4, g 4, X 5, g 5, X 2, g1, X 1, g 9, X 6, g 8, X 4, g 7, X 6, g 6, X 5 } 144

Animacja 1 Animacja 2 145

Definicja Stopniem wejściowym wierzchołka w grafie zorientowanym nazywamy ilość łuków wchodzących do wierzchołka. Stopień wejściowy wierzchołka Xi oznaczamy indegxi. 146

Definicja Stopniem wyjściowym wierzchołka w grafie zorientowanym nazywamy ilość łuków wychodzących z wierzchołka. Stopień wejściowy wierzchołka Xi oznaczamy outdegxi. 147

Wniosek Dla dowolnego wierzchołka Xi w grafie zorientowanym zachodzi równość in deg X i + out deg X i = deg X i 148

Twierdzenie Załóżmy, że graf skierowany traktowany jako nieskierowany jest spójny. Wówczas istnieje w nim cykl Eulera wtedy i tylko wtedy, gdy stopień wejściowy każdego wierzchołka jest równy jego stopniowi wyjściowemu. 149

Graf, który nie posiada cyklu Eulera 150

Graf, który posiada cykl Eulera 151

Wcześniej podana była zależność między ilością krawędzi w grafie niezorientowanym a sumą stopni wierzchołków. Teraz przytoczymy udowodnione przez Istvana Reimana twierdzenie pozwalające oszacować z góry ilość krawędzi w grafie wymiaru n nie zawierającym cykli o długości 4. 152

Twierdzenie. Jeżeli graf G=(X,G) wymiaru n nie zawiera cykli długości 4, to ilość krawędzi m spełnia nierówność n m (1 + 4 4n 3 ) 153

Przykład. Jeśli graf ma wymiar 6 i nie zawiera cykli o długości 4, to 6 m (1 + 4 3 4 6 3 ) = (1 + 2 21) 8,37 154

Definicja. Drzewem nazywamy graf spójny bez cykli. 155

Definicja. Lasem nazywamy graf bez cykli 156

Twierdzenie Niech G będzie grafem wymiaru n. Wówczas następujące stwierdzenia są równoważne: 3. G jest drzewem 4. G nie zawiera cykli i ma n-1 krawędzi 5. G jest spójny i ma n-1 krawędzi 157

G jest spójny i każda krawędź jest mostem dowolne dwa wierzchołki grafu G są połączone dokładnie jedną droga graf G nie zawiera cykli a dołączenie dowolnej nowej krawędzi do G tworzy dokładnie jeden cykl G jest grafem acyklicznym mającym n-1 krawędzi 158

Wniosek W drzewie o co najmniej dwóch wierzchołkach, co najmniej dwa z nich są stopnia 1. 159

Definicja Drzewem ukorzenionym nazywamy drzewo z wyróżnionym wierzchołkiem 160

Przykład 161

Definicja. Dla grafu spójnego G=(X,G) każde drzewo GT=(X,T) takie, że T G nazywamy drzewem spinającym grafu G. 162

Twierdzenie. Każdy graf skończony spójny ma drzewo spinające. 163

Twierdzenie. Każdy graf skończony ma las spinający. 164

Twierdzenie (Cayley, 1889) Graf pełny Kn (dla n 2 ) ma n n-2 różnych drzew spinających. 165

166

167

Definicja Wagą drzewa (jako grafu z wagami) nazywamy sumę wag jego krawędzi (łuków). 168

Przykład Waga drzewa przedstawionego na rysunku poniżej wynosi 21. 169

Listy sąsiedztwa, to tablica złożona z list, których liczba jest równa wymiarowi grafu (liczbie jego wierzchołków). Dla każdego wierzchołka odpowiadająca mu lista składa się z tych, i tylko tych, wierzchołków grafu, które z nim sąsiadują. 170

Listy sąsiedztwa najlepiej nadają się do reprezentowania grafów rzadkich, natomiast dla reprezentacji grafów gęstych zdecydowanie lepiej wybrać macierz. 171

Twierdzenie Suma długości wszystkich list sąsiedztwa grafu (nieskierowanego) jest równa podwojonej liczbie krawędzi tego grafu. Suma długości wszystkich list sąsiedztwa digrafu (grafu skierowanego) jest równa liczbie łuków tego grafu. 172

Przykład 173

174

175

Najważniejszymi i najbardziej znanymi algorytmami grafowymi są: przeszukiwanie wszerz oraz przeszukiwanie w głąb. 176

W trakcie działania algorytmu przeszukiwania możemy wyróżnić w zbiorze wierzchołków grafu dwa rozłączne podzbiory: wierzchołków już odwiedzonych i wierzchołków jeszcze nie odwiedzonych. 177

W przypadku drzewa ukorzenionego, narysowanego tak, że korzeń jest na górze granica pomiędzy tymi zbiorami przebiega poziomo dla przeszukiwania wszerz, natomiast pionowo dla przeszukiwania w głąb. 178

Przeszukiwanie wszerz 179

Przeszukiwanie w głąb 180

Algorytm przeszukiwania wszerz polega na kolejnym odwiedzaniu najpierw wierzchołków, których odległość od korzenia wynosi 1, następnie 2, potem 3 itd. Zatem zanim zagłębimy się bardziej w grafie sprawdzamy wcześniej wszystkie możliwe wierzchołki na danym poziomie. 181

Idea algorytmu przeszukiwania w głąb polega na odwiedzeniu jak największej liczby wierzchołków przesuwając się możliwie najdalej w głąb grafu, a dopiero później przejściu do pozostałych wierzchołków. 182

W trakcie przeszukiwania grafów za pomocą obu algorytmów budowane jest znakowane drzewo przeszukiwań. Rozpoczynając od korzenia nadajemy każdemu wierzchołkowi etykietę ze zbioru liniowo uporządkowanego, najczęściej ze zbioru {1, 2, 3,..., n} 183

Algorytm przeszukiwania grafu wszerz Zakładamy, że przeszukiwany graf jest reprezentowany przez listy sąsiedztwa. Przeszukiwanie zaczynamy od wierzchołków znajdujących się na liście sąsiedztwa korzenia przeszukujemy je kolejno dołączając do drzewa przeszukiwań kolejne wierzchołki z listy i łączące je z korzeniem krawędzie. 184

Następnie przechodzimy do listy sąsiedztwa wierzchołka, który był pierwszy na liście sąsiedztwa korzenia i kolejno przeszukujemy znajdujące się tam wierzchołki dołączając jednocześnie te wierzchołki do drzewa przeszukiwań. Analogicznie postępujemy z listami sąsiedztwa kolejnych wierzchołków znajdujących się na liście sąsiedztwa korzenia. 185

Po wyczerpaniu się wierzchołków na liście sąsiedztwa korzenia przechodzimy do przeszukiwania wierzchołków znajdujących się na listach sąsiedztwa wierzchołków, które znalazły się na listach sąsiedztwa wierzchołków z listy sąsiedztwa korzenia, itd. 186

Przykład Stosując algorytm przeszukiwania wszerz zbudować drzewo przeszukiwań poniższego grafu przyjmując, że korzeniem jest wierzchołek b. 187

188

{b} 189

{b,a} 190

{b,a,e} 191

{b,a,e,f} 192

{b,a,e,f,c} 193

{b,a,e,f,c,d} 194

{b,a,e,f,c,d,g} 195

{b,a,e,f,c,d,g,h} Listy puste - stop 196

Algorytm przeszukiwania grafów w głąb Podobnie jak w przypadku algorytmu przeszukiwania wszerz, do przeszukiwania w głąb wygodnie jest reprezentować graf za pomocą list sąsiedztwa. 197

Przeszukiwanie zaczynamy od korzenia, ale w przeciwieństwie do przeszukiwania wszerz, nie przeszukujemy kolejno wszystkich wierzchołków z listy sąsiedztwa korzenia, ale najpierw jeden z nich (pierwszy) a następnie pierwszy wierzchołek na liście sąsiedztwa tego wierzchołka. 198

Postępujemy tak do momentu, w którym nie możemy już wejść głębiej a dalsze przeszukiwanie wymaga cofnięcia się do poprzednio odwiedzonego wierzchołka i przeszukiwanie kolejnego wierzchołka na liście sąsiedztwa. 199

200

{b} 201

{b,a} 202

{b,a,c} 203

{b,a,c,g} 204

{b,a,c,g,h} 205

{b,a,c,g,h,d} 206

{b,a,c,g,h,d,e} 207

{b,a,c,g,h,d,e,f} Listy puste - stop 208

Najkrótsze drogi w grafie Wagę drogi nazywamy czasem długością tej drogi. Jednak nie zawsze waga musi oznaczać długość. Często waga krawędzi w grafie oznacza czas potrzebny na pokonanie jakiegoś odcinka drogi, czas wykonania jakiejś czynności, koszt wykonania tej czynności. Stąd waga drogi oznaczać może łączny czas potrzebny na przebycie tej drogi, łączny czas wykonania jakiejś czynności lub też całkowity koszt. 209

Problem: Znaleźć najkrótszą drogę w grafie ważonym, czyli drogę o najmniejszej wadze łączącej dane dwa wierzchołki. 210

Algorytm Dijkstry Polega na ustaleniu wierzchołka początkowego, przeglądaniu pozostałych wierzchołków i wybraniu wierzchołka, dla którego waga drogi od wierzchołka początkowego jest najmniejsza. Jednocześnie uaktualniane są najmniejsze wagi dróg od wierzchołka początkowego do innych wierzchołków. 211

Przykład Wyznaczyć drogę o najmniejszej wadze (najkrótszą drogę) łączącą wierzchołki A oraz D poniższego grafu z wagami używając algorytmu Dijkstry. 212

d(a)=0 213

krok 1 d(b)=min{d(b) ; d(a)+5}= min{ ; 5}=5 d(f)=min{d(f) ; d(a)+3}= min{ ; 3}=3 214

krok 2 d(c)=min{d(c) ; d(f)+7}= min{ ; 3+7}=10 d(i)=min{d(i) ; d(f)+5}= min{ ; 3+5}=8 d(k)=min{d(k) ; d(f)+3}= min{ ; 3+3}=6. 215

krok 3 d(e)=min{d(e) ; d(b)+2}= min{ ; 5+2}=7. d(g)=min{d(g) ; d(b)+6}= min{ ; 5+6}=11. 216

krok 4 d(g)=min{d(g) ; d(k)+4}= min{11 ; 6+4}=10 d(j)=min{d(j) ; d(k)+5}= min{ ; 6+5}=11 d(l)=min{d(l) ; d(k)+2}= min{ ; 6+2}=8 217

krok 5 d(i)=min{d(i) ; d(e)+1}= min{8 ; 7+1}=8 d(j)=min{d(j) ; d(e)+2}= min{11 ; 7+2}=9 218

krok 6 219

krok 7 d(g)=min{d(g) ; d(l)+8}= min{10 ; 8+8}=10 220

krok 8 221

krok 9 d(d)=min{d(d) ; d(g)+1}= min{ ; 10+1}=11 d(h)=min{d(h) ; d(g)+2}= min{ ; 10+2}=12 222

krok 10 d(d)=min{d(d) ; d(c)+2}= min{11 ; 10+2}=11 d(h)=min{d(h) ; d(g)+2}= min{12 ; 10+5}=12 223

krok 11 224

krok 12 225

W trakcie działania przedstawionego algorytmu każdemu wierzchołkowi przypisana została liczba oznaczająca najmniejszą spośród wag dróg łączących wierzchołek A z tym wierzchołkiem. 226

227

Nas interesuje najkrótsza (o najmniejszej wadze) droga łącząca wierzchołki A oraz D. W tabeli odczytujemy d(d)=11. Najkrótsza droga ma zatem wagę 11 i wystarczy ją teraz odczytać z naszej tabeli. 228

Widzimy kolejno, że: wierzchołkiem wierzchołek G, poprzedzającym wierzchołek D jest wierzchołkiem, który poprzedza G jest wierzchołek K, wierzchołkiem poprzedzającym K jest wierzchołek F, wierzchołkiem poprzedzającym F jest wierzchołek A, czyli wierzchołek początkowy. Ostatecznie drogą o najmniejszej wadze łączącą wierzchołki A oraz D jest droga przebiegająca kolejno przez wierzchołki A, F, K, G, D 229

Najkrótsza droga łącząca wierzchołki A oraz D 230

Algorytm Dijkstry daje nam wagi najkrótszych dróg łączących dany wierzchołek ze wszystkimi pozostałymi. Wykonując ten algorytm n*(n-1)/2 razy otrzymalibyśmy macierz (tablicę) odległości pomiędzy każdą parą wierzchołków. 231

Minimalne drzewa spinające Jak zauważyliśmy wcześniej każdy graf spójny posiada drzewo spinające. Z twierdzenia Cayley a wiemy też, że graf pełny wymiaru n posiada nn-2 drzew spinających. Wobec tego dowolny graf prosty wymiaru n posiada co najwyżej nn-2 drzew spinających. 232

W zagadnieniach, które można przedstawić za pomocą grafu z wagami istotne jest często znalezienie minimalnego drzewa spinającego, czyli drzewa o minimalnej wadze. Najbardziej znanymi algorytmami służącymi do rozwiązania tego problemu są: - algorytm Kruskala, oraz - algorytm Prima 233

Oba algorytmy są algorytmami zachłannymi, to znaczy takimi algorytmami, które w każdym kolejnym kroku wykonują tę operację, która wydaje się w danym momencie najkorzystniejsza. Algorytmy te polegają na wybieraniu krawędzi o najmniejszej wadze tak, aby nie utworzyć cyklu. 234

Algorytmy znajdowania minimalnego drzewa spinającego nie są jednoznaczne, gdyż minimalne drzewo spinające nie musi być dokładnie jedno. 235

Inaczej jest w grafach, których krawędzie mają różne wagi. Dla takich grafów można udowodnić następujące twierdzenie. Twierdzenie. W grafie spójnym ważonym, którego krawędziom przypisano różne wagi istnieje dokładnie jedno minimalne drzewo spinające. 236

Algorytm Kruskala Algorytm ten składa się z dwóch etapów. W pierwszym dokonujemy sortowania krawędzi według niemalejących wag, a w drugim dopiero wyznaczamy minimalne drzewo spinające. Zachłanność tego algorytmu polega na tym, że w każdym kolejnym kroku dodajemy do budowanego grafu krawędź o najmniejszej możliwej wadze. 237

Budowane minimalne drzewo spinające jest najpierw lasem ponieważ na początku działania algorytmu tworzymy las złożony z samych tylko wierzchołków grafu wyjściowego. Czasami taki las dopiero w końcowej fazie działania algorytmu staje się drzewem. 238

Teraz z posortowanego zbioru wszystkich krawędzi wybieramy krawędź o najmniejszej wadze. Jeśli jest ich kilka, to wybieramy dowolną. Dołączamy tę krawędź do budowanego drzewa. Następnie, spośród pozostałych krawędzi grafu wybieramy krawędź o najmniejszej wadze i również ją dołączamy. 239

Przy wyborze trzeciej i następnych krawędzi poza najmniejszą wagą musimy zwracać uwagę na fakt, czy wybrana krawędź nie spowoduje utworzenia cyklu. Krawędź o najmniejszej wadze, której dołączenie do grafu nie spowoduje utworzenia w nim cyklu nazywać będziemy krawędzią bezpieczną. 240

Krawędzi bezpiecznych może być w danym momencie działania algorytmu wiele i zbiór tych krawędzi zmienia się w trakcie działania algorytmu. Powyższe postępowanie kontynuujemy do momentu, gdy w posortowanym zbiorze krawędzi nie będzie już krawędzi bezpiecznych. 241

Przykład Znaleść drzewo spinające grafu spójnego stosując algorytm Kruskala. 242

Na początku porządkujemy krawędzie grafu według niemalejących wag. AC AB CD CE AE DE CG EG EF FG DF BF 1 2 2 2 3 3 4 4 5 5 6 7 243

Oznaczmy budowane minimalne drzewo spinające przez T. Oczywiście na początku działania algorytmu T jest grafem pustym lasem złożonym z 12. drzew. 244

Działanie algorytmu rozpoczynamy od dołączenia do zbioru T krawędzi o najmniejszej wadze, czyli krawędzi AC. Krok 1. Zbiór T={AC} 245

Krok 2. Zbiór T={AC, CD} 246

Krok 3. Zbiór T={AC, CD, CE}. 247

Krok 4. Zbiór T={AC, CD, CE, AB}. 248

Krok 5. Zbiór T={AC, CD, CE, AB, CG}. 249

Krok 6. Zbiór T={AC, CD, CE, AB, CG, EF}. 250

Algorytm Prima W odróżnieniu od algorytmu Kruskala algorytm Prima nie wymaga sortowania krawędzi według wag. Konieczne jest tylko arbitralne wybranie wierzchołka startowego. 251

Zwykle wybieramy wierzchołek najbardziej wysunięty na lewo i dołączając kolejne krawędzie przechodzimy na prawo przez kolejne wierzchołki. Wierzchołek ten jest zaczynem budowanego minimalnego drzewa spinającego. 252

Działanie algorytmu polega na kolejnym dołączaniu do budowanego drzewa jednej z bezpiecznych krawędzi, to znaczy takich, które sąsiadują z wierzchołkami aktualnego drzewa i nie tworzą cyklu. W odróżnieniu od algorytmu Kruskala, w trakcie działania algorytmu Prima konstruowane drzewo nigdy nie jest lasem. 253

Spośród bezpiecznych krawędzi sąsiadujących z wierzchołkami dołączonymi już do drzewa, dołączamy do niego krawędź o najmniejszej wadze. Działanie algorytmu kończymy, gdy zbiór bezpiecznych krawędzi jest pusty. 254

Może to oznaczać, że: 1) otrzymane drzewo zawiera wszystkie wierzchołki grafu wyjściowego i jest minimalnym drzewem spinającym naszego grafu, lub 2) otrzymane drzewo nie zawiera wszystkich wierzchołków grafu wyjściowego, co oznacza, że graf nie jest spójny, a otrzymane drzewo jest minimalnym drzewem spinającym jednej ze składowych spójnych grafu wyjściowego. 255

Uwaga: Algorytm Prima można zmodyfikować tak, aby działał również dla grafów, które nie są spójne a jego działanie dawało w wyniku minimalny las spinający grafu. 256

Przykład Znajdziemy drzewo spinające grafu spójnego stosując algorytm Prima. 257

258

259

260

261

262

263

264

265

Problem kolorowania map pojawił się w roku 1852, gdy niejaki Francis Guthrie próbował pokolorować mapę przedstawiającą hrabstwa w Anglii. Zadał on sobie pytanie: Jaka jest najmniejsza liczba barw wystarczająca do pokolorowania mapy przedstawiającej wiele hrabstw tak, aby żadne dwa hrabstwa mające wspólną granicę nie były oznaczone tą samą barwą? 266

Hipoteza postawiona przez Guthrie wystarczą cztery kolory trafiła do de Morgana (tego od praw de Morgana, a następnie do Cayley a (1878). 267

Pierwszy pełny i poprawny dowód pojawił się dopiero w roku 1977 (Appel i Haken), czyli 125 lat od postawienia problemu i sformułowania hipotezy! 268

Przykład mapy, której nie da się pokolorować za pomocą trzech barw 269

Definicja Grafem silnie spójnym nazywamy digraf (graf skierowany), w którym dla każdej pary wierzchołków istnieje łącząca je droga. Wniosek Każdy graf spójny (nieskierowany) jest silnie spójny. 270

Przykład grafu silnie spójnego 271

Definicja Silnie spójną składową digrafu nazywamy największy silnie spójny podgraf tego digrafu. 272

Graf i jego silnie spójne składowe 273

Rozważmy teraz relację ℜ określoną w zbiorze wierzchołków digrafu w następujący sposób: wierzchołek X w relacji z wierzchołkiem Y, gdy istnieje droga łącząca X z Y oraz droga łącząca Y z X. 274

Tak określona relacja jest relacja równoważności, tzn. jest zwrotna, symetryczna i przechodnia. Można udowodnić, że klasy abstrakcji tak określonej relacji ℜ są zbiorami wierzchołków silnie spójnych składowych digrafu. 275

Definicja Zbiór tych krawędzi grafu, których usunięcie spowoduje zwiększenie liczby składowych spójnych nazywamy zbiorem rozspajającym grafu G. Przykładem zbioru rozspajającego grafu jest każdy most. 276

Definicja Rozcięciem grafu nazywamy każdy zbiór rozspajający, którego żaden podzbiór właściwy nie jest zbiorem rozspajającym. 277

Przykłady rozcięć {a}, {b,c}, {c,d,e}, {e,f,g}, {c,d,f,g} 278

Definicja Spójnością krawędziową grafu spójnego G nazywamy liczbę λ(g) równą liczności najmniej licznego rozcięcia grafu G. 279

Twierdzenie Spójność krawędziowa grafu spójnego G nie może przekroczyć stopnia wierzchołka o najmniejszym stopniu w grafie. 280

Definicja Graf G nazywamy k-spójnym krawędziowo, jeżeli λ(g) k 281

Graf 2-spójny krawędziowo Graf 1-spójny krawędziowo 282

Definicja Zbiorem rozdzielającym grafu spójnego G nazywamy zbiór wierzchołków tego grafu, których usunięcie wraz z krawędziami z nimi incydentnymi powoduje, że graf przestaje być spójny. Zbiór rozdzielający składający się z jednego tylko wierzchołka nazywamy wierzchołkiem rozcinającym. 283

Graf i jego zbiór rozdzielający (wierzchołki x i y). Kolorem szarym zaznaczone są krawędzie incydentne z wierzchołkami zbioru rozdzielającymi. 284

Graf i jego wierzchołek rozcinający (x). Kolorem szarym zaznaczone są krawędzie incydentne z wierzchołkami rozdzielającym. 285

Definicja Spójnością wierzchołkową grafu spójnego G, który nie jest pełny, nazywamy liczbę κ (G) równą liczności najmniej licznego rozcięcia grafu G. 286

Definicja Graf nazywamy k-spójnym wierzchołkowo, gdy κ(g) k Twierdzenie W dowolnym grafie spójnym κ(g) λ(g). 287

Twierdzenie Maksymalna spójność wierzchołkowa w grafie wymiaru n, posiadającym m krawędzi jest równa całkowitej części liczby 2m n 288

Dowód: Niech oznacza spójność krawędziową grafu G. Istnieje zatem zbiór rozspajający S posiadający krawędzi. Niech S dzieli wierzchołki grafu na podzbiory V1 oraz V2. Przez usunięcie co najwyżej wierzchołków z V1 (lub V2), do których krawędzie ze zbioru rozspajającego są incydentne usuniemy cały zbiór S. c.n.u. 289

Wniosek W dowolnym spójnym grafie wymiaru n, posiadającym m krawędzi prawdziwa jest nierówność λ(g) κ λ (G) (G) 2m n 290

Definicja Graf nazywamy k-spójnym, jeżeli jego spójność wierzchołkowa wynosi k. 291

Twierdzenie Graf spójny jest k-spójny wtedy i tylko wtedy, gdy każda para jego wierzchołków jest połączona przez k lub więcej wzajemnie nie przecinających się dróg, a co najmniej jedna para wierzchołków jest połączona przez dokładnie k takich dróg. 292

Definicja Dwie drogi w grafie nazywamy rozłącznymi krawędziowo, jeżeli nie mają wspólnych krawędzi, choć mogą się przecinać. 293

Twierdzenie Spójność krawędziowa grafu wynosi k wtedy i tylko wtedy, gdy każda para wierzchołków w tym grafie połączona jest przez k lub więcej dróg rozłącznych krawędziowo, a co najmniej jedna para wierzchołków jest połączona przez dokładnie k takich dróg. 294

Definicja Pokolorowaniem (właściwym) obszarów wyznaczonych przez graf nazywamy takie przyporządkowanie obszarom kolorów, aby żadne dwa sąsiednie obszary nie miały tej samej barwy. 295

Definicja Mapą nazywamy każdy 3-spójny graf planarny. Twierdzenie (o czterech barwach) Każdą mapę można pokolorować właściwie używając co najwyżej czterech kolorów. 296

Przykład 297

Twierdzenie Mapę można pokolorować dwoma kolorami wtedy i tylko wtedy, gdy istnieje w niej cykl Eulera. 298

Przykład 299

Kolorowanie grafu to także kolorowanie wierzchołków i krawędzi. Istnieje szeroka gama zastosowań zarówno kolorowania wierzchołków jak i krawędzi: teoria kodowania podział logiki w komputerach logistyce problem ułożenia planu lekcji w szkole 300

Definicja Graf prosty nazwiemy k-kolorowalnym, gdy istnieje funkcja przyporządkowująca każdemu wierzchołkowi jeden z k kolorów tak, aby każdym dwóm sąsiadującym wierzchołkom przyporządkowane były różne kolory. 301

Uwaga: Zajmując się kolorowaniem grafu rozpatrujemy tylko grafy spójne, gdyż w przypadku grafu, który nie jest spójny kolory użyte do pokolorowania jednej składowej spójnej nie mają wpływu na kolory, których użyjemy do pokolorowania innej składowej. Oczywiście, liczba kolorów potrzebna do pokolorowania całego grafu jest równa maksimum spośród liczb kolorów użytych do pokolorowania jego składowych spójnych. 302

Definicja Liczbą chromatyczną grafu nazywamy k, jeżeli graf jest k-kolorowalny i jednocześnie nie jest (k-1)-kolorowalny. Liczbę chromatyczna grafu G oznaczamy χ(g). 303

Przykład Liczba chromatyczna poniższego grafu wynosi 3. 304

Przykład Liczba chromatyczna poniższego grafu wynosi 4. 305

Twierdzenie Liczba chromatyczna grafu pełnego wymiaru n jest równa n, zaś grafu pustego jest równa 1. 306

Twierdzenie Graf wymiaru składający się z jednego tylko cyklu ma liczbę chromatyczną 2, gdy n jest liczbą parzysta, 3, gdy n jest liczą nieparzystą. 307

Twierdzenie Liczba chromatyczna drzewa składającego się z co najmniej dwóch wierzchołków jest równa 2. 308

Twierdzenie Liczba chromatyczna dowolnego grafu prostego o m krawędziach spełnia nierówność 1 χ (G) + 2 1 2m + 4 309

Przykład Kolorowanie wierzchołków grafu 310

Przykład (zastosowanie do układania planu zajęć 1) Mamy 3 przedmioty obowiązkowe a, b, c oraz 4 przedmioty do wyboru:d, e, f, g Chcemy ułożyć plan tak, aby w tym samym czasie nie odbywały się przedmioty, na które powinien chodzić student 311

Przykład (zastosowanie do układania planu zajęć 1) Rysujemy graf, w którym wierzchołki oznaczają przedmioty, a krawędzie łączą wierzchołki odpowiadające przedmiotom, które nie mogą się odbywać w tym samym czasie 312

Przykład (zastosowanie do układania planu zajęć 1) Liczba chromatyczna narysowanego grafu jest równa liczbie różnych terminów zajęć jest koniecznych, aby zajęcie się nie pokrywały. χ (G ) = 4 313

Przykład (zastosowanie do układania planu zajęć 2) Mamy 3 przedmioty obowiązkowe a, b, c oraz 4 przedmioty do wyboru:d, e, f, g, przy czym każdy student musi wybrać jeden z przedmiotów d lub e oraz jeden z przedmiotów f lub g. Chcemy ułożyć plan tak, aby w tym samym czasie nie odbywały się przedmioty, na które powinien chodzić student 314

Przykład (zastosowanie do układania planu zajęć 2) Rysujemy graf, w którym wierzchołki oznaczają przedmioty, a krawędzie łączą wierzchołki odpowiadające przedmiotom, które nie mogą się odbywać w tym samym czasie 315

Przykład (zastosowanie do układania planu zajęć 2) Liczba chromatyczna narysowanego grafu jest równa liczbie różnych terminów zajęć jest koniecznych, aby zajęcie się nie pokrywały. χ (G ) = 5 316

Przykład (rozsadzenie gości na przyjęciu 1) Na przyjęcie przyjdzie ośmioro gości: Anna, Ewa, Maria, Zofia, Jan, Marcin, Tomek i Stefan. Wiemy, że : Ewa nie lubi się ze Stefanem, Zofia z Marią i Tomkiem, Maria z Janem, Jan z Marcinem, a Marcin ze Stefanem. Ile trzeba przygotować stolików, aby nielubiące się osoby nie siedziały przy tym samym stoliku? 317

Przykład (rozsadzenie gości na przyjęciu 1) Rysujemy graf, w którym wierzchołki oznaczają gości, a krawędzie łączą wierzchołki odpowiadające osobom, które się nie lubią. 318

Przykład (rozsadzenie gości na przyjęciu 1) Liczba chromatyczna narysowanego grafu jest równa liczbie potrzebnych stolików. χ (G ) = 2 319

Przykład (rozsadzenie gości na przyjęciu 1) 320

Przykład (rozsadzenie gości na przyjęciu 2) Na przyjęcie przyjdzie ośmioro gości: Anna, Ewa, Maria, Zofia, Jan, Marcin, Tomek i Stefan. Wiemy, że : Ewa nie lubi się ze Stefanem i z Marcinem, Zofia z Marią i Tomkiem, Maria z Janem, Jan z Marcinem, a Marcin ze Stefanem. Ile trzeba przygotować stolików, aby nielubiące się osoby nie siedziały przy tym samym stoliku? 321

Przykład (rozsadzenie gości na przyjęciu 2) Rysujemy graf, w którym wierzchołki oznaczają gości, a krawędzie łączą wierzchołki odpowiadające osobom, które się nie lubią. 322

Przykład (rozsadzenie gości na przyjęciu 2) Liczba chromatyczna narysowanego grafu jest równa liczbie potrzebnych stolików. χ (G ) = 3 323

Przykład (rozsadzenie gości na przyjęciu 2) 324

Definicja Graf nazywamy k-kolorowalnym krawędziowo, jeśli można pokolorować jego krawędzie k kolorami tak, aby żadne dwie sąsiednie krawędzie nie miały tego samego koloru. 325

Definicja Indeksem chromatycznym grafu nazywamy liczbę k, jeżeli graf jest k-kolorowalny krawędziowo i jednocześnie nie jest (k-1)-kolorowalny krawędziowo. Indeks chromatyczny grafu G oznaczamy χ (G). 326

Przykład Indeks chromatyczny grafu z rysunku jest równy 3. 327

Twierdzenie Vizinga (1964). Indeks chromatyczny χ (G) grafu G, w którym najwyższy stopień wierzchołka wynosi p, spełnia nierówność p χ (G) p + 1 328

Drogą Hamiltona nazywamy drogę, który przechodzi przez każdy wierzchołek grafu dokładnie jeden raz Cyklem Hamiltona nazywamy cykl, który przechodzi przez każdy wierzchołek grafu dokładnie jeden raz 329

Grafem półhamiltonowskim nazywamy graf, w którym istnieje droga przechodząca przez każdy wierzchołek grafu. Grafem hamiltonowskim nazywamy graf, w którym istnieje cykl Hamiltona. 330

Twierdzenie (Ore, 1960) Jeżeli graf prosty ma n wierzchołków, n 3 oraz deg( X i ) + deg( X j ) n dla każdej pary wierzchołków niesąsiednich, to jest hamiltonowski. 331

Twierdzenie (Dirac, 19552) Jeżeli graf prosty ma n, wierzchołków oraz n 3 n deg( X i ) 2 dla każdego wierzchołka, to jest hamiltonowski. 332

Twierdzenie Jeżeli graf prosty ma n wierzchołków, oraz co najmniej n 3 1 (n 1)(n 2) + 2 2 krawędzi, to jest hamiltonowski. 333

Kod Graya Kodem Graya długości n nazywamy ciąg wszystkich różnych ciągów n-wyrazowych, których wyrazami są liczby 0 lub 1 i które różnią się od siebie dokładnie jedną cyfrą. Ciągów takich jest 2 n 334

Jeśli każdemu z ciągów Graya długości n, przypiszemy wierzchołki pewnego grafu n wymiaru 2 i połączymy krawędzią te ciągi, które różnią się od siebie dokładnie jedna cyfrą, to otrzymamy cykl Hamiltona. 335

Twierdzenie Jeżeli w grafie prostym najwyższy stopień wierzchołka wynosi n, to graf ten jest n+1 kolorowalny wierzchołkowo. 336

Grafem dwudzielnym nazywamy graf (G,X), w którym zbiór wierzchołków X można podzielić na dwa rozłączne i niepuste podzbiory X1 oraz X2 tak, że każda krawędź w grafie łączy wierzchołek z jednego podzbioru z wierzchołkiem drugiego podzbioru. 337

Grafy dwudzielne 338

Grafy dwudzielne 339

Przykład Grafe dwudzielnym jest graf kodu Graya (dzielimy zbiór wierzchołków na dwa podzbiory, w których wierzchołki mają parzystą bądź nieparzystą liczbę jedynek. 340

Graf dwudzielny nazywamy pełnym grafem dwudzielnym, jeśli każdy wierzchołek zbioru X1 jest połączony dokładnie jedną krawędzią z każdym wierzchołkiem zbioru X2. 341

Grafy pełne dwudzielne 342

Dla dowolnych liczb naturalnych m i n wszystkie pełne grafy dwudzielne takie, że X1 =m oraz X2 =n są izomorficzne. Grafy takie oznaczamy Km,n Łatwo zauważyć, że grafy Km,n oraz Kn,m są izomorficzne. 343

Twierdzenie Jeżeli graf dwudzielny jest hamiltonowski, to liczba wierzchołków jednego podzbioru jest równa liczbie wierzchołków drugiego podzbioru. Jeżeli graf jest półhamiltonowski, to liczby te różnią się co najwyżej o jeden. 344

Uwaga: Dla pełnych grafów dwudzielnych wymiaru co najmniej 3, prawdziwe jest również twierdzenie odwrotne. 345

Def. Listą nazywamy uporządkowany ciąg elementów Przykładem listy jest tablica jednowymiarowa 346

Często wygodniej jest posługiwać się listą bez konieczności odwoływania się do indeksów. Przykładami takich list są kolejki i stosy. 347

Def. Kolejką nazywamy listę z trzema operacjami na jej elementach: 2. dodawania nowego elementu, 3. zdejmowania pierwszego elementu, 4. sprawdzania, czy kolejka jest pusta (FIFO first in first out) 348

Def. Stosem nazywamy listę z trzema operacjami na jej elementach: 2. dodawania nowego elementu na wierzch stosu, 3. zdejmowania elementu z wierzchu stosu, 4. sprawdzania, czy stos jest pusty (LIFO last in first out) 349

Implementacja kolejki Tworzymy tablicę KOLEJKA[0..max] oraz dwie zmienne PoczątekKolejki i KoniecKolejki. Zmienna PoczątekKolejki wskazuje pierwszy element kolejki, zaś zmienna KoniecKolejki wskazuje pierwsze wolne miejsce poza kolejką. 350

Kolejka jest pusta, jeżeli KoniecKolejki=PoczątekKolejki Operacje włożenia nowego elementu x do kolejki implementujemy za pomocą instrukcji: KOLEJKA[KoniecKolejki]:=x KoniecKolejki:=KoniecKolejki+1 351

Operacje zdjęcia elementu z KOLEJKI implementujemy za pomocą instrukcji: x:=kolejka[początekkolejki]; PoczątekKolejki:=PoczątekKolejki+1 Operacja zdejmowania elementu z kolejki może być wykonana tylko wtedy gdy KoniecKolejki PoczątekKolejki 352

Implementacja stosu Tworzymy tablicę STOS[0..max] oraz zmienną WierzchStosu Zmienna WierzchStosu wskazuje na pierwsze wolne miejsce w tablicy STOS 353

Operacje włożenia nowego elementu x na STOS implementujemy za pomocą instrukcji: STOS[WierzchStosu]:=x WierzchStosu:= WierzchStosu+1 Jeżeli wartość zmiennej WierzchStosu=max+1 to stos jest pełny i nie można na niego wkładać nowych elementów 354

Operacje zdjęcia elementu z wierzchu STOSU implementujemy za pomocą instrukcji: WierzchStosu:= WierzchStosu-1 x:=stos[wierzchstosu] Operację tę można wykonać, jeżeli stos nie jest pusty, czyli, gdy zmienna WierzchStosu>0 355

Algorytm znajdowania drogi Hamiltona Poniższy algorytm jest algorytmem z nawrotami z zastosowaniem stosu jako struktury danych. 356

Dane wejściowe: 2. Graf (X,G), w którym X oznacza zbiór wierzchołków, a G zbiór krawędzi, 3. Wierzchołek początkowy x X Dane wyjściowe: Droga Hamiltona zaczynająca się od wierzchołka x lub informacja o jej braku 357

Włóż x na stos Dopóki stos nie jest pusty, powtarzaj: * niech y będzie wierzchołkiem na wierzchu stosu * szukamy wierzchołka w o najniższym numerze, takiego, że - w jest połączone z y, - w nie wystepuje na stosie, - jeżeli w poprzedniej iteracji zdjęto ze stosu wierzchołek z, to numer w powinien być większy od numeru z 358

Jeżeli takie w znajdziemy, to wkładamy w na stos, jeżeli wierzchołki na stosie tworzą już drogę Hamiltona, to koniec algorytmu znaleziono drogę Hamiltona Jeżeli takiego w nie znajdziemy, to zdejmujemy y ze stosu Jeżeli stos jest pusty i nie znaleziono drogi Hamiltona, to w grafie nie ma drogi Hamiltona. 359

Przykład Sprawdzić, czy w podanym grafie istnieje droga Hamiltona rozpoczynająca się w wierzchołku a 360

361

362

363

364

365

366

367

368

369

370

371

372

373

Stos pusty nie znaleziono drogi Hamiltona 374

Przykład Sprawdzić, czy w podanym grafie istnieje droga Hamiltona rozpoczynająca się w wierzchołku a 375

376

377

378

Przykład Sprawdzić, czy w podanym grafie istnieje droga Hamiltona rozpoczynająca się w wierzchołku a 379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

Stos pełny znaleziono drogę Hamiltona 396

Notacja asymptotyczna Do szacowania złożoności czasowej algorytmów, czyli szacowania czasu pracy algorytmów używa się notacji asymptotycznej Pozwala nam to podzielić problemy na: łatwo rozwiązywalne trudno rozwiązywalne 397

Notacja asymptotyczna Niech f i g będą dwiema funkcjami określonymi na zbiorze liczb naturalnych o wartościach w zbiorze liczb rzeczywistych dodatnich f, g : N { x R : x > 0} 398

Notacja asymptotyczna Mówimy, że funkcja g jest o duże od f, gdy istnieje dodatnia taka stała c oraz taka liczba naturalna N0, że dla dowolnego n> N0 zachodzi nierówność g ( n) c f ( n) Zapisujemy ten fakt g (n) = O ( f (n)) 399

Notacja asymptotyczna Przykład 2 n 4 + 5n 3 = O ( n 4 ) gdyż dla dowolnego n 2n + 5n 3 2n + 5n = 7 n 4 4 4 4 400

Notacja asymptotyczna Mówimy, że funkcja g jest o małe od f, gdy g ( n) lim = 0 n + f ( n) Zapisujemy ten fakt g (n) = o( f (n)) 401

Notacja asymptotyczna Przykład 2n 4 + 5n 3 = o(n 5 ) gdyż 2n 4 + 5n 3 lim = 0 5 n + n 402

Notacja asymptotyczna Mówimy, że funkcja g jest omega duże od f, gdy istnieje dodatnia taka stała c oraz taka liczba naturalna N0, że dla dowolnego n> N0 zachodzi nierówność g ( n) c f ( n) Zapisujemy ten fakt g (n) = Ω ( f (n)) 403

Notacja asymptotyczna... 3 n log 2 n < m n n n 2 n 3... n dla dostatecznie dużych n 2 n < n!< n n dla n 4 404

Notacja asymptotyczna Twierdzenie Każda z poniższych funkcji jest O od wszystkich funkcji na prawo od niej: 1, log 2 n,..., n, n, n, n log 2 n, n n, n, n...2, n!, n 2 3 3 n 405 n