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