Rozdzial 09 - Grafy (nieskierowane)
Pełen tekst
(2)
(3) Rozdział 1. Grafy (nieskierowane)
(4) !"# $&'% #)( +,- .# mówimy, z˙e ł¸aczy wierzchołki i , a o wierzchołkach i , O kraw¸edzi * 01 , jest to liczba z˙ e s¸a ko´ncami kraw¸edzi * . Stopie´n wierzchołka , oznaczany przez / kraw¸edzi wychodz¸acych z .. Definicja 1.1 Graf (nieskierowany) jest to para składaj¸aca si¸e ze sko´nczonego zbioru wierzchołków oraz ze zbioru kraw¸edzi , gdzie kraw¸edzie to pary wierzchołków.. Graf cz¸esto przedstawiamy na rysunku jako zbiór punktów (lub kółek) poł¸aczonych odcinkami (lub łukami).. 2. Rysunek 1.1: Przykład grafu. 3. 4. / *. 5. 6. 87&9:7
(5) ;7 ze zbiorem wierzchołków 7 < 2 3 4 / * 5 6 7 = 2 3 > ? 2 / > ? 2 * ) @ 2 6 ? 3 4 > ? 4 6 > ? 4 5 > @ / 5 ) @ * 5 ) @ 5 6 A . 3. Przykład 1.2 Rysunek 1.1 przedstawia graf i zbiorem kraw¸edzi.
(6) 4. Rozdział 1. Grafy (nieskierowane). 2 i 5 wynosi 4, wierzchołki 4 i 6 s¸a stopnia 3, wierzchołki 3 , / i * . , b¸edzie dowolnym grafem z kraw¸edziami. Wtedy Lemat 1.3 Niech / ( Dowód: Je˙zeli policzymy wszystkie kraw¸edzie wychodz¸ ace ze wierzchołków , a z drugiej wszystkich A poniewa˙ grafu, to z jednej strony mamy sum¸ e / jest liczona dwa razy, raz jak liczymy kraw¸edzie wychodz¸acez ka˙z z dai kraw¸edz * drugi raz jak liczymy kraw¸edzie wychodz¸ace z . Wniosek 1.4 Liczba wierzchołków o nieparzystych stopniach jest parzysta. . nazywamy podgrafem grafu . , je˙zeli Graf. . oraz . Przykład 1.5 Grafy 1.5 i 1.6 s¸a podgrafami ; przedstawione
(7) z rysukuna1.5rysunkach <grafu 3 4 z rysun * 6 2 ku 1.1 . Graf zawiera sze´ s c ´ wierzchołków /. ; < > . ) @. . ) @. . 2 * 34 46 . i trzy kraw¸edzie > .. ; 2 3 4 / * 5 6 Graf z rysuku 1.6 zawiera siedem wierzchołków. . > ?. . > ?. . ) @. . ) @. . ?. . 2 3 2 / 2 * 2 6 34 / 5 . i pi¸ec´ kraw¸edzi Stopie´n wierzchołkw´ stopnia 2.. . . . . . . . .
(8). . . . . . . . Graf pełny o wierzchołkach, oznaczany przez , jest to graf z wierzchołkami, w którym ka˙zde dwa wierzchołki poł¸aczone s¸a kraw¸edzi¸a. . Rysunek 1.2: a) Graf pełny . b) Graf pełny dwudzielny a. b. c. d. e. f a). a. b. c. d. e. f b). +
(9) :7 & :7 * 7 7 >7 (?((? 7 (?(?( 7 A8 . Graf jest dwudzielny, je˙zeli zbiór jego wierzchołków mo˙zna rozbi´c na ! #" dwie cz¸es´ci , , tak, z˙ e ka˙zda kraw¸ed´z ma kon´ ce w $ ma zbiór wierzchołków rozbity na obu zbiorach i . Pełny graf dwudzielny &% '% $ dwa podzbiory: i , a kraw¸edzie ł¸acz¸a ka˙zdy )( *%,+ .-/102/ -/ wierzchołek z z ka˙ z dym wierzchołkiem z , czyli 3 / .. .
(10) 1.1. Izomorfizm grafów. 1.1 Izomorfizm grafów. . 0 . 5.
(11) . . Izomorfizmem grafu na graf
(12) nazywamy funkcj¸e wza jemnie jednoznaczn¸a spełniaj¸ a c¸ a warunek: wtedy i tylko. wtedy, gdy . Je˙zeli taka funkcja istnieje, to mówimy, z˙ e grafy i
(13) s¸a izomorficzne. Łatwo sprawdzi´c, z˙ e izomorfizm grafów jest relacj¸a równowa˙zno´sci.. ) . ze zbiorem < 2 3 4 / = 2 3 > ? 2 4 > @ 2 / > @ 3 4 . > .
(14) , z rysunku 1.4a jest izomorficzny z grafem . Izomorfizmem z . Graf okre´slona nast¸epuj¸aco: 2 4 , 3 3 , 4 ; 2 , na jest funkcja / /. i . Graf zawiera Graf z rysunku 1.4b nie jest izomorficzny z grafami wierzchołek / stopnia jeden, a w grafie takiego wierzchołka nie ma. Przykład 1.6 Rysunki 1.3a i 1.3b przedstawiaj¸a ten sam graf wierzchołków oraz zbiorem kraw¸edzi. . . Rysunek 1.3: Rysunki a) i b) przedstawiaj¸a ten sam graf a. c. b. a. d. b. d. c. a). Rysunek 1.4: a) Graf. . b). izomorficzny z. . b) Graf. nieizomorficzny z. a. b. a. b. c. d. c. d. a). . b). . na graf
(15) , to mo˙zemy
(16). Je˙zeli mamy izomorfizm grafu powiedzie´c, z˙ e
(17) jest takim samym grafem co chołków. Twierdzenie 1.7 Je˙zeli grafy. . . tylko ze zmienionymi nazwami wierz-. = . i = . s¸a izomorficzne, to:
(18). . .
(19) 6. Rozdział 1. Grafy (nieskierowane). (a). i
(20). (b). i
(21). 8 , 8 , maj¸a tyle samo kraw¸edzi, . maj¸a tyle samo wierzchołków,. . (c) Dla ka˙zdego ,. i
(22). maj¸a tyle samo wierzchołków stopnia .. Dowód: (a) wynika bezpo´srednio z definicji. (b) Niech b¸edzie izomorfizmem z na . Ale okre´sla tak˙ze wzajemn¸a jednoznaczno´sc´ pomi¸edzy zbiorem kraw¸edzi . (c) Udowodnimy, z˙ e je˙zeli jest stopnia , to i jest stopnia . Wi¸ec odwzorowuje wierzchołki stopnia na wierzchołki stopnia . Niech , ... , b¸ed¸ poł¸aczonymi kraw¸edziami z a wszystkimi wierzchołkami z. . Wtedy , ... , s¸a wszystkimi wierzchołkami z poł¸aczonymi kraw¸edziami. . z. . < :@ 01 01 & "& 07 )7@ . 01. 1.2 Drogi i cykle. > . 7 (?(?( 7 , 7 ) ?(?((? . 7 .>7 ?((?( 7 (?(?(? 3 Przykład 1.8 W grafie z rysunku 1.1 ci¸ag * , 2 , / , 2 , , 4 , 6 jest drog¸a, a ci¸ag 2 , * , 5 , / , 2. 3 4 6 2 jest drog¸a zamkni¸et¸a, ale nie jest cyklem. jest cyklem. Ci¸ag 2 * 5 / 2 " istnieje s´cie˙zka Graf jest spójny, je˙zeli dla ka˙zdych dwóch wierzchołków , ł¸acz¸aca i . Składowa spójno´sci to maksymalny spójny podgraf Zauwa˙zmy, z˙= e w i s¸agrafu. zbiorze wierzchołków grafu istnieje relacja osi¸ a galno´ s ci: w relacji je˙ z eli lub jest osi¸agalny z . Relacja ta jest relacj¸a równowa˙zno´sci i dzieli zbiór wierzchołków 7 .
(23) . Droga lub s´cie˙zka w grafie jest to ci¸ ag wierzchołków , taki, z˙ e ( dla ka˙zdego 0 - / 0/ )( ( )( , wierzchołki , s¸ a poł¸ a czone kraw¸ e dzi¸ a , czyli .O drodze mówimy, z ˙ e ł¸ a czy wierzchołki i . Mówimy tak˙ z e, z ˙ e wierzcho łek jest osi¸agalny z wierzchołka . Droga jest zamkni¸eta je˙zeli . Droga jest prosta, je˙zeli wszystkie wyst¸ e puj¸ a ce w niej wierzchołki s¸ a ró˙ z ne. Drog¸ e nazywamy cyklem je˙zeli ,
(24) oraz wszystkie wierzchołki s¸a ró˙zne.. grafu na składowe spójno´sci. Przykład 1.9 Graf z rysunku 1.1 jest spójny, zawiera jedn¸a składow¸a spójno´sci (cały graf). Graf z rysunku 1.5 nie jest spójny i zawiera trzy składowe spójno´sci:. 7 ze zbiorem wierzchołków 2 * i jedn¸a kraw¸edzi¸a 2 * 3 4 6 i dwoma kraw¸edziami 3 4 i 4 6 , ze zbiorem wierzchołków z jednym wierzchołkiem / i bez kraw¸edzi. % , to istnieje te˙z droga Lemat 1.10 Je˙ zeli istnieje droga ł¸acz¸aca wierzchołki i , prosta ł¸acz¸aca i .
(25). .
(26).
(27). .
(28) 1.3. Drzewa. 7. Rysunek 1.5: Graf z trzema składowymi spójno´sci. 2. 3. 4. / * 6 < ) 7 ?((?(? . , b¸edzie najkrótsz¸a drog¸e ł¸acz¸ac¸a i . Droga Dowód: Niech ; mieliby´smy wtedy ta jest prosta. Przypu´ bowiem, z˙(?e(@ . ' , dla jakiego´ s 7 sc(?´ my ? ( ( . . ?. ( , ł¸acz¸ac¸a i , wbrew zało˙zeniu. krótsz¸a drog¸e Dowolne dwa wierzchołki mog¸a by´c poł¸aczone dwoma drogami prostymi. 3 4 6 2 wnacyklu 3 4 oraz 2 Na przykład w cyklu rysunku 1.1, wierzchołki 2 i 4 ł¸aczy droga 2. 2 4 droga 6 . Tak, wi¸ec, je˙zeli w grafie s¸a cykle, to istniej¸a pary wierzchołkow, które s¸a poł¸aczone dwoma drogami prostymi. Ale i na odwrót. % które mo˙zna poł¸aczy´c Lemat 1.11 Je˙zeli w grafie istniej¸a dwa wierzchołki i , dwoma ró˙znymi drogami prostymi, to w grafie istnieje cykl. + >7A ?((?(@ . + , 7A ?((?(@ !+ , b¸ed¸a dwoma ro˙zDowód: Niech >7 % 7 (w przeciwnymi prostymi drogami ł¸acz¸acymi i . Mo˙zemy zało˙zy´c, z˙ e b¸edzie pierwnym przypadku mo˙zemy Niech 7 usun¸ac´ wspólny pocz¸atek obudróg).. . ? ( ? ( (. szym wierzchołkiem po , i niech 7 ?. ( ? ( ( . 7 , który wyst¸epuje w drodze > 7 ?((?( ) ?((?(@ . . Wierzchołki wyst¸epuj¸a w drodze i droga 7 (?(?(? 7 nie tworzy cykl (w drodze tej wyst¸ e puj¸ a conajmniej trzy ró˙zne 7 7 wierzchołki , oraz ). ( +. )(. +. 0. 3. %. '%. *%. %. (. % + '% +. '%. %. % *%. *%. *%. %. '%. $. '%. $. (. )(. (. %,+. Z tego lematu wynika, z˙ e graf jest acykliczny (nie ma cykli) wtedy i tylko wtedy, gdy ka˙zde dwa wierzchołki grafu mo˙zna poł¸aczy´c co najwy˙zej jedn¸a drog¸a prost¸a.. 1.3 Drzewa Definicja 1.12 Spójny i acykliczny (bez cykli) graf to drzewo. Z rozwa˙za´n z poprzedniego podrozdziału wynika: Lemat 1.13 Graf jest drzewem wtedy i tylko wtedy, gdy ka˙zde dwa jego wierzchołki mo˙zna poł¸aczy´c dokładnie jedn¸a prost¸a drog¸a..
(29) 8. Rozdział 1. Grafy (nieskierowane). Rysunek 1.6: Przykład drzewa. 2. 3. 4. / * 5. 6. Twierdzenie 1.14 Nast¸epuj¸ace trzy warunki s¸a równowa˙zne: (a) Graf. jest drzewem.. (b). jest acykliczny, ale dodanie dowolnej kraw¸edzi psuje acykliczno´sc´ ; dodana kraw¸ed´z wraz z innymi kraw¸edziami grafu tworzy cykl.. (c). jest spójny, ale usuni¸ecie dowolnej kraw¸edzi kraw¸edzi nie ma drogi ł¸acz¸acej i .. . . psuje spójno´sc´; to znaczy bez. 2 3 Poniewa˙z jest drzewem, wi¸ec jest acykliczny, przypu´sc´my, z˙e dodanie ,- .# nie dodaje cyklu w grafie, ale to oznacza, z˙e w grafie nie ma drogi kraw¸edzi ł¸acz¸acej i . W przeciwnym przypadku mieliby´smy dwie drogi proste z do : jedna,˛. Dowód:. która była w drzewie i druga˛ zło˙zona˛ tylko z dodanej kraw˛edzi, a wi˛ec na podstawie lematu 1.11 dodanie kraw¸edzi zamykałoby cykl. Mamy sprzeczno´sc´ , bo jako drzewo jest spójny. Trzeba pokaza´c, z˙ e jest spójny. Przypu´sc´ my, z˙ e nie jest, i z˙ e nie ma drogi ł¸acz¸acej wierzchołki i . Ale wtedy dodanie kraw¸edzi nie dodaje cyklu (gdyby taki cykl powstał, to po usuni¸eciu kraw¸edzi z cyklu mieliby´smy drog¸e prost¸a łacz¸ac¸a i ). jako drzewo jest spójny. Przypu´sc´ my, z˙ e odj¸ecie kraw¸edzi nie psuje spójno´sci. To znaczy, z˙ e w grafie istniały dwie drogi proste ł¸acz¸ace i , czyli na podstawie Lematu 1.11 w grafie jest cykl; sprzeczno´sc´ . Trzeba pokaza´c, z˙ e w nie ma cyklu. Gdyby w istniał cykl, to usuni¸ecie. dowolnej kraw¸edzi tego cyklu nie psuje spójno´sci; sprzeczno´sc´ .. 3 2 . 2 4 . . ,- .#. ,- .#. . 4 2 . . Lemat 1.15 W drzewie z wierzchołkami mamy . -. kraw¸edzi.. Dowód: Przez indukcj¸e ze wzgl¸edu na liczb¸e wierzchołków. Je˙zeli drzewo ma jeden wierzchołek, to nie ma z˙ adnych kraw¸edzi..
(30) 1.4. Przeszukiwanie grafów. 9. 7 ?(?((? .. Załó˙zmy teraz, z˙ e twierdzenie zachodzi dla ka˙zdego drzewa maj¸acego mniej ni˙z wierzchołków i niech drzewo ma wierzchołków. W istnieje wierzchołek stopnia . Rzeczywi´scie, we´zmy drog¸e prost¸a w o maksymalnej długo´sci . Wierzchołek jest w grafie poł¸aczony tylko z , bo inaczej mieliby´smy cykl lub dłu˙zsz¸a drog¸e prost¸a. Usu´nmy teraz z grafu wierzchołek i prowadz¸ac¸a do niego kraw¸ed´z. wierzchołków i z zało˙zenia indukcyjOtrzymany graf jest spójny i acykliczny ma . nego kraw¸edzi, czyli w grafie było kraw¸edzi.. / 01. )7. . . . Twierdzenie 1.16 Niech runki s¸a równowa˙zne: (a) Graf (b) (c). 3 . b¸edzie grafem z wierzchołkami, wtedy nast¸epuj¸ace trzy wa-. jest drzewem.. . jest acykliczny i posiada jest spójny i posiada . 2 . . . . -. -. kraw¸edzi.. kraw¸edzi.. Dowód: Na podstawie lematu 1.15 z (a) wynika (b) i (c). jest acykliczny, przypu´sc´ my, z˙ e nie jest drzewem. Wtedy na podstawie twierdzenia 1.14 mo˙zna do niego doda´c jak¸as´ kraw¸ed´z nie psuj¸ac acykliczno´sci. Je˙zeli tak powstały graf nie jest drzewem, to dodajemy kolejne kraw¸edzie, a˙z dojdziemy do acyklicznego grafu, w którym ju˙z z˙ adnej kraw¸edzi nie mo˙zna doda´c - bez dodania cyklu. Tak powstały graf jest drzewem, ma wierzchołków i wi¸ecej ni˙z kraw¸edzi. Doszlis´my wi¸ec do sprzeczno´sci z lematem 1.15. jest spójny, przypu´sc´ my, z˙ e nie jest drzewem. Wtedy na podstawie twierdzenia 1.14 mo˙zna z niego usun¸ac´ jak¸as´ kraw¸ed´z nie psuj¸ac spójno´sci. Je˙zeli tak powstały graf nie jest drzewem, to usuwamy kolejne kraw¸edzie, a˙z dojdziemy do spójnego grafu, z którego ju˙z z˙ adnej kraw¸edzi nie mo˙zna usun¸ac´ bez popsucia spójno´sci. Tak powstały graf jest drzewem, ma wierzchołków i mniej ni˙z kraw¸edzi. Doszli´smy wi¸ec do sprzeczno´sci z lematem 1.15.. . 4 2 . . Z powy˙zszego dowodu wynika, z˙ e spójny graf z wierzchołkami nie mo˙ze mie c´ mniej ni˙z kraw¸edzi, czyli drzewo to spójny graf z minimaln¸a liczb¸a kraw¸edzi. Podobnie, je˙zeli graf ma wierzchołków i jest acykliczny, to nie mo˙ze mie´c wi¸ecej ni˙z kraw¸edzi, czyli drzewa to grafy acykliczne z maksymaln¸a liczb¸a kraw¸edzi.. . . Przykład 1.17 W drzewie z rysunku 1.6 nie mo˙zna usun¸ac´ z˙adnej kraw¸edzi bez rospójnienia grafu. Nie mo˙zna te˙z doda´c z˙adnej kraw¸edzi tak, aby nie powstał cykl. W grafie z rysunku 1.1 mo˙zna usun¸ac´ kraw¸ed´z i graf nadal b¸edzie spójny. Do grafu z rysunku 1.5 mo˙zna doda´c kraw¸ed´z i nie powstanie z˙aden cykl.. 2 3 2 3. 1.4 Przeszukiwanie grafów W rozdziale o strukturach danych zaprezentowano algorytmy przeszukiwania drzew w gł¸ab i wszerz. Po niewielkich modyfikacjach algorytmy te mo˙zna zastosowa´c do przeszukiwania grafów..
(31) 10. Rozdział 1. Grafy (nieskierowane). = . oraz wierzchołek pocz¸atkowy . Algorytm przeszukiwania grafu w gł¸ab. Dane wej´sciowe: graf. . odwiedzamy dzony,. i wkładamy go na STOS; zaznaczamy. . ;. jako wierzchołek odwie-. dopóki STOS nie jest pusty, powtarzamy:. . . . je˙zeli jest wierzchołkiem na wierzchu STOSU, to sprawdzamy, czy istnieje wierzchołek , który jest poł¸aczony kraw¸edzi¸a z wierzchołkiem i nie był jeszcze odwiedzony,. . . je˙zeli takie si¸e znajdzie, to odwiedzamy , wkładamy go na wierzch STOSU i zaznaczamy jako wierzchołek odwiedzony,. . je˙zeli takiego nie ma, to zdejmujemy chołka b¸ed¸acego na STOSIE pod spodem.. . ze STOSU i cofamy si¸e do wierz-. Rysunek 1.7: Przykład grafu. 2. 3 * 5. 4 / 6. Przykład 1.18 Zastosujmy algorytm przeszukiwania w gł¸ab do grafu z rysunku 1.7. Poni˙zsza tabela pokazuje jaki wierzchołek jest odwiedzany i jaka jest zawarto´sc´ stosu po ka˙zdej kolejnej iteracji p¸etli algorytmu (przeszukanie zaczynamy od w¸ezła ). Przyj¸eto zasad¸e, z˙e je˙zeli jest kilka wierzchołków do wyboru, to wybieramy ten, którego nazwa stoi wcze´sniej w alfabecie.. 2.
(32) 1.4. Przeszukiwanie grafów Wierzchołek a b c d c g f g c b e b a. 11. STOS a ab abc abcd abc abcg abcgf abcg abc ab abe ab a. W metodzie przeszukiwania w gł¸ab po ka˙zdym kroku algorytmu wierzchołki znajduj¸ace si¸e na stosie tworz¸a drog¸e od wierzchołka wej´sciowego do wierzchołka aktualnie odwiedzanego. Udowodnimy teraz, z˙ e algorytm odwiedzi wszystkie wierzchołki osi¸agalne z wierz% chołka pocz¸atkowego . Przypu´sc´ my bowiem, z˙% e w grafie istnieje wierzchołek osi¸agalny z , ale nie odwiedzony przez algorytm. Skoro jest osi¸agalny z , to istnieje droga. . . . ' >7A ?((?(@ . ( odwiedzony, a nie, to na tej drodze Poniewa˙ dwa s¸asiednie wierzchołki oraz z 7 był był odwiedzony, a 7 nie. Wmamy takie, z ˙ e pewnym momencie algorytmu wierzchołek był na stosie, a potem został z niego zdj¸ety, poniewa˙z algorytm ko n´ czy prac¸e dopiero po zdj¸eciu wszystkich stosu. Zastanówmy si¸e teraz nad wierzchołkówzezestosu. nie mógł by´ Ale c zdj¸ety ze krokiem algorytmu, w którym jest zdejmowany 7 , który nie był odwiedzony. stosu, poniewa˙z istnieje jego s¸asiad %. (. (. (. )(. )(. )(. )(. (. Aby udowodni´c, z˙ e algorytm zawsze si¸e zatrzyma wystarczy zauwa˙zy´c, z˙ e w ka˙zdej iteracji p¸etli albo jaki´s wierzchołek jest wkładany na stos, albo jaki´s jest zdejmowany ze stosu. Z drugiej strony ka˙zdy wierzchołek jest tylko raz wkładany na stos (bo wkładane s¸a tylko wierzchołki nieodwiedzane). Mamy wi¸ec nie wi¸ecej ni˙z iteracji p¸etli, a poniewa˙z w ka˙zdej p¸etli algorytm wykonuje tylko kilka kroków, wi¸ec czas działania algorytmu jest rz¸edu .. . 8 . . oraz wierzchołek pocz¸atkowy ; odwiedzamy , wkładamy go do KOLEJKI; zaznaczamy jako wierzchołek od-. Algorytm przeszukiwania wszerz. Dane wej´sciowe: graf. . wiedzony,. dopóki KOLEJKA nie jest pusta, powtarzamy:. . bierzemy jeden wierzchołek z pocz¸atku KOLEJKI,.
(33) 12. Rozdział 1. Grafy (nieskierowane). . odwiedzamy wszystkie wierzchołki, które nie były jeszcze odwiedzane, a s¸a poł¸aczone kraw¸edzi¸a z wierzchołkiem , wkładamy je na koniec kolejki i zaznaczamy jako odwiedzone. Przykład 1.19 Poni˙zej przedstawiono odwiedzane wierzchołki oraz zawarto´sc´ kolejki po ka˙zdej kolejnej iteracji p¸etli algorytmu przeszukiwania wszerz dla grafu przedstawionego na rysunku 1.7 (przeszukanie zaczynamy od w¸ezła ):. 2. wierzchołki a b,c,d,e f g -. KOLEJKA a bcde cdef defg, efg, fg, g, ". W metodzie przeszukiwania wszerz wierzchołki s¸a przeszukiwane w kolejno´sci od wierzchołków b¸ed¸acych najbli˙zej wierzchołka pocz¸atkowego do wierzchołków b¸ed¸acych dalej.. 1.5 Liczenie składowych spójno´sci Algorytmu przeszukiwania grafów mo˙zna u˙zy´c do liczenia składowych spójno´sci.. . .. Algorytm liczenia składowych spójno´sci grafu Dane wej´sciowe: graf. Dane wyj´sciowe: liczba składowych spójno´sci — .. lsp:=0; Powtarzaj dopóki s¸a jeszcze nieodwiedzone wierzchołki w grafie:. . We´z jeden nieodwiedzony jeszcze wierzchołek ; lsp:=lsp+1;. . przeszukaj (za pomoc¸a algorytmu przeszukiwania grafu w gł¸ab) wszystkie wierzchołki osi¸agalne z i zaznacz je jako odwiedzone.. 1.6 Drzewa spinaj¸ace. . -. .
(34) , to dowolne drzewo. Definicja 1.20 Drzewo spinaj¸ace (rozpinaj¸ ace) grafu spełniaj¸ace warunek (zauwa˙zmy, z˙e chołków co ).. . ma taki sam zbiór wierz-. Przykład 1.21 Drzewo z rysunku 1.6 jest drzewem spinaj¸acym dla grafu z rysunku 1.1..
(35) 1.6. Drzewa spinaj¸ace Je˙zeli graf. 13. nie jest spójny, to nie ma drzewa spinaj¸acego. Z drugiej strony.. Twierdzenie 1.22 Ka˙zdy graf spójny zawiera jako podgraf drzewo spinaj¸ace. Jako dowód przedstawimy algorytmy konstruowania drzewa spinaj¸acego. W tym celu lekko przerobimy algorytm przeszukiwania grafów w gł¸ab.. == . . na pocz¸atku drzewo spinaj¸ace nie zawiera z˙ adnych kraw¸edzi: odwiedzamy i wkładamy go na STOS; zaznaczamy jako wierzchołek odwie-. Algorytm konstruowania drzewa spinaj¸acego przy przeszukiwania grafu w gł¸ab. oraz wierzchołek pocz¸atkowy ; Dane wej´sciowe: graf Dane wyj´sciowe: drzewo spinaj¸ace .. . . . ". . . dzony,. dopóki STOS nie jest pusty, powtarzamy:. . . . je˙zeli jest wierzchołkiem na wierzchu STOSU, to sprawdzamy, czy istnieje wierzchołek , który jest poł¸aczony kraw¸edzi¸a z wierzchołkiem i nie był jeszcze odwiedzony,. . . -. je˙zeli takie si¸e znajdzie, to odwiedzamy , wkładamy go na wierzch STOSU i zaznaczamy jako wierzchołek odwiedzony, kraw¸ed´z dodajemy do drzewa spinaj¸acego:. . je˙zeli takiego nie ma, to zdejmujemy chołka b¸ed¸acego pod spodem.. . ze STOSU i cofamy si¸e do wierz-. Rysunek 1.8: Drzewo spinaj¸ace dla grafu z rysunku 1.7. 2. 4 3. * 5. / 6. Przykład 1.23 Rysunek 1.8 przedstawia drzewo spinaj¸ace utworzone przez powy˙zszy algorytm dla grafu z rysunku 1.7.
(36) 14. Rozdział 1. Grafy (nieskierowane). . . Poka˙zemy teraz, z˙ e algorytm jest poprawny, czyli z˙ e tak utworzony graf jest drzewem. Zauwa˙zmy, z˙ e je˙zeli wierzchołek (poza pocz¸atkowym) jest wkładany na stos, to do dokładana jest kraw¸ed´z ł¸acz¸aca z wierzchołkiem znajduj¸acym si¸e na stosie pod nim. Dlatego w ka˙zdym momencie wierzchołki na stosie stanowi¸a drog¸e w , ł¸aczy ona wierzchołek pocz¸atkowy z aktualnie odwiedzanym wierzchołkiem. Poniewa˙z graf jest spójny, to algorytm odwiedzi wszystkie wierzchołki grafu i jest grafem spój nym. Z ka˙zd¸a kraw¸edzi¸a z mo˙zemy zwi¸aza´c wierzchołek, który jest wkładany na stos w momencie jej powstania. Poniewa˙z, ka˙zdy wierzchołek jest wkładany na stos tylko raz, mamy w kraw¸edzi (z pocz¸atkowym wierzchołkiem nie jest zwi¸azana z˙ adna kraw¸ed´z). Tak wi¸ec jest spójny, zawiera wszystkie wierzchołki grafu i ma kraw¸edzi, jest wi¸ec drzewem spinaj¸acym. Podobnie mo˙zna przerobi´c algorytm przeszukiwania grafu wszerz. Mówi¸ac w skrócie do drzewa nale˙za¸ te kraw¸edzie, którymi przeszedł algorytm przeszukuj¸ac graf.. . . . 1.7 Fundamentalny zbiór cykli . Niech b¸edzie spójnym grafem, a jego drzewem spinaj¸acym. Kraw¸edzie drzewa b¸edziemy nazywali gał¸eziami, a kraw¸edzie nie nale˙za¸ ce do drzewa ci¸eciwami. Z twierdzenia 1.14 wynika, z˙ e dodanie dowolnej ci¸eciwy do drzewa utworzy cykl. ). Zbiór tak utworzonych cykli stanowi Oznaczmy ten cykl przez (oczywi´scie fundamentalny zbiór cykli. Jak za chwil¸e poka˙zemy, ka˙zdy inny cykl w grafie jest ró˙znic¸a symetryczn¸a cykli fundamentalnych. W tym podrozdziale cykle b¸edziemy traktowa c´ jako zbiory kraw¸edzi.. *. *. 57 2 3 5 . 3 5 2 * * * 5 7 5 5 2 3 4 / 2 *. 3 4 5 < *7 2 4 5 5 5 A!. 4 / * 3465 3. Przykład 1.24 Rozpatrzmy graf z rysunku 1.7 i jego drzewo spinaj¸ace z rysunku 1.8. , , , W tym przypadku gał¸eziami s¸a kraw¸edzie: , , , a ci¸ e ciwami kraw¸ e dzie , , , . Fundamentalny zbiór cykli zawiera cykle: , , . ,
(37) , . 5 '2 4 6 5 3 5 * 7, / 5 7 * 5 ! 2 3 4?2 * 57 5 . 5 6 * 23*2. edzi grafu nazywamy pseudocyklem, je˙zeli ka˙zdy wierzchołek grafu Zbiór jestkraw¸ parzystego stopnia. Przykładami pseudocykli s¸a cykle i zbiór pusty.. 7 <. 7. Lemat 1.25 Ró˙znica symetryczna dowolnej liczby pseudocykli jest pseudocyklem. . Dowód: Wystarczy pokaza´c, z˙ e ró˙znica symetryczna dwóch pseudocykli , jest pseudocyklem. Dla dowolnego wierzchołka zbiór kraw¸edzi przyległych jest ró˙znic¸a symetryczn¸a kraw¸edzi przyległych do do w w iw .A poniewa˙z s¸a to zbiory parzystej mocy, wi¸ec ich ró˙znica symetryczna te˙z jest parzystej mocy. Rzeczywi´scie dla dowolnych dwóch zbiorów i mamy. . 7. . . > . . . . !. . # . 7. !. . . (.
(38) 1.7. Fundamentalny zbiór cykli We´zmy teraz dowolny cykl (lub pseudocykl). . . . grafu. (. 15. i utwórzmy róznic¸e. Jest to ró˙znica symetryczna cykli fundamentalnych utworzonych z ci¸eciw wchodz¸acych do . Poka˙zemy, z˙ e. . W tym celu rozwa˙zmy zbiór. . . (. . . . . (. . . *. Na podstawie lematu 1.25, zbiór ten jest pseudocyklem. Z drugiej strony nie zawie ra z˙ adnych ci¸eciw, poniewa˙z ka˙zda ci¸eciwa albo nie nale˙zy do z˙ adnego składnika tej ró˙znicy, je˙zeli , albo nale˙zy do dokładnie dwóch: do i do . Zatem zbiór bo inaczej musiałby zawiera´c wierzchołki stopnia jest podzbiorem drzewa , i jest pusty, jeden, co jest sprzeczne z faktem, z˙ e jest pseudocyklem. Zatem. *. . . . . (. Udowodnili´smy zatem nast¸epuj¸ace: Twierdzenie 1.26 Ka˙zdy cykl (pseudocykl) jest ró˙znic¸a pewnej liczby cykli fundamentalnych.. * 7 * 5 A< 2 4 / 2 jest ró˙znic¸a * 7, * 5 = * 7, 5 7 5 ' * 5 7 5 5 ; 7 > A 2 4 6 5 3 * 2 jest ró˙znic¸a symetryczn¸a cykli , i
(39) . Cykl * 5 5 * 5 * Rzeczywi´scie * 7 5 5 * A 5 * = * 7 5 7 5 * 5 A 5 A 5 * A 5 7 5 ;
(40) ( . Przykład 1.27 (Kontynuacja przykładu 1.24) Cykl symetryczn¸a cykli i . Rzeczywi´scie . . . . . . . . . . . . . . . Lemat 1.28 Je˙zeli graf jest spójny oraz posiada wierzchołków i cykli fundamentalnych. . . . Dowód: Wynika, to z faktu, z˙ e drzewo spinaj¸ace ma . 7. -. kraw¸edzi, to ma. kraw¸edzi. Je˙zeli graf nie jest spójny, to ka˙zd¸a składow¸a spójno´sci mo˙zemy traktow´c osobno. ( ( Niech , , ... ( , b¸ed¸a składowymi spójno´sci grafu i niech składowa ( ma( ( wierzchołków i kraw¸ e( dzi. ka˙zdej składowej mamy drzewo spinaj¸ace z ( - Dla kraw¸edziami oraz cykli fundamentalnych. Niech zbiór cykli fundamentalnych całego grafu b¸edzie sum¸a cykli fundamentalnych składowych. Ka˙zdy cykl w grafie nale˙zy. . .
(41) 16. Rozdział 1. Grafy (nieskierowane). w cało´sci do jednej składowej spójno´sci, bo sam jest spójny, i mo˙ze by´c przedstawiony jako ró˙znica symetryczna cykli fundamentalnych. W całym grafie mamy wi¸ec . (. 7 (. ( . . , -. . . . . . cykli fundamentalnych. Udowodnili´smy wi¸ec nast¸epuj¸ace. cykli fundamentalnych, Twierdzenie 1.29 W dowolnym grafie mamy gdzie jest liczb¸a wierzchołków, liczb¸a kraw¸edzi, a liczb¸a składowych spójno´sci. Aby przekona´c si¸e, czy graf graf nie ma cykli.. ma cykl wystarczy policzy´c . i je˙zeli . 1.8 Minimalne drzewo spinaj¸ace.
(42) . *. . , to. * . %. Wyobra´zmy sobie, z˙ e ka˙zda kraw¸ed´z w grafie ma długo´sc´ . Na przykład, wierzchołki grafu s¸a miejscowo´sciami i długo´sc´ kraw¸edzi jest odległo´sci¸a miejscowo´sci. Chcemy teraz skonstruowa´c minimalne drzewo spinaj¸ace, czyli drzewo spinaj¸ace z minimaln¸a sum¸a długo´sci kraw¸edzi. . . . * (. . % . . z funkcj¸a wagi . = . . Dane wyj´sciowe: minimalne drzewo spinaj¸ace Posortuj kraw¸edzie grafu według długo´sci, od najkrótszej do najdłu˙zszej. Dla ka˙zdej kraw¸edzi * wstaw j¸a do . pod warunkiem, z˙e nie tworzy ona cyklu z kraw¸edziami, które ju˙z s¸a w Algorytm budowy minimalnego drzewa spinaj¸acego %. Dane wej´sciowe: graf . . . ". . . Przykład 1.30 Po zastosowaniu powy˙zszego algorytmu do grafu z rysunku 1.9a otrzymamy drzewo przedstawione na rysunku 1.9b . Najpierw poka˙zemy, z˙ e tak utworzony graf jest drzewem spinaj¸acym. Po ka˙zdej iteracji p¸etli, graf nie zawiera cyklu, wi¸ec na kon´ cu te˙z jest acykliczny. Przypu´sc´ my, z˙ e po zako´nczeniu algorytmu nie jest spójny. Istniej¸a wi¸ec w dwa wierzchołki i
(43) ,.
(44) które s¸a poł¸aczone w drog¸a (bo jest spójny), ale które nie s¸a ( ( . poł¸aczone w . Na drodze tej s¸a wi¸ec dwa s¸asiednie wierzchołki i , które nie s¸a ( ( poł¸aczone w drog¸a. Ale wtedy dodanie kraw˛edzi( ( do drzewa nie tworzy w nim cyklu i algorytm powinien doda´c kraw¸ed´z do , sprzeczno´sc´ .. 7((?( . 7 7. . 7.
(45) 1.9. Cykle i drogi Eulera. 17. Rysunek 1.9: a) Graf z wagami, b) Jego minimalne drzewo spinaj¸ace 16. a. 6. 13. a. b 7. 6. 13. 9. c. 8. d 8. 11. 10. 19. e. e. f. f. a). . 7. c. d. 11. b.
(46) :. b). . spinaj¸acym. Przypu´sc´ my, z˙ e nie Poka˙zemy teraz, z˙ e jest minimalnym b¸edzie drzewem jest minimalne. Niech takim minimalnym drzewem, które ma z najwi¸eksz¸a liczb¸e wspólnych kraw¸edzi. Niech b¸edzie kraw¸edzi¸a z minimaln¸a wag¸a, która nale˙zy do , ale nie nale˙zy do . Je˙zeli dodamy do to otrzymamy cykl. Niech b¸edzie kraw¸edzi¸a w tym cyklu, która nale˙zy do , ale nie nale˙zy do . Niech b¸edzie drzewem, powstaje z po zamianie na . powstaje przez które usuni¸ecie z grafu . Jest to graf spójny z kraw¸edziami, czyli drzewo. % % Je˙zeli , to drzewo byłoby drzewem z mniejsz¸a od wag¸a, wbrew mi% % nimalno´sci . Je˙zeli , to drzewo byłoby minimalnym drzewem a % z% wi¸eksz¸ od liczb¸a wspólnych z kraw¸edzi, znowu sprzeczno´sc´ . Mamy wi¸ec . Je˙zeli dodamy teraz kraw¸ed´z do , to otrzymamy cykl (to mo˙ze by´c inny cykl ). W tym% cyklu istnieje kraw¸ed´z , która nale˙zy do , ale nie ni˙z ten w % do . Przypu´sc´ my, z˙ e . W takim przypadku algorytm powinien wstawi´c kraw¸ed´z do drzewa , bo w momencie rozpatrywania w drzewie nie ma jeszcze i wstawienie nie zamyka cyklu. Wynika, to z faktu, z˙ e graf jest drzewem, wi¸ e c kraw¸ e d´ z nie tworzy cyklu z kraw¸ e dziami z . Mamy wi¸ ec % % co jest sprzeczne z faktem, z˙ e była najl˙zejsz¸a kraw¸edzi¸a z i / % nienale˙za¸c¸a do .. 5. . 5 * 5 * * 5 5 . * 5 * 5 5 * 5 * 5. *. *. 5 *. . *. *. * . 5 . 5
(47) * * 5 *. 1.9 Cykle i drogi Eulera Droga Eulera to droga, która przechodzi przez ka˙zd¸a kraw¸ed´z grafu dokładnie jeden raz. Cykl Eulera to taka droga zamkni¸eta, w której ka˙zda kraw¸ed´z grafu wyst¸epuje dokładnie raz. Euler w 18. wieku pokazał, z˙ e istnieje do´sc´ prosta charakteryzacja grafów z drog¸a lub cyklem Eulera. Mianowicie spójny graf posiada cykl Eulera, wtedy i tylko wtedy gdy ka˙zdy jego wierzchołek jest parzystego stopnia, a posiada drog¸e Eulera je˙zeli co najwy˙zej.
(48) 18. Rozdział 1. Grafy (nieskierowane). dwa jego wierzchołki s¸a stopnia nieparzystego. Pami¸etamy, wniosek 1.4, z˙ e w ka˙zdym grafie liczba wierzchołków nieparzystego stopnia jest parzysta. Tak wi¸ec graf z drog¸a Eulera ma dwa lub zero wierzchołków nieparzystego stopnia.. 4 3 2 * 5 4 6 2 / 5 6. Przykład 1.31 Graf na rysunku 1.1 ma dwa wierzchołki nieparzystego stopnia posiada drog¸e Eulera .. 4 i6. i. Wyobra´zmy sobie, z˙ e idziemy wzdłu˙z kraw¸edzi grafu, i po przej´sciu ka˙zdej kraw¸edzi usuwamy j¸a z grafu. Przechodz¸ac przez jaki´s wierzchołek usuwamy dwie kraw¸edzie, t¸a, któr¸a weszli´smy do wierzchołka, i t¸a, któr¸a go opu´scili´smy. Dlatego, je˙zeli po doj´sciu do jakiego´s wierzchołka, nie ma ju˙z kraw¸edzi z niego odchod´za¸cych, to albo doszli´smy do wierzchołka pocz¸atkowego, albo do wierzchołka nieparzystego stopnia. Z tego wynika, z˙ e je˙zeli w grafie istnieje droga Eulera, to mog¸a w nim by´c co najwy˙zej dwa wierzchołki nieparzystego stopnia, pocz¸atek i koniec drogi, a je˙zeli droga Eulera jest zamkni¸eta i stanowi cykl Eulera, to wszystkie wierzchołki w grafie s¸a parzystego stopnia. Poka˙zemy teraz, z˙ e s¸a to tak˙ze warunki wystarczaj¸ace. Zaczniemy od cyklu Eulera. Twierdzenie 1.32 Spójny graf posiada cykl Eulera wtedy i tylko wtedy, gdy ka˙zdy jego wierzchołek jest parzystego stopnia. Dowód: Konieczno´sc´ warunku udowodnili´smy wy˙zej. Teraz poka˙zemy, z˙ e jest to warunek wystarczaj¸acy. Załó˙zmy, z˙ e ka˙zdy wierzchołek jest parzystego stopnia. Niech b¸edzie najdłu˙zsz¸a pod wzgl¸edem liczby kraw¸edzi drog¸a w grafie bez powtarzania kraw¸edzi. Z rozwa˙za´n zrobionych wy˙zej wynika, z˙ e jest to droga zamkni¸eta. Przypu´sc´ my, z˙ e droga ta nie zawiera jeszcze wszystkich kraw¸edzi grafu. Poniewa˙z graf jest spójny, wi¸e c´ istnieje wierzchołek na tej drodze, od którego odchodzi kraw¸ed´z nie nale˙za¸ ca do . Mo˙zemy teraz utworzy´c dłu˙zsz¸a drog¸e bez powtarzania kraw¸edzi: zawiera ona i potem idzie. wzdłu˙z . Jest to sprzeczne z zało˙zeniem, z˙ e była najdłu˙zsz¸a drog¸a.. . *. *. Twierdzenie 1.33 Spójny graf posiada drog¸e Eulera wtedy i tylko wtedy, gdy posiada co najwy˙zej dwa wierzchołki nieparzystego stopnia. Dowód: Konieczno´sc´ warunku pokazano wy˙zej. Teraz poka˙zemy, z˙ e jest to warunek wystarczaj¸acy. Poniewa˙z graf nie mo˙ze posiada´c tylko jednego wierzchołka stopnia nieparzystego, to wystarczy rozwa˙zy´c graf z dwoma wierzchołkami i nieparzystego stopnia. Dodajmy do grafu nowy wierzchołek i poł¸aczmy go kraw¸edziami z i . Teraz ka˙zdy wierzchołek jest stopnia parzystego i posiada cykl Eulera. Po usuni¸eciu z niego nowych kraw¸edzi i wierzchołka otrzymamy drog¸e Eulera w pierwotnym grafie.. . . Powy˙zszy dowód, chocia˙z krótki, ma t¸e wad¸e, z˙ e nie daje dobrego algorytmu znajdowania drogi Eulera. Nie sposób przegl¸ad¸ac´ wszystkich mo˙zliwych dróg, bo jest ich bardzo du˙zo. Poni˙zej poka˙zemy dwa znacznie szybkie algorytmy znajdowania cyklu Eulera. Algorytm wyszukiwania cyklu Eulera Dane wej´sciowe: spójny graf ze wszystkimi wierzchołkami parzystego stopnia. Zaczynamy od dowolnego wierzchołka .. .
(49) 1.9. Cykle i drogi Eulera. 19. Powtarzamy, a˙z do wyczerpania kraw¸edzi: Je˙zeli z bierz¸acego wierzchołka algorytmu.. . . nie odchodzi z˙ adna kraw¸ed´z, to koniec. Je˙zeli z bierz¸acego wierzchołka odchodzi tylko jedna kraw¸ed´z, to przechodzimy wzdłu˙z tej kraw¸edzi do nast¸epnego wierzchołka, usuwamy t¸a kraw¸ed´z i wierzchołek z grafu.. . . Je˙zeli z odchodzi wi¸ecej ni˙z jedna kraw¸ed´z, to wybieramy t¸a kraw¸ed´z, której usuni¸ecie nie rozspójnia grafu; przechodzimy wzdłu˙z tej kraw¸edzi do nast¸epnego wierzchołka, usuwamy t¸a kraw¸ed´z z grafu.. Rysunek 1.10: Przykład grafu z cyklem Eulera. 2. 3. 4. / *. 0. 5. 6 2. Przykład 1.34 W grafie z rysunku 1.10 wszystkie wierzchołki s¸a parzystego stopnia. Przes´led´zmy, jak działa powy˙zszy algorytm. Zaczynamy od wierzchołka i przyjmijmy, z˙e w razie wyboru algorytm wybierze kraw¸ed´z do wierzchołka z wcze´sniejsz¸a (według alfabetu) liter¸a. Tak wi¸ec przejdzie do potem do i do . Rysunek 1.11 przedstawia nasz graf po tych trzech krokach, usuni¸eciu odwiedzanych kraw¸edzi i wierzchołka (z którego nie odchodz¸a ju˙z z˙adne kraw¸edzie). poniewa˙z usuni¸ecie tej kraw¸edzi rozTeraz algorytm nie mo˙ze wybra´c kraw¸edzi spójni graf. Zamiast tego algorytm powinien wybra´c kraw¸ed´z i przej´sc´ do wierzchołka , a potem do . Teraz znowu 0 nie powinien i´sc´ do tylko do , a potem ju˙z bez problemów do ko´nca cyklu Eulera: , , , , , .. 3. 2. /. / 2 . 5. *. 4. . 3 5 6 / 2. 6. 4. / * . Poka˙zemy teraz poprawno´sc´ tego algorytmu. Przypu´sc´ my, z˙ e po kilku krokach jeste´smy w wierzchołku , z którego odchodzi kilka kraw¸edzi. Poka˙zemy, z˙ e w´sród tych kraw¸edzi co najwy˙zej jedna jest zła (jej usuni¸ecie mo˙ze rozspójni´c graf). Z przebiegu algorytmu wynika, z˙ e graf w aktualnej postaci (po usuni¸eciu by´c mo˙ze jaki´s kraw¸edzi lub wierzchołków) jest nadal spójny i co najwy˙ zej dwa wierzchołki w nim s¸a nieparzystego stopnia i (co zachodzi je˙zeli ). Wi¸ec posiada on drog¸e Eulera. Id´zmy. . % .
(50) 20. Rozdział 1. Grafy (nieskierowane). Rysunek 1.11: Graf po przej´sciu trzech kraw¸edzi. 2. 3. / * . . 0. 5. 6 . . . t¸a drog¸a zaczynaj¸ac od . Droga ta kon´ czy si¸e w lub i przechodzi kilka razy przez ´ cz¸a w i by´c mo˙ze ko´ncowy odci. Mamy wi¸ec kilka p¸etli, które zaczynaj¸ a si¸ e i ko n nek zaczynaj¸acy si¸e w i ko´ncz¸acy w . Otó˙z tylko pierwsza kraw¸ed´z tego ostatniego odcinka mo˙ze rozspójnia´c graf. Wszystkie inne kraw¸edzie wychodz¸ace z s¸a cz¸es´ciami cykli. Aby udowodni´c, z˙ e algorytm dobrze działa, trzeba pokaza´c, z˙ e wszystkie kraw¸edzie grafu b¸ed¸a odwiedzone. Po ka˙zdej iteracji algorytmu graf jest spójny, wi¸ec je˙zeli z wierzchołka nie odchodz¸a z˙ adne kraw¸edzie, to znaczy, z˙ e nie ma ju˙z z˙ adnych kraw¸edzi w grafie. Powy˙zszy algorytm mimo, z˙ e prosty i szybki wymaga sprawdzania, czy usuni¸ecie kraw¸edzi nie rozspójni grafu.. . . . . Drugi algorytm wyznaczania cyklu Eulera. Dane wej´sciowe: spójny graf, w którym wszystkie wierzchołki s¸a parzystego stopnia. Pomocniczy STOS. Dane wyj´sciowe: CE — cykl Eulera.. . Zaczynamy od dowolnego wierzchołka i wkładamy go na STOS, Nat¸epnie powtarzamy dopóki STOS nie jest pusty. . b¸edzie wierzchołkiem z wierzchu STOSU je˙zeli z odchodz¸a jakie´s nieodwiedzane kraw¸edzie, to wybieramy jedn¸a z. Niech. nich, przechodzimy na jej drugi koniec, zaznaczamy jako odwiedzon¸a i jej drugi koniec wkładamy na STOS.. Je˙zeli wszystkie kraw¸edzie odchodz¸ace z były ju˙z odwiedzone, to zdejmu jemy ze STOSU, przekładamy na wyj´scie CE oraz przechodzimy do wierzchołka znajduj¸acego si¸e pod na STOSIE..
(51) 1.10. Drogi i cykle Hamiltona. 21. Przykład 1.35 Prze´sled´zmy działanie algorytmu na przykładzie z rysunku 1.10. Poni˙zsza tabela zawiera: odwiedzany wierzchołek, stan STOSU oraz stan pliku wyj´sciowego CE po ka˙zdym kroku z pierwszych szesnastu kroków. Krok 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16. wierzchołek a b c d a d e f g d g f h b i f. STOS a ab abc abcd abcda abcd abcde abcdef abcdefg abcdefgd abcdefg abcdef abcdefh abcdefhb abcdefhbi abcdefhbif. CE a a a a a ad adg adg adg adg adg. Po szesnastu krokach wszystkie kraw¸edzie zostały odwiedzone i teraz STOS krok po kroku zostanie przeło˙zony na wyj´scie CE. Otrzymamy nast¸epuj¸acy cykl Eulera:. 2 / 6 5 3 5 */ 4 3 2 ( 0. Z algorytmu wynika, z˙ e kolejne wierzchołki na obu stosach s¸a poł¸aczone kraw¸edziami i z˙ e ka˙zda kraw¸ed´z (jako para s¸asiednich wierzchołków) pojawia si¸e na STOSIE tylko raz. Nale˙zy wi¸ec tylko pokaza´c, z˙ e wszystkie kraw¸edzie znajd¸a sie na wyj´sciu. Je˙zeli pomini¸eto jakie´s kraw¸edzie, to poniewa˙z graf jest spójny jaka´s nieodwiedzona kraw¸ed´z musi przylega´c do wierzchołka , który jest w wynikowym cyklu, ale jest przekładany na wyj´scie tylko tedy, gdy nie odchodz¸a od niego ju˙z z˙ adne nieodwiedzane kraw¸edzie. W ka˙zdej iteracji algoryt przechodzi jak¸as´ kraw¸ed´z. Albo wkładaj¸ac jej koniec na STOS, albo przekładaj¸ac j¸a na wyj´scie CE. A poniewa˙z ka˙zda kraw¸ed´z jest odwiedzana dokładnie dwa razy, raz jak jest wkładana na STOS i drugi raz jak jest przekładana na CE, wi¸ec czas działania algorytmu jest proporcjonalny do liczby kraw¸edzi w grafie.. . . 1.10 Drogi i cykle Hamiltona Droga Hamiltona to taka droga w grafie, która przechodzi dokładnie raz przez ka˙zdy wierzchołek grafu. Cykl Hamiltona to zamkni¸eta droga Hamiltona.. / 2 3 4 6 5 *. Przykład 1.36 Graf z rysunku 1.1 posiada drog¸e Hamiltona , ale nie posiada cyklu Hamiltona. Ka˙zdy graf pełny z
(52) posiada cykl Hamiltona..
(53) 22. Rozdział 1. Grafy (nieskierowane). Inaczej ni˙z dla cyklu lub drogi Eulera nie jest znane z˙ adne proste kryterium rozstrzygania, czy dany graf posiada drog¸e lub cykl Hamiltona. Nie jest tak˙ze znany z˙ aden algorytm wyszukiwania drogi lub cyklu Hamiltona działaj¸acy w czasie wielomianowym. Naiwnym sposobem szukania drogi Hamiltona jest sprawdzanie wszystkich mo˙zliwych dróg w grafie, ale algorytm ten jest bardzo czasochłonny, bo mamy około mo˙zliwych dróg w grafie z wierzchołkami. Innym algorytmem szukania drogi Hamiltona jest tak zwane wyszukiwanie z nawrotami. Mówi¸ac w skrócie szukanie z nawrotami idzie pierwsz¸a mo˙zliw¸a s´cie˙zk¸a tak daleko jak to tylko mo˙zliwe okładaj¸ac kolejne odwiedzane w¸ezły na stos. W momencie, gdy algorytrm utknie w s´lepej uliczce, to cofa si¸e o jeden krok i próbuje innej drogi. Załó˙zmy, z˙ e wierzchołki grafu s¸a uporz¸ adkowane na przykład według alfabetu lub s¸a kolejnymi liczbami naturalnymi . = (?((@ . Algorytm z nawrotami wyszukiwania drogi Hamiltona. . oraz wierzchołek pocz¸atkowy " . Dane wyj´sciowe: droga Hamiltona zaczynaj¸aca si¸e od , lub informacja, z˙ e takiej drogi Dane wej´sciowe: graf. nie ma.. . włó˙z na STOS. powtarzaj a˙z do skutku:. . . je˙zeli jest wierzchołkiem na wierzchu STOSU, to szukamy wierzchołka o najni˙zszym mo˙zliwie numerze poł¸aczonego z kraw¸edzi¸a i nie wyst¸epuj¸acy % na STOSIE. Je˙zeli w poprzedniej iteracji zdj¸eto ze STOSU wierzchołek , to powinien by´c wi¸ekszy od . %. %. Je˙zeli takie znajdziemy, to wkładamy je na STOS. Je˙zeli wierzchołki na STOSIE tworz¸a ju˙z drog¸e Hamiltona, to koniec algorytmu. Je˙zeli takiego. %. nie znajdziemy, to zdejmujemy. . ze STOSU.. Przykład 1.37 Prze´sled´zmy działanie algorytmu na przykładzie grafu z rysunku 1.1. Poni˙zsza tabela zawiera: odwiedzany wierzchołek, oraz stan STOSU po ka˙zdym kolejnym kroku (szukanie rozpoczynamy od wierzchołka ).. /.
(54) 1.11. Kolorowanie grafów Krok 1 2 3 4 5 6 7 8 9 10 11 12 13. wierzchołek d a b c f e f g f c g f e. 23. STOS d da dab dabc dabcf dabcfe dabcf dabcfg dabcf dabc dabcg dabcgf dacgfe. Powy˙zszy algorytm mimo, z˙ e szybszy od naiwnego algorytmu sprawdzania wszystkich dróg, ma wykładnicz¸a zło˙zono´sc´ czasow¸a.. 1.11 Kolorowanie grafów Chodzi o takie pokolorowanie wierzchołków grafu, z˙ eby wierzchołki poł¸aczone kraw¸edzi¸a były pokolorowane innymi kolorami i z˙ eby liczba kolorów była jak najmniejsza.. 4 0 ; % 4 0 1. > ?((?(@ .
(55) ,- .# . 4 . Definicja 1.38 Pokolorowanie grafu kolorami jest to funkcja , taka z˙e je˙zeli . Najmniejsze takie , z˙e graf mo˙zna pokolorowa´c kolorami nazywamy liczb¸a chromatyczn¸a grafu i oznaczamy przez . W przypadku kolorowania grafów, podobnie jak dla dróg Hamiltona, nie s¸a znane dobre i szybkie algorytmy. Naiwny algorytm sprawdzaj¸acy wszystkie mo˙zliwe kolorowania działa zbyt długo. Tak˙ze tu mamy algorytm z nawrotami.. == . . Algorytm z nawrotami kolorowania wierzchołków grafu Dane wej´sciowe: graf oraz liczba naturalna . Dane wyj´sciowe: pokolorowanie wierzchołków grafu za pomoc¸a kolorów lub informacja, z˙ e takiego pokolorowania nie ma. dla ka˙zdego podstaw ( oznacza, z˙ e nie ma jeszcze koloru). włó˙z pierwszy wierzchołek na STOS,. > ?((?(@ . . . powtarzaj a˙z do skutku:. 4 01 4 0 4 0 . . 4 . je˙zeli jest wierzchołkiem na wierzchu STOSU, to próbujemy przypisa´c mu kolor, wi¸ekszy od bie˙za¸ cego koloru , który nie koliduje z kolorami wierzchołków znajduj¸acych si¸e na STOSIE. Je˙zeli to si¸e uda, to wkładamy kolejny wierzcho łek na stos. Je˙zeli si¸e nie uda, to zdejmujemy ze stosu i podstawiamy .. . 4 : .
(56) 24. Rozdział 1. Grafy (nieskierowane). W tym algorytmie próbujemy kolejnym wierzchołkom przypisa´c pierwszy z rz¸edu kolor i pokolorowane wierzchołki umieszczamy na stosie. Jak zabrniemy w s´lep¸a uliczk¸e, to cofamy si¸e do poprzedniego wierzchołka na stosie i próbujemy nast¸epnego koloru.. . Przykład 1.39 Zastosujmy powy˙ zwszy algorytm do grafu z rysunku 1.12, aby znale´ zc´ - kolorowanie trzema kolorami
(57) . Najpierw ka˙zdy wierzchołek dostaje kolor , co oznacza, z˙e nie jest jeszcze pokolorowany. Rysunek 1.12: Przykład grafu. 2. 5 * 2 34/ *. 3. 4 /. 2. Zaczynamy od wierzchołka . W pierwszych pi¸eciu krokach algorytm pokoloruje wierzchołki , , , i w nast¸epuj¸acy sposób: u c(u). a 1. b 2. c 1. d 2. e 3. f 0. 2 3 4 )/ * 5 ( Teraz algorytm nie mo˙ze pokolorowa´c wierzchołka 5 , bo jest on poł¸aczony z 2 , / , * , które s¸a pokolorowane kolorami 1, 2, 3. Dlatego 5 jest zdj¸ete ze stosu: 2 3 4 />* ( Teraz zdejmujemy . wierzchołek * , bo nie mo˙zna mu przypisa´c wy˙zszego koloru, i podstawiamy 4 * 234/ (
(58) , a nast¸epnie kolorujemy 4 * i wkładamy 5 na Teraz zmieniamy kolor / na 4 / a na stosie mamy wierzchołki. . . . . . stos.. u c(u). a 1. b 2. c 1. d 3. e 2. f 0. 2 3 4 )/ * 5 ( W tym momencie pokolorowanie 5 nie jest mo˙zliwe, wi¸ec zdejmujemy go ze stosu 2 3 4 />* ( . .
(59) 1.11. Kolorowanie grafów. 25. *. 234/ ( Wierzchołek / ma w tym momencie najwy˙zszy kolor 4 /. Wierzchołek te˙z nie mo˙ze by´c pokolorowany wy˙zszym kolorem, wi¸ec te˙z go zdejmujemy. .
(60) , wi˛ec zmiana koloru nie jest mo˙zliwa i zdejmujemy go ze stosu. Mamy teraz nast¸epuj¸ace kolorowanie u c(u). a 1. i stos. b 2. d 0. e 0. f 0. 234( . 4 4 4 4 * 4 5 . c 1. Teraz zmieniamy kolor na
(61) , a nast¸epnie ju˙z bez nawrotów kolorujemy , ,
(62) . Ostateczne kolorowanie wygl¸ada tak: u c(u). a 1. b 2. c 3. ,. d 1. e 2. 4 / . f 3. . -. Je˙zeli zastosujemy powy˙zszy algorytm do pokolorowania grafu pełnego kolorami, to wypróbuje on wszystkie kolorowan´ dla pierwszych wierzchołków. Pesymistyczny czas działania algorytmu jest wi¸ec . Problem kolorowania grafów jest trywialny, je˙zeli mamy tylko jeden kolor . Jednym kolorem mo˙zna pokolorowa´c tylko grafy bez kraw¸edzi. Proste jest te˙z kolorowanie grafów dwoma kolorami. Grafy, które mo˙zna pokolorowa c´ dwoma kolorami, to grafy dwudzielne. Grafu nie mo˙zna pokolorowa´c dwoma kolorami, je˙zeli zawiera cykl nieparzystej długo´sci. Poni˙zej poka˙zemy, z˙ e i na odwrót: je˙zeli graf nie ma cyklu nieparzystej długo´sci, to mo˙zna go pokolorowa´c dwoma kolorami. Poni˙zej przedstawiamy algorytm kolorowania grafów dwoma kolorami. Dla prostoty zakładamy, z˙ e kolorowane grafy s¸a spójne. Algorytm mo˙zna łatwo przerobi c´ tak, aby kolorował wszystkie grafy.. . . . = . .. Algorytm kolorowania grafu dwoma kolorami Dane wej´sciowe: spójny graf. 1. Dane wyj´ sciowe: pokolorowanie wierzchołków grafu za pomoc¸a dwóch kolorów - lub informacja, z˙ e takiego pokolorowania nie ma.. . we´z pierwszy wierzchołek , pokoloruj go pierwszym kolorem. 4 . -. 4. .. powtarzaj a˙z do skutku: We´z wszystkie wierzchołki, które s¸a poł¸aczone kraw¸edzi¸a z jakim´s wierzchołkiem pokolorowanym w poprzedniej iteracji i nie maj¸a jeszcze koloru.. Je˙zeli w´sród nich z˙ adne dwa nie s¸a poł¸aczone kraw¸edzi¸a, to pokoloruj je jednym kolorem (innym ni˙z wierzchołki kolorowane w poprzedniej iteracji). Je˙zeli w´sród nich s¸a dwa poł¸aczone kraw¸edzi¸a, to pokolorowanie dwoma kolorami nie jest mo˙zliwe..
(63) 26. Rozdział 1. Grafy (nieskierowane). . (. Kolorowanie otrzymywane w tym algorytmie jest prawidłowe. Niech oznacza 0 ( wierzchołki kolorowane w -tej iteracji, . Wierzchołki z s¸ a kolorowane na 0 pierwszy kolor, je˙zeli jest parzyste, i na drugi kolor, je˙ z eli jest nieparzyste. Zauwa˙ z my, ( z˙ e dowolny wierzchołek mo˙ze by´c poł¸aczony kraw¸edzi¸a tylko z wierzchołka( ( ( mi ze zbiorów i . zawiera wszystkie wierzchołki, które s¸a poł¸aczone z ( ( i nie miały koloru po pokolorowaniu , tak wi¸ ec z˙ aden ze zbiorów wierzchołkami z + 3 0 ( z nie zawiera wierzchołków poł¸aczonych z . % ( z˙ e je˙zeli dwa % wierzchołki i % nale˙za do + *,% to istniej¸ a drogi *% ( Zauwa˙zmy, ( '% + + oraz takie, z ˙ e . Niech % + , b¸edzie ostatnim wspólnym wierzchołkiem na obu drogach. Poniewa˙z zbiory s¸ a rozł¸a*czne, to wspólne wierzchołki musz¸a mie´c te same indeksy. Droga % % jest drog¸a z parzyst¸a liczb¸a kraw¸edzi. Dlatego, je˙zeli i s¸a poł¸aczone kraw¸edzi¸a, to w grafie mamy cykl nieparzystej długo´sci i pokolorowanie dwoma kolorami nie jest mo˙zliwe. Z powy˙zszych rozwa˙za´n wynika. 7. 7, ?((?(? . . = 7. . 7. 7 ?(?((? . . 1 ?(?((?. . . - (?(?(? . . Lemat 1.40 Graf jest dwudzielny (mo˙ze by´c pokolorowany dwoma kolorami) wtedy i tylko wtedy, gdy nie zawiera cykli nieparzystej długo´sci. Wniosek 1.41 Ka˙zde drzewo mo˙zna pokolorowa´c dwoma kolorami. Nie jest znany algorytm koloruj¸acy grafy trzema kolorami (lub dowoln¸a wi¸eksz¸a liczb¸a kolorów) działaj¸acy w czasie wielomianowym. Poniewa˙z nie s¸a znane szybkie algorytmy kolorowania grafów stosuje si¸e heurystyki, czyli algorytmy niedokładne. Na przykład nast¸epuj¸aca heurystyka Heurystyka kolorowania grafu. Posortuj wierzchołki grafu według ich stopni. Dla ka˙zdego wierzchołka po kolei przypisz mu najni˙zszy mo˙zliwy kolor. W wielu przypadkach heurystyka ta da optymalne rozwi¸azanie, na przykład dla grafu z rysunku 1.12.. 1.12 Hiperkostka. 7. Hiperkostka
(64) wymiaru 1 jest przedstawiona na rysunku 1.13a. Składa si¸e ona z dwóch wierzchołków 0 i 1 poł¸aczonych kraw¸edzi¸a. Hiperkostk¸e
(65) wymiaru 2 (rysunek 1.13b) budujemy z dwóch kostek
(66) . W pierwszej kostce numerujemy wierzchołki przez 00 i 01 (dopisujemy 0 na pocz¸atek nazwy ka˙zdego wierzchołka). W drugiej kostce numerujemy wierzchołki przez 10 i 11 (dopisujemy 1 na pocz¸atek). Nast¸epnie ł¸aczymy kraw¸edziami odpowiadaj¸ace sobie wierzchołki z obu kopii 00 z 10 i 01 z 11. Podobnie budujemy hiperkostk¸e
(67) wymiaru z dwóch kostek
(68) . W pierwszej kostce numerujemy wierzchołki dopisuj¸ac 0 na pocz¸atku nazwy ka˙zdego wierzchołka. W drugiej kostce numerujemy wierzchołki dopisuj¸ac 1 na pocz¸atek. Nast¸epnie ł¸aczymy. 7. 7.
(69) 1.13. Rozgłaszanie wiadomo´sci. Rysunek 1.13: a) Hiperkostka
(70). 7 , b) Hiperkostka. 1. 01. 11. 0. 00. 10. a).
(71). 27 . b). # A 7 . = # 7. . kraw¸edziami odpowiadaj¸ace- sobie wierzchołki z obu kopii, czyli wierzchołek jest poł¸aczony z wierzchołkiem z dego . Rysunek 1.14 przedstawia. , dla ka˙ hiperkostk¸e
(72) . W rezultacie hiperkostka to graf
(73) , gdzie zawiera wszystkie ci¸agi bitów długo´sci , a dwa wierzchołki , s¸a poł¸aczone kraw¸edzi¸a wtedy i tylko wtedy, gdy ró˙zni¸a si¸e dokładnie jednym bitem. Jak łatwo wida´c w kostkach
(74) i
(75) s¸a cykle Hamiltona (w
(76) jest droga Hamiltona). Ogólniej mamy Lemat 1.42 Ka˙zda hiperkostka
(77) zawiera drog¸e Hamiltona. zaczynaj¸ac¸a si¸e w wierz- chołku i ko´ncz¸ac¸a w wierzchołku .. 7. 77. 7 7. # . -.
(78) Dowód przez indukcj¸ e ze wzgl¸edu na wymiar kostki. zawiera drog¸ e Hamiltona -
(79) Załó˙zmy, z˙ e
(80) zawiera drog¸ e Hamiltona z do . składa si¸e z dwóch . W pierszej hiperkostce (tej z hiperkostek
(81) . Droga w
(82) zaczyna si¸e w punkcie - - - 0 na pocz¸atku ka˙zdego wierzchołka) przechodzi do , potem kraw¸edzi¸a do i w - drugiej hiperkostce (tej z 1 na pocz¸atku ka˙zdego wierzchołka) w odwrotnym kierunku do .. Cykl Hamiltona w
(83) tworzy tak zwany kod Graya. Jest to ci¸ag wszyskich elementowych ci¸agów bitów, ka˙zdy wyst¸epuje raz, ka˙zde dwa kolejne ró˙zni¸a si¸e jednym bitem oraz ostatni ciag ˛ ró˙zni si˛e jednym bitem od pierwszego.. 7. 1.13 Rozgłaszanie wiadomo´sci. . . Graf mo˙ze przedstawia´c sie´c poł¸acze´n. Wierzchołki s¸a agentami, a kraw¸edzie to ł¸acza, którymi agenci mog¸a si¸e komunikowa´c. Wyobra´zmy sobie, z˙ e jeden agent posiada jak¸as´ wiadomo´sc´ , któr¸a chce przekaza´c wszystkim innym agentom w sieci. Reguły s¸a nast¸epuj¸ace. Komunikacja odbywa si¸e synchronicznie w taktach. W ka˙zdym takcie ka˙zdy agent mo˙ze przekaza´c wiadomo´sc´ jednemu swojemu s¸asiadowi. Powy˙zszy problem nazywa si¸e problemem rozgłaszania. Poni˙z ej poka˙zemy, z˙ e mo˙zna go bardzo efektywnie rozwi¸aza´c, je˙zeli graf jest hiperkostk¸a
(84) . B¸edziemy traktowa´c ci¸ag bitów jako przedstawienie dwójkowe liczby naturalnej..
(85) 28. Rozdział 1. Grafy (nieskierowane). Rysunek 1.14: Hiperkostka
(86) . . -. -). - -. -)- -. -. -)-. . . -. . . . . . Najpierw prze´sled´zmy działanie tego protokułu na hiperkostce
(87) (rysunek 1.14). Załó˙zmy, z˙ e wierzchołek jest z ˙ ródłem wiadomo´ s ci. W pierwszym takcie przekazuje on j¸a do wierzchołka . Zauwa˙zmy, z˙ e po pierwszym takcie wiadomo´sc´ jest znana wierzchołkom o numerach mniejszych od 2 i, z˙ e te wierzchołki tworz¸a hiperkostk¸e wymiaru 1. W drugim takcie wierzchołek przeka˙ze wiadomo´sc´ do wierzchoł - -)ka , a wierzchołek do
(88) . Po drugim takcie wiadomo´sc´ znaj¸a wierzchołki o numerach mniejszych od 4 i tworz¸a- one hiperkostk¸ e wymiaru 2. W trzecim - - - ´ takcie-)- przekazuje wiadomo´ s c do , do , do - - -),a
(89) do . Tak wi¸ec po trzech taktach wszystkie wierzchołki w
(90) znaj¸a wiadomo´sc´ . Protokół rozsyłania wiadomo´sci w hiperkostce
(91) Na pocz¸atku wiadomo´sc´ ma wierzchołek . 0 Powtarzaj dla ( w 0 -tym ( takcie ka˙zdy wierzchołek przekazuje wiadomo´sc´ do wierzchołka .. . . . . . . ". . > ?((?(@ 7. . . . . . . . . . 7. 0. ( Aby pokaza´c poprawno´sc´ tego protokołu, poka˙zemy przez indukcje, z˙ e po -tym takcie wiadomo´sc´ jest znana wszystkim wierzchołkom o numerach mniejszych od . pierwszym Przed taktem wiadomo´sc´ jest znana wierzchołkom o numerach mniejszych 0 od , czyli wierzchołkowi 0. Załó˙zmy, z˙ e przed -tym taktem wiadomo´sc´ jest znana. .
(92) 1.14. Zbieranie informacji. 7. # A 7. 29. 7. ( ( ( wszystkim wierzchołkom o numerach mniejszych od . S¸a to dokładnie wierzchołki 0 ( pustym (ci¸agiem). W postaci , gdzie (je˙ z eli to. 0 jest ´ -tym takcie ka˙ z dy taki wierzchołek przeka˙ z e wiadomo´ s c do , czyli po. 0 0 -tym takcie wiadomo´sc´ b¸ed¸a znały wszystkie wierzchołki, które maj¸ a( na pierwszych bitach zera, czyli wszystkie wierzchołki o numerach mniejszych od . Protokół ten (po małych przeróbkach) mo˙zna tak˙ze stosowa´c do grafu pełnego lub do innego grafu, który zawiera hiperkostk¸e.. . . . 7. . 1.14 Zbieranie informacji Hiperkostka jest tak˙ze wygodn¸a struktur¸a do zbierania informacji, gdy chcemy do jednego wierzchołka zebra´c informacje od wszystkich wierzchołków. Informacje te nale˙zy przesył¸ac´ w odwrotnym kierunku ni˙z w protkóle rozsyłania. Zakładamy, z˙ e przesyłane informacje s¸a ł¸aczone w pakiety i wierzchołek mo˙ze przesła´c w jednym takcie cały pakiet zawieraj¸acy kilka informacji. Protokół zbierania wiadomo´sci w hiperkostce
(93) Powtarzaj dla. 0. (?(?(? -. 7. w 0 -tym takcie ka˙zdy wierzchołek postaci (. przesyła swój pakiet do wierzchołka ,. . (. 7 -. , gdzie. A . &-. (. . 1.14). Przykład 1.43 Prze´sled´zmy działanie tego protokułu na hiperkostce
(94) (rysunek - W pierwszym takcie wierzchołek przekazuje swoj a ˛ wiadomo´ s c ´ do , wierzchołek - - - - - -) - do , wierzchołek do , a wierzchołek do . - W drugim takcie wierzchołek przekazuje zebrane wiadomo´ sci (swoja˛ i te, kt.ore -) otrzymał w poprzednim takcie) do , a wierzchołek do . W trzecim takcie wierzchołek przekazuje zebrane wiadomo´sci do . a wierz - chołek do .. 1.15 Plotkowanie Plotkowanie polega na tym, z˙ e na pocz¸atku ka˙zdy wierzchołek ma jak¸as´ wiadomo´sc´ i chce j¸a rozesła´c do wszystkich innych wierzchołków w grafie. Znaj¸ac protokoły do zbierania i rozsyłania wiadomo´sci mo˙zemy zaprojektowa´c protokół plotkowania, który najpierw zbiera wszystkie informacje do jednego w¸ezła, a nast¸epnie rozsyła je do wszystkich wierzchołków.. 1.16 Zadania 1. Ile kraw˛edzi ma graf pełny ? 2. Ile maksymalnie kraw˛edzi mo˙ze mie´c graf z wierzchołkami?.
(95) 30. Rozdział 1. Grafy (nieskierowane) 3. Ile jest grafów ze zbiorem wierzchołków. > ?(?((@ ? -. . . 4. Ile kraw˛edzi ma dwudzielny graf pełny $ ?. 2 3 4 . Które z nich s¸a. 5. Udowodnij, z˙ e izomorfizm grafów jest relacj¸a równowa˙zno´sci. 6. Narysuj wszystkie grafy ze zbiorem wierzchołków izomorficzne?. 2 3 4 / . 7. Narysuj mo˙zliwie jak najwi¸ecej nieizomorficznych grafów z czterema wierzchołkami . 8. Narysuj dwa nieizomorficzne grafy z t¸a sam¸a (mo˙zliwie jak najmniejsz¸a) liczb¸a wierzchołków. 9. Narysuj dwa nieizomorficzne drzewa z t¸a sam¸a (mo˙zliwie jak najmniejsz¸a) liczb¸a wierzchołków. 10. Narysuj dwa nieizomorficzne grafy z t¸a sam¸a (mo˙zliwie jak najmniejsz¸a) liczb¸a wierzchołków i t¸a sam¸a liczb¸a kraw¸edzi. 11. Narysuj dwa nieizomorficzne grafy, które maj¸a t¸a sam¸a liczb¸a wierzchołków stopnia , dla ka˙zdego . 12. Zastosuj algorytm przeszukiwania grafu w gł¸ab (wszerz) do grafów z rysunków 1.1 i 1.10. 13. Zkonstruuj drzewa spinaj¸ace dla grafów z rysunków 1.1 i 1.10. 14. Korzystaj¸ac z drzew spinaj¸acych z poprzedniego zadania, znajd´z zbiór cykli fundamentalnych dla grafów. 15. Zmodyfikuj algorytm przeszukiwania grafu wszerz tak, aby wyznaczał on tak˙ze drzewo spinaj¸ace (zło˙zone z tych kraw¸edzi, którymi przeszedł algorytm). Zastosuj ten algorytm do grafów z rysunków 1.1, 1.7 i 1.10. 16. Sprawd´z, które grafy przedstawione na rysunkach w tym rozdziale posiadaj¸a cykl (lub drog¸e) Eulera. 17. Sprawd´z, które grafy przedstawione na rysunkach w tym rozdziale posiadaj¸a cykl lub drog¸e Hamiltona. 18. Zastosuj algorytm kolorowania z nawrotami do grafu z rysunku 1.7. 19. Znajd´z graf, dla którego heurystyka przedstawiona w podrozdziale o kolorowaniu grafów nie znajduje optymalnego kolorowania.. . 20. Narysuj hiperkostk¸e
(96) . Wska˙z w niej cykl Hamiltona. Prze´sled´z na niej protokół rozsyłania wiadomo´sci..
(97) 1.17. Problemy. 1.17 Problemy. . . 31.
(98) . . . . Oto algorytm konstrukcji minimalnego drzewa spinaj¸acego dla grafu : (1) zaczynamy od zbioru wszystkich kraw¸edzi grafu , (2) sortujemy kraw¸edzie według długo´sci, od najdłu˙zszej do najkrótszej (3) dla ka˙zdej kraw¸edzi usuwamy j¸a z , je˙zeli jej usuni¸ecie nie rozspójnia grafu . Udowodnij poprawno´sc´ tego algorytmu. Zastosuj powy˙zszy algorytm do grafu z rysunku 1.9a..
(99) . %. . *.
(100) 5 " . b¸edzie dowolnym grafem z wagami kraw¸edzi , a Niech dowolnym minimalnym drzewem spinaj¸acym. Poka˙z, z˙ e dla dowolnego wierzchołka do nale˙za¸ te kraw¸edzie wychodz¸acych z , które maja najkrótsze wagi, to znaczy, je˙ z eli i s¸ a dwiema kraw¸ e dziami przyległymi do takimi, z ˙ e oraz , to % / % .. * * 5 5 . . . * ".
(101)
Powiązane dokumenty
Asymptotyczna teoria testowania hipotez: graniczne rozk lady statystyk testowych, asympto- tyczna efektywno´s´c test´ow,
b) pierwsz¡ kart¡ nie byªa dama, a drug¡ byªa karta koloru tre, c) obie karty byªy tego samego koloru... Zad 3. Rzucamy po kolei trzy
Graf prosty, w którym istnieje otwarta ´scie· zka bez powtarzaj ¾ acych si ¾ e wierzcho÷ ków zawieraj ¾ aca wszystkie wierz- cho÷ ki i wszystkie kraw¾ edzie grafu
Graf dwudzielny to taki, którego wierzchołki da si e podzielić na dwa zbiory A i B takie, że , pomi edzy dwoma wierzchołkami z tego samego zbioru nie ma kraw , edzi.. Jeśli graf G
Grafem (grafem prostym, grafem niezorientowanym) nazywamy par¸e (V, E) gdzie V jest pewnym zbiorem zwanym zbiorem wierzcho lk´ow, natomiast E jest zbiorem pewnych par
Grafem zorientowanym (grafem skierowanym) nazywamy par¸e (V, E) gdzie V jest pewnym zbiorem zwanym zbiorem wierzchoÃlk´ow, natomiast E jest zbiorem pewnych par
Spo´sr´ od 30, kt´ orzy nie chodzili na zaj¸ecia 19 my´sla lo, ˙ze zaliczy a 2 spo´sr´ od tych co nie chodzili na zaj¸ecia faktycznie zaliczy lo Matematyk¸e Dyskretn¸ a.. Ilu by
Zbi´or warto´sci przyjmowanych przez zmienn¸a losow¸a typu skokowego mo˙ze by´c