Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Podobne dokumenty
Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Algorytmiczna teoria grafów

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

Lista 4. Kamil Matuszewski 22 marca 2016

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

Matematyka dyskretna

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

Graf. Definicja marca / 1

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

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

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

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

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

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Matematyczne Podstawy Informatyki

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

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

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

Sortowanie topologiczne skierowanych grafów acyklicznych

KURS MATEMATYKA DYSKRETNA

KURS MATEMATYKA DYSKRETNA

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Kolorowanie płaszczyzny, prostych i okręgów

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Matematyka dyskretna - 7.Drzewa

Matematyczne Podstawy Informatyki

Rozdzia l 10. Najważniejsze normalne logiki modalne

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

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

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

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

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

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

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

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

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Niech X bȩdzie dowolnym zbiorem. Dobry porz adek to relacja P X X (bȩdziemy pisać x y zamiast x, y P ) o w lasnościach:

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

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

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

Elementy teorii grafów Elementy teorii grafów

TEORETYCZNE PODSTAWY INFORMATYKI

TEORIA GRAFÓW I SIECI - ROZDZIAŁIV. Drzewa. Drzewa

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

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

Opracowanie prof. J. Domsta 1

Ogólne wiadomości o grafach

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Pierwsze kolokwium z Matematyki I 4. listopada 2013 r. J. de Lucas

Algorytmika Problemów Trudnych

E ' E G nazywamy krawędziowym zbiorem

Minimalne drzewa rozpinające

0.1 Sposȯb rozk ladu liczb na czynniki pierwsze

Kolorowanie wierzchołków grafu

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Liczba 2, to jest jedyna najmniejsza liczba parzysta i pierwsza. Oś liczbowa. Liczba 1, to nie jest liczba pierwsza

7. Teoria drzew - spinanie i przeszukiwanie

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

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Teoria miary WPPT IIr. semestr zimowy 2009 Wyk lady 6 i 7. Mierzalność w sensie Carathéodory ego Miara Lebesgue a na prostej

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

LX Olimpiada Matematyczna

Matematyka dyskretna Oznaczenia

Algorytmy i Struktury Danych.

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

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

Kolorowanie wierzchołków

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Sterowalność liniowych uk ladów sterowania

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Wykłady z Matematyki Dyskretnej

Digraf. 13 maja 2017

Wyk lad 7 Baza i wymiar przestrzeni liniowej

MATEMATYKA DYSKRETNA - wyk lad 1 dr inż Krzysztof Bryś. Wprowadzenie

Problemy Decyzyjne dla Systemów Nieskończonych

Ilustracja S1 S2. S3 ściana zewnętrzna

Luty 2001 Algorytmy (7) 2000/2001

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

Zadania z ćwiczeń #18 (pon. 7 maja) Matematyka Dyskretna

Matematyka Dyskretna - zadania

1 Automaty niedeterministyczne

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Algorytmy i Struktury Danych.

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Wyk lad 6 Podprzestrzenie przestrzeni liniowych

Lista 0. Kamil Matuszewski 1 marca 2016

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

Matematyka dyskretna - 5.Grafy.

Wykłady z Matematyki Dyskretnej

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

X Olimpiada Matematyczna Gimnazjalistów

Indukcja matematyczna. Zasada minimum. Zastosowania.

Algorytmy Równoległe i Rozproszone Część II - Sieci porównujące

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Transkrypt:

Matematyka Dyskretna Andrzej Szepietowski 2 czerwca 2002 roku

6 6 6 6 Rozdział 1 Grafy nieskierowane) Definicja 1.1 Graf nieskierowany) jest to para składaj aca siȩ ze skończonego zbioru wierzchołków oraz ze zbioru krawȩdzi, gdzie krawȩdzie to pary wierzchołków.! " # $&% '#) +,.# O krawȩdzi mówimy, że ł aczy wierzchołki i, a o wierzchołkach i, że s a końcami krawȩdzi 01. Stopień wierzchołka, oznaczany przez, jest to liczba krawȩdzi wychodz acych z. Graf czȩsto przedstawiamy na rysunku jako zbiór punktów lub kółek) poł aczonych odcinkami lub łukami). Rysunek 1.1: Przykład grafu 2 3 4 6 Przykład 7 < 87&9 :7;7 1.2 Rysunek 1.1 przedstawia graf ze zbiorem wierzchołków 2 3 4 7 = i zbiorem krawȩdzi 2 3 >? 2 >? 2 )@ 2? 3 4 >? 4 >? 4 >@ )@ )@ A. 3

6 6 6 6 4 Rozdział 1. Grafy nieskierowane) Stopień wierzchołkẃ 2 i wynosi 4, wierzchołki 4 i 6 s a stopnia 3, wierzchołki 3, i stopnia 2. Lemat 1.3 Niech., bȩdzie dowolnym grafem z krawȩdziami. Wtedy Dowód: Jeżeli policzymy wszystkie krawȩdzie wychodz ace ze wszystkich wierzchołków grafu, to z jednej strony mamy sumȩ A, a z drugiej ponieważ każda krawȩdz jest liczona dwa razy, raz jak liczymy krawȩdzie wychodz ace z i drugi raz jak liczymy krawȩdzie wychodz ace z. Wniosek 1.4 Liczba wierzchołków o nieparzystych stopniach jest parzysta... Graf nazywamy podgrafem grafu oraz., jeżeli Przykład 1. Grafy przedstawione na rysunkach 1. i 1.6 s a podgrafami grafu z rysun ; ku 1.1. Graf ;<> < z rysuku 1. zawiera sześć wierzchołków 2 3 4 i trzy krawȩdzie >. 2 )@ 3 4 )@ 4. Graf ; z rysuku 1.6 zawiera siedem wierzchołków 2 3 4 i piȩć krawȩdzi 2 3 >? 2 >? 2 )@ 2 )@ 3 4?. Graf pełny o wierzchołkach, oznaczany przez, jest to graf z wierzchołkami, w którym każde dwa wierzchołki poł aczone s a krawȩdzi a. Rysunek 1.2: a) Graf pełny. b) Graf pełny dwudzielny a b a b c d c d e f e a) b) f + Graf :7 & jest dwudzielny, jeżeli zbiór jego wierzchołków można rozbić na dwie czȩści 7 :7! #",, tak, że każda krawȩdź ma końce w obu zbiorach i 7. Pełny >7?? graf dwudzielny $ ma zbiór wierzchołków rozbity na dwa podzbiory: 7 $ &%7??'% i ), a %,+A8.102 krawȩdzie ł acz a każdy wierzchołek z z każdym wierzchołkiem z, czyli 3.

1.1 Izomorfizm grafów. Izomorfizmem grafu na graf nazywamy funkcjȩ wza spełniaj ac a warunek: wtedy i tylko jemnie jednoznaczn a 1.1. Izomorfizm grafów 0 wtedy, gdy. Jeżeli taka funkcja istnieje, to mówimy, że grafy i s a izomorficzne. Łatwo sprawdzić, że izomorfizm grafów jest relacj a równoważności. Przykład 1.6 Rysunki 1.3a i 1.3b przedstawiaj a ten sam graf ). ze zbiorem wierzchołków < 2 3 4 = oraz zbiorem krawȩdzi 2 3 >? 2 4 >@ 2 >@ 3 4 Graf >., z rysunku 1.4a jest izomorficzny z grafem. Izomorfizmem z na jest funkcja określona nastȩpuj aco: 2 4 3 3,, 4 ; 2,. Graf z rysunku 1.4b nie jest izomorficzny z grafami i. Graf wierzchołek stopnia jeden, a w grafie takiego wierzchołka nie ma. zawiera Rysunek 1.3: Rysunki a) i b) przedstawiaj a ten sam graf a b a d c d b a) b) c Rysunek 1.4: a) Graf izomorficzny z. b) Graf nieizomorficzny z a b a b c d c a) b) d Jeżeli mamy izomorfizm grafu. na graf, to możemy powiedzieć, że jest takim samym grafem co tylko ze zmienionymi nazwami wierzchołków. = =. Twierdzenie 1.7 Jeżeli grafy s a izomorficzne, to:. i

7 6 6 6 6 Rozdział 1. Grafy nieskierowane) a) i maj a tyle samo wierzchołków, 8, b) i maj a tyle samo krawȩdzi, 8, c) Dla każdego, i maj a tyle samo wierzchołków stopnia. Dowód: a) wynika bezpośrednio z definicji. b) Niech bȩdzie izomorfizmem z na <. Ale :@ określa 01 także wzajemn a jednoznaczność pomiȩdzy zbiorem krawȩdzi " & 01.& c) Udowodnimy, że jeżeli jest stopnia, to i jest stopnia. Wiȩc odwzorowuje wierzchołki stopnia na wierzchołki stopnia. 7 Niech 0)7@,..., 01,..., bȩd a wszystkimi wierzchołkami z poł aczonymi krawȩdziami z s a wszystkimi wierzchołkami z poł aczonymi krawȩdziami. Wtedy z. 1.2 Drogi i cykle Droga 0 lub 0 >. 7 ścieżka w grafie jest to ci ag wierzchołków??, taki, że dla każdego ) 7, wierzchołki ) 7, s a poł aczone krawȩdzi a, czyli,) 7. O drodze???. mówimy, że ł aczy wierzchołki i. Mówimy także, że wierzchołek 7 jest osi agalny z wierzchołka. Droga jest zamkniȩta jeżeli. Droga jest prosta, jeżeli wszystkie wystȩpuj ace w niej wierzchołki s a różne. Drogȩ.>7?? nazywamy cyklem jeżeli 7???, oraz wszystkie wierzchołki s a różne. Przykład 1.8 W grafie z rysunku 1.1 ci ag, 2,, 2, 3, 4, 6 jest drog a, a ci ag 2,,,, 2 jest cyklem. Ci ag 2 2 3 4 2 jest drog a zamkniȩt a, ale nie jest cyklem. Graf " jest spójny, jeżeli dla każdych dwóch wierzchołków, istnieje ścieżka ł acz aca i. Składowa spójności to maksymalny spójny podgraf grafu. Zauważmy, że w zbiorze wierzchołków = grafu istnieje relacja osi agalności: i s a w relacji jeżeli lub jest osi agalny z. Relacja ta jest relacj a równoważności i dzieli zbiór wierzchołków grafu na składowe spójności. Przykład 1.9 Graf z rysunku 1.1 jest spójny, zawiera jedn a składow a spójności cały graf). Graf z rysunku 1. nie jest spójny i zawiera trzy składowe spójności: ze zbiorem wierzchołków 2 ze zbiorem wierzchołków 3 4 z jednym wierzchołkiem i jedn a krawȩdzi a 2 i dwoma krawȩdziami 3 4 i bez krawȩdzi. Lemat 1.10 Jeżeli istnieje droga ł acz aca wierzchołki i, %, to istnieje też droga prosta ł acz aca i. i 4,

6 6 1.3. Drzewa 7 Rysunek 1.: Graf z trzema składowymi spójności 2 3 4 6 Dowód: Niech < ) 7???., bȩdzie najkrótsz a drogȩ ł acz ac a i. Droga ta jest prosta. Przypuśćmy bowiem, że ) +, dla jakiegoś 0 3 ; mielibyśmy wtedy krótsz a drogȩ?? + 7??@. ', ł acz ac a i, wbrew założeniu. Dowolne dwa wierzchołki w cyklu mog a być poł aczone dwoma drogami prostymi. Na przykład w cyklu 2 3 4 2 na rysunku 1.1, wierzchołki 2 i 4 ł aczy droga 2 3 4 oraz droga 2 4. Tak, wiȩc, jeżeli 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. % Lemat 1.11 Jeżeli w grafie istniej a dwa wierzchołki i, które można poł aczyć dwoma różnymi drogami prostymi, to w grafie istnieje cykl. + Dowód: Niech >7A??@. + %, '%7A??@%!+ >7, % bȩd a %7 dwoma rożnymi prostymi drogami ł acz acymi i. Możemy założyć, że w przeciwnym przypadku możemy usun ać wspólny pocz atek obu dróg). Niech bȩdzie pierwszym wierzchołkiem 7?? po % % 7??'%, który wystȩpuje w drodze $ ) %,+, i niech. Wierzchołki 7 % >% 7??'% )??@. % +'% + 7???'% 7 % nie wystȩpuj a w drodze $ i droga tworzy cykl w drodze tej wystȩpuj a conajmniej trzy różne wierzchołki 7 % 7, oraz ). Z tego lematu wynika, że graf jest acykliczny nie ma cykli) wtedy i tylko wtedy, gdy każde dwa wierzchołki grafu można poł aczyć co najwyżej jedn a drog a prost a. 1.3 Drzewa Definicja 1.12 Spójny i acykliczny bez cykli) graf to drzewo. Z rozważań z poprzedniego podrozdziału wynika: Lemat 1.13 Graf jest drzewem wtedy i tylko wtedy, gdy każde dwa jego wierzchołki można poł aczyć dokładnie jedn a prost a drog a.

8 Rozdział 1. Grafy nieskierowane) Rysunek 1.6: Przykład drzewa 2 3 4 6 Twierdzenie 1.14 Nastȩpuj ace trzy warunki s a równoważne: a) Graf jest drzewem. b) c) Dowód: 2 3 jest acykliczny, ale dodanie dowolnej krawȩdzi psuje acykliczność; dodana krawȩdź wraz z innymi krawȩdziami grafu tworzy cykl. jest spójny, ale usuniȩcie dowolnej krawȩdzi psuje spójność; to znaczy bez krawȩdzi nie ma drogi ł acz acej i.,.# Ponieważ jest drzewem, wiȩc jest acykliczny, przypuśćmy, że dodanie krawȩdzi nie dodaje cyklu w grafie, ale to oznacza, że w grafie nie ma drogi ł acz acej i. W przeciwnym przypadku mielibyśmy dwie drogi proste z do : jedną, która była w drzewie i drugą złożoną tylko z dodanej krawędzi, a więc na podstawie lematu 1.11 dodanie krawȩdzi zamykałoby cykl. Mamy sprzeczność, bo jako drzewo jest spójny. 3 2 Trzeba pokazać, że jest spójny. Przypuśćmy, że nie jest, i że nie ma drogi,.# ł acz acej wierzchołki i. Ale wtedy dodanie krawȩdzi nie dodaje cyklu gdyby taki cykl,.# powstał, to po usuniȩciu krawȩdzi z cyklu mielibyśmy drogȩ prost a łacz ac a i ). 2 4 jako drzewo jest spójny. Przypuśćmy, że odjȩcie krawȩdzi nie psuje spój ności. To znaczy, że w grafie istniały dwie drogi proste ł acz ace i, czyli na podstawie Lematu 1.11 w grafie jest cykl; sprzeczność. 4 2 Trzeba pokazać, że w nie ma cyklu. Gdyby w istniał cykl, to usuniȩcie dowolnej krawȩdzi tego cyklu nie psuje spójności; sprzeczność. Lemat 1.1 W drzewie z wierzchołkami mamy krawȩdzi. Dowód: Przez indukcjȩ ze wzglȩdu na liczbȩ wierzchołków. Jeżeli drzewo ma jeden wierzchołek, to nie ma żadnych krawȩdzi.

1.4. Przeszukiwanie grafów 9 Załóżmy teraz, że twierdzenie zachodzi dla każdego drzewa maj acego mniej niż wierzchołków 01 i niech drzewo ma wierzchołków. W istnieje wierzchołek stopnia. Rzeczywiście, )7 weźmy drogȩ prost a w 7 o maksymalnej długości???.. Wierzchołek jest w grafie poł aczony tylko z, bo inaczej mielibyśmy cykl lub dłuższ a drogȩ prost a. Usuńmy teraz z grafu wierzchołek i prowadz ac a do niego krawȩdź. Otrzymany graf jest spójny i acykliczny ma wierzchołków i z założenia indukcyjnego krawȩdzi, czyli w grafie było krawȩdzi. bȩdzie grafem z wierzchołkami, wtedy nastȩpuj ace trzy wa Twierdzenie 1.16 Niech runki s a równoważne: a) Graf b) jest drzewem. jest acykliczny i posiada c) jest spójny i posiada krawȩdzi. krawȩdzi. Dowód: Na podstawie lematu 1.1 z a) wynika b) i c). 3 2 jest acykliczny, przypuśćmy, że nie jest drzewem. Wtedy na podstawie twierdzenia 1.14 można do niego dodać jak aś krawȩdź nie psuj ac acykliczności. Jeżeli tak powstały graf nie jest drzewem, to dodajemy kolejne krawȩdzie, aż dojdziemy do acyklicznego grafu, w którym już żadnej krawȩdzi nie można dodać bez dodania cyklu. Tak powstały graf jest drzewem, ma wierzchołków i wiȩcej niż krawȩdzi. Doszliśmy wiȩc do sprzeczności z lematem 1.1. 4 2 jest spójny, przypuśćmy, że nie jest drzewem. Wtedy na podstawie twierdzenia 1.14 można z niego usun ać jak aś krawȩdź nie psuj ac spójności. Jeżeli tak powstały graf nie jest drzewem, to usuwamy kolejne krawȩdzie, aż dojdziemy do spójnego grafu, z którego już żadnej krawȩdzi nie można usun ać bez popsucia spójności. Tak powstały graf jest drzewem, ma wierzchołków i mniej niż sprzeczności z lematem 1.1. krawȩdzi. Doszliśmy wiȩc do Z powyższego dowodu wynika, że spójny graf z wierzchołkami nie może mieć mniej niż krawȩdzi, czyli drzewo to spójny graf z minimaln a liczb a krawȩdzi. Podobnie, jeżeli graf ma wierzchołków i jest acykliczny, to nie może mieć wiȩcej niż krawȩdzi, czyli drzewa to grafy acykliczne z maksymaln a liczb a krawȩdzi. Przykład 1.17 W drzewie z rysunku 1.6 nie można usun ać żadnej krawȩdzi bez rospójnienia grafu. Nie można też dodać żadnej krawȩdzi tak, aby nie powstał cykl. W grafie z rysunku 1.1 można usun ać krawȩdź 2 3 i graf nadal bȩdzie spójny. Do grafu z rysunku 1. można dodać krawȩdź 2 3 i nie powstanie żaden cykl. 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żna zastosować do przeszukiwania grafów.

10 Rozdział 1. Grafy nieskierowane) Algorytm przeszukiwania grafu w gł ab. Dane wejściowe: graf =. oraz wierzchołek pocz atkowy ; odwiedzamy i wkładamy go na STOS; zaznaczamy jako wierzchołek odwiedzony, dopóki STOS nie jest pusty, powtarzamy: jeżeli jest wierzchołkiem na wierzchu STOSU, to sprawdzamy, czy istnieje wierzchołek, który jest poł aczony krawȩdzi a z wierzchołkiem i nie był jeszcze odwiedzony, jeżeli takie siȩ znajdzie, to odwiedzamy, wkładamy go na wierzch STO SU i zaznaczamy jako wierzchołek odwiedzony, jeżeli takiego nie ma, to zdejmujemy ze STOSU i cofamy siȩ do wierzchołka bȩd acego na STOSIE pod spodem. Rysunek 1.7: Przykład grafu 2 3 4 6 Przykład 1.18 Zastosujmy algorytm przeszukiwania w gł ab do grafu z rysunku 1.7. Poniższa tabela pokazuje jaki wierzchołek jest odwiedzany i jaka jest zawartość stosu po każdej kolejnej iteracji pȩtli algorytmu przeszukanie zaczynamy od wȩzła 2 ). Przyjȩto zasadȩ, że jeżeli jest kilka wierzchołków do wyboru, to wybieramy ten, którego nazwa stoi wcześniej w alfabecie.

1.4. Przeszukiwanie grafów 11 Wierzchołek a b c d c g f g c b e b a STOS a ab abc abcd abc abcg abcgf abcg abc ab abe ab a W metodzie przeszukiwania w gł ab po każdym kroku algorytmu wierzchołki znajduj ace siȩ na stosie tworz a drogȩ od wierzchołka wejściowego do wierzchołka aktualnie odwiedzanego. Udowodnimy teraz, że algorytm odwiedzi wszystkie wierzchołki osi agalne z wierzchołka pocz atkowego. Przypuśćmy bowiem, że w grafie istnieje wierzchołek % osi agalny z, ale nie odwiedzony przez algorytm. Skoro % jest osi agalny z, to istnieje droga ' >7A??@. % Ponieważ był odwiedzony, a nie, to na tej drodze mamy dwa s asiednie wierzchołki oraz 7 ) ) takie, że był odwiedzony, a 7 nie. W pewnym momencie algorytmu wierzchołek był na stosie, a potem został z niego zdjȩty, ponieważ algorytm kończy pracȩ dopiero po zdjȩciu wszystkich ) wierzchołków ze stosu. Zastanówmy ) siȩ teraz nad krokiem algorytmu, w którym jest zdejmowany ze stosu. Ale nie mógł być zdjȩty ze stosu, ponieważ istnieje jego s asiad 7, który nie był odwiedzony. Aby udowodnić, że algorytm zawsze siȩ zatrzyma wystarczy zauważyć, że w każdej iteracji pȩtli albo jakiś wierzchołek jest wkładany na stos, albo jakiś jest zdejmowany ze stosu. Z drugiej strony każdy wierzchołek jest tylko raz wkładany na stos bo wkładane s a tylko wierzchołki nieodwiedzane). Mamy wiȩc nie wiȩcej niż iteracji pȩtli, a ponieważ w każdej pȩtli algorytm wykonuje tylko kilka kroków, wiȩc czas działania. algorytmu jest rzȩdu 8 Algorytm przeszukiwania wszerz.. Dane wejściowe: graf oraz wierzchołek pocz atkowy ; odwiedzamy, wkładamy go do KOLEJKI; zaznaczamy jako wierzchołek odwiedzony, dopóki KOLEJKA nie jest pusta, powtarzamy: bierzemy jeden wierzchołek z pocz atku KOLEJKI,

" 12 Rozdział 1. Grafy nieskierowane) odwiedzamy wszystkie wierzchołki, które nie były jeszcze odwiedzane, a s a poł aczone krawȩdzi a z wierzchołkiem, wkładamy je na koniec kolejki i zaznaczamy jako odwiedzone. Przykład 1.19 Poniżej przedstawiono odwiedzane wierzchołki oraz zawartość kolejki po każdej kolejnej iteracji pȩtli algorytmu przeszukiwania wszerz dla grafu przedstawionego na rysunku 1.7 przeszukanie zaczynamy od wȩzł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ści od wierzchołków bȩd acych najbliżej wierzchołka pocz atkowego do wierzchołków bȩd acych dalej. 1. Liczenie składowych spójności Algorytmu przeszukiwania grafów można użyć do liczenia składowych spójności. Algorytm liczenia składowych spójności grafu Dane wejściowe: graf. Dane wyjściowe: liczba składowych spójności. lsp:=0;. Powtarzaj dopóki s a jeszcze nieodwiedzone wierzchołki w grafie: Weź 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 Definicja. 1.20 Drzewo spinaj ace rozpinaj ace) grafu, to dowolne drzewo spełniaj ace warunek zauważmy, że ma taki sam zbiór wierzchołków co ). Przykład 1.21 Drzewo z rysunku 1.6 jest drzewem spinaj acym dla grafu z rysunku 1.1.

1.6. Drzewa spinaj ace 13 Jeżeli graf nie jest spójny, to nie ma drzewa spinaj acego. Z drugiej strony. Twierdzenie 1.22 Każdy 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. Algorytm konstruowania ==. drzewa spinaj acego przy przeszukiwania grafu w gł ab. Dane wejściowe: graf oraz wierzchołek pocz atkowy ; Dane wyjściowe: drzewo spinaj ace.. na pocz atku drzewo spinaj ace nie zawiera żadnych krawȩdzi: " odwiedzamy i wkładamy go na STOS; zaznaczamy jako wierzchołek odwiedzony, dopóki STOS nie jest pusty, powtarzamy: jeżeli jest wierzchołkiem na wierzchu STOSU, to sprawdzamy, czy istnieje wierzchołek, który jest poł aczony krawȩdzi a z wierzchołkiem i nie był jeszcze odwiedzony, jeżeli takie siȩ znajdzie, to odwiedzamy, wkładamy go na wierzch STO SU i zaznaczamy jako wierzchołek odwiedzony, krawȩdź dodajemy do drzewa spinaj acego: jeżeli takiego nie ma, to zdejmujemy ze STOSU i cofamy siȩ do wierzchołka bȩd acego pod spodem. Rysunek 1.8: Drzewo spinaj ace dla grafu z rysunku 1.7 2 3 4 6 Przykład 1.23 Rysunek 1.8 przedstawia drzewo spinaj ace utworzone przez powyższy algorytm dla grafu z rysunku 1.7

6 6!! 7 3 7 14 Rozdział 1. Grafy nieskierowane) Pokażemy teraz, że algorytm jest poprawny, czyli że tak utworzony graf jest drzewem. Zauważmy, że jeżeli wierzchołek poza pocz atkowym) jest wkładany na stos, to do dokładana jest krawȩdź ł acz aca z wierzchołkiem znajduj acym siȩ na stosie pod nim. Dlatego w każdym momencie wierzchołki na stosie stanowi a drogȩ w, ł aczy ona wierzchołek pocz atkowy z aktualnie odwiedzanym wierzchołkiem. Ponieważ graf jest spójny, to algorytm odwiedzi wszystkie wierzchołki grafu i jest grafem spójnym. Z każd a krawȩdzi a z możemy zwi azać wierzchołek, który jest wkładany na stos w momencie jej powstania. Ponieważ, każdy wierzchołek jest wkładany na stos tylko raz, mamy w krawȩdzi z pocz atkowym wierzchołkiem nie jest zwi azana żadna krawȩdź). Tak wiȩc jest spójny, zawiera wszystkie wierzchołki grafu i ma krawȩdzi, jest wiȩc drzewem spinaj acym. Podobnie można przerobić algorytm przeszukiwania grafu wszerz. Mówi ac w skrócie do drzewa należ a te krawȩdzie, którymi przeszedł algorytm przeszukuj ac graf. 1.7 Fundamentalny zbiór cykli Niech bȩdzie spójnym grafem, a jego drzewem spinaj acym. Krawȩdzie drzewa bȩdziemy nazywali gałȩziami, a krawȩdzie nie należ ace do drzewa ciȩciwami. Z twierdzenia 1.14 wynika, że dodanie dowolnej ciȩciwy do drzewa utworzy cykl. Oznaczmy ten cykl przez oczywiście ). Zbiór tak utworzonych cykli stanowi fundamentalny zbiór cykli. Jak za chwilȩ pokażemy, każdy inny cykl w grafie jest różnic a symetryczn a cykli fundamentalnych. W tym podrozdziale cykle bȩdziemy traktować jako zbiory krawȩdzi. 3 4 Przykład 1.24 Rozpatrzmy graf z rysunku 1.77 i jego drzewo spinaj ace z rysunku 1.8. W tym przypadku gałȩziami s a krawȩdzie: 2 3 <,, 4 ', 4,, 3 7, a ciȩciwami krawȩdzie 2 4, 2, 3, 2. Fundamentalny zbiór cykli zawiera cykle: 7, 7! 2 3 4?2 7, 2 3 4 2 A! 3, 4 7 6, 2 3 2, Zbiór krawȩdzi grafu nazywamy pseudocyklem, jeżeli każdy wierzchołek grafu jest parzystego stopnia. Przykładami pseudocykli s a cykle i zbiór pusty. Lemat 1.2 Różnica symetryczna dowolnej liczby pseudocykli jest pseudocyklem. 7 Dowód: Wystarczy pokazać, że różnica symetryczna dwóch pseudocykli, < jest pseudocyklem. 7 Dla dowolnego wierzchołka zbiór krawȩdzi przyległych do w jest różnic a symetryczn a krawȩdzi przyległych do w i w. A ponieważ s a to zbiory parzystej mocy, wiȩc ich różnica symetryczna też jest parzystej mocy. Rzeczywiście dla dowolnych dwóch zbiorów i mamy > #

3 1.7. Fundamentalny zbiór cykli 1 Weźmy teraz dowolny cykl lub pseudocykl) grafu i utwórzmy róznicȩ Jest to różnica symetryczna cykli fundamentalnych utworzonych z ciȩciw wchodz acych do. Pokażemy, że W tym celu rozważmy zbiór Na podstawie lematu 1.2, zbiór ten jest pseudocyklem. Z drugiej strony nie zawiera żadnych ciȩciw, ponieważ każda ciȩciwa albo nie należy do żadnego składnika tej różnicy, jeżeli, albo należy do dokładnie dwóch: do i do. Zatem zbiór jest podzbiorem drzewa, i jest pusty, bo inaczej musiałby zawierać wierzchołki stopnia jeden, co jest sprzeczne z faktem, że jest pseudocyklem. Zatem Udowodniliśmy zatem nastȩpuj ace: Twierdzenie 1.26 Każdy cykl pseudocykl) jest różnic a pewnej liczby cykli fundamentalnych. Przykład 1.27 Kontynuacja przykładu 1.24) Cykl symetryczn a cykli i. Rzeczywiście Cykl 7 Rzeczywiście 7 > A 7, A = = 7, 7 2 4 6 7 7 ' 7 7 ; A< 2 4 2 jest różnic a 2 jest różnic a symetryczn a cykli, i. A A A 7 ; Lemat 1.28 Jeżeli graf jest spójny oraz posiada wierzchołków i krawȩdzi, to ma cykli fundamentalnych. Dowód: Wynika, to z faktu, że drzewo spinaj ace ma krawȩdzi Jeżeli 7 graf nie jest spójny, to każd a składow a spójności możemy traktowć osobno. Niech,,..., bȩd a składowymi spójności grafu i niech składowa ma wierzchołków i krawȩdzi. Dla każdej składowej mamy drzewo spinaj ace z krawȩdziami oraz cykli fundamentalnych. Niech zbiór cykli fundamentalnych całego grafu bȩdzie sum a cykli fundamentalnych składowych. Każdy cykl w grafie należy

16 Rozdział 1. Grafy nieskierowane) w całości do jednej składowej spójności, bo sam jest spójny, i może być przedstawiony jako różnica symetryczna cykli fundamentalnych. W całym grafie mamy wiȩc 7, cykli fundamentalnych. Udowodniliśmy wiȩc nastȩpuj ace Twierdzenie 1.29 W dowolnym grafie mamy gdzie jest liczb a wierzchołków, Aby przekonać siȩ, czy graf graf nie ma cykli. cykli fundamentalnych, liczb a krawȩdzi, a liczb a składowych spójności. ma cykl wystarczy policzyć i jeżeli, to 1.8 Minimalne drzewo spinaj ace % ma długość Wyobraźmy sobie, że każda krawȩdź w grafie. Na przykład, wierzchołki grafu s a miejscowościami i długość krawȩdzi jest odległości a miejscowości. Chcemy teraz skonstruować minimalne drzewo spinaj ace, czyli drzewo spinaj ace. z minimaln a sum a długości krawȩdzi Algorytm budowy minimalnego drzewa spinaj acego. % Dane wejściowe: graf z funkcj a wagi % Dane wyjściowe: minimalne drzewo spinaj ace =.. " Posortuj krawȩdzie grafu według długości, od najkrótszej do najdłuższej. Dla każdej krawȩdzi wstaw j a do pod warunkiem, że nie tworzy ona cyklu z krawȩdziami, które już s a w. Przykład 1.30 Po zastosowaniu powyższego algorytmu do grafu z rysunku 1.9a otrzymamy drzewo przedstawione na rysunku 1.9b Najpierw pokażemy, że tak utworzony graf jest drzewem spinaj acym. Po każdej iteracji pȩtli, graf nie zawiera cyklu, wiȩc na końcu też jest acykliczny. Przypuśćmy, że po zakończeniu algorytmu nie jest 7? spójny. Istniej a wiȩc w dwa wierzchołki i, które s a poł aczone w drog a bo jest spójny), ale które nie s a poł aczone w 7. Na drodze tej s a wiȩc dwa s asiednie wierzchołki i, które nie s a poł aczone w 7 drog a. Ale wtedy dodanie krawędzi do drzewa nie tworzy w 7 do, sprzeczność. nim cyklu i algorytm powinien dodać krawȩdź.

1.9. Cykle i drogi Eulera 17 Rysunek 1.9: a) Graf z wagami, b) Jego minimalne drzewo spinaj ace 16 a b a b 13 6 7 13 6 7 c 9 d c d 11 8 10 11 8 e 19 f e a) b) f Pokażemy teraz, że jest minimalnym : drzewem spinaj acym. Przypuśćmy, że nie jest minimalne. Niech bȩdzie takim minimalnym drzewem, które ma z najwiȩksz a liczbȩ wspólnych krawȩdzi. Niech bȩdzie krawȩdzi a z minimaln a wag a, która należy do, ale nie należy do. Jeżeli dodamy do to otrzymamy cykl. Niech bȩdzie krawȩdzi a w tym cyklu, która należy do, ale nie należy do. Niech bȩdzie drzewem, które powstaje z po zamianie na. powstaje przez usuniȩcie % z grafu.. Jest to graf spójny z krawȩdziami, czyli drzewo. % Jeżeli %, to drzewo % byłoby drzewem z mniejsz a od wag a, wbrew minimalności. Jeżeli, to drzewo byłoby minimalnym drzewem z wiȩksz a od liczb a wspólnych z % % krawȩdzi, znowu sprzeczność. Mamy wiȩc. Jeżeli dodamy. teraz krawȩdź do, to otrzymamy cykl to może być inny cykl niż ten w % ). W tym cyklu istnieje krawȩdź %, która należy do, ale nie do. Przypuśćmy, że. W takim przypadku algorytm powinien wstawić krawȩdź do drzewa, bo w momencie rozpatrywania w drzewie nie ma jeszcze i wstawienie nie zamyka cyklu. Wynika, to z faktu, że graf jest drzewem, wiȩc krawȩdź nie tworzy cyklu z krawȩdziami z % % %. Mamy wiȩc co jest sprzeczne z faktem, że była najlżejsz a krawȩdzi a z i nienależ ac a do. 1.9 Cykle i drogi Eulera Droga Eulera to droga, która przechodzi przez każd a krawȩdź grafu dokładnie jeden raz. Cykl Eulera to taka droga zamkniȩta, w której każda krawȩdź grafu wystȩpuje dokładnie raz. Euler w 18. wieku pokazał, że istnieje dość prosta charakteryzacja grafów z drog a lub cyklem Eulera. Mianowicie spójny graf posiada cykl Eulera, wtedy i tylko wtedy gdy każdy jego wierzchołek jest parzystego stopnia, a posiada drogȩ Eulera jeżeli co najwyżej

6 18 Rozdział 1. Grafy nieskierowane) dwa jego wierzchołki s a stopnia nieparzystego. Pamiȩtamy, wniosek 1.4, że w każdym grafie liczba wierzchołków nieparzystego stopnia jest parzysta. Tak wiȩc graf z drog a Eulera ma dwa lub zero wierzchołków nieparzystego stopnia. Przykład 1.31 Graf na rysunku 1.1 ma dwa wierzchołki nieparzystego stopnia 4 i 6 i posiada drogȩ Eulera 4 3 2 4 2 Wyobraźmy sobie, że idziemy wzdłuż krawȩdzi grafu, i po przejściu każdej krawȩdzi usuwamy j a z grafu. Przechodz ac przez jakiś wierzchołek usuwamy dwie krawȩdzie, t a, któr a weszliśmy do wierzchołka, i t a, któr a go opuściliśmy. Dlatego, jeżeli po dojściu do jakiegoś wierzchołka, nie ma już krawȩdzi z niego odchodź acych, to albo doszliśmy do wierzchołka pocz atkowego, albo do wierzchołka nieparzystego stopnia. Z tego wynika, że jeżeli w grafie istnieje droga Eulera, to mog a w nim być co najwyżej dwa wierzchołki nieparzystego stopnia, pocz atek i koniec drogi, a jeżeli droga Eulera jest zamkniȩta i stanowi cykl Eulera, to wszystkie wierzchołki w grafie s a parzystego stopnia. Pokażemy teraz, że s a to także warunki wystarczaj ace. Zaczniemy od cyklu Eulera. Twierdzenie 1.32 Spójny graf posiada cykl Eulera wtedy i tylko wtedy, gdy każdy jego wierzchołek jest parzystego stopnia. Dowód: Konieczność warunku udowodniliśmy wyżej. Teraz pokażemy, że jest to warunek wystarczaj acy. Załóżmy, że każdy wierzchołek jest parzystego stopnia. Niech bȩdzie najdłuższ a pod wzglȩdem liczby krawȩdzi drog a w grafie bez powtarzania krawȩdzi. Z rozważań zrobionych wyżej wynika, że jest to droga zamkniȩta. Przypuśćmy, że droga ta nie zawiera jeszcze wszystkich krawȩdzi grafu. Ponieważ graf jest spójny, wiȩć istnieje wierzchołek na tej drodze, od którego odchodzi krawȩdź nie należ aca do. Możemy teraz utworzyć dłuższ a drogȩ bez powtarzania krawȩdzi: zawiera ona i potem idzie wzdłuż. Jest to sprzeczne z założeniem, że była najdłuższ a drog a. Twierdzenie 1.33 Spójny graf posiada drogȩ Eulera wtedy i tylko wtedy, gdy posiada co najwyżej dwa wierzchołki nieparzystego stopnia. Dowód: Konieczność warunku pokazano wyżej. Teraz pokażemy, że jest to warunek wystarczaj acy. Ponieważ graf nie może posiadać tylko jednego wierzchołka stopnia niepa rzystego, to wystarczy rozważyć graf z dwoma wierzchołkami i nieparzystego stopnia. Dodajmy do grafu nowy wierzchołek i poł aczmy go krawȩdziami z i. Teraz każdy wierzchołek jest stopnia parzystego i posiada cykl Eulera. Po usuniȩciu z niego nowych krawȩdzi i wierzchołka otrzymamy drogȩ Eulera w pierwotnym grafie. Powyższy dowód, chociaż krótki, ma tȩ wadȩ, że nie daje dobrego algorytmu znajdowania drogi Eulera. Nie sposób przegl ad ać wszystkich możliwych dróg, bo jest ich bardzo dużo. Poniżej pokażemy dwa znacznie szybkie algorytmy znajdowania cyklu Eulera. Algorytm wyszukiwania cyklu Eulera Dane wejściowe: spójny graf ze wszystkimi wierzchołkami parzystego stopnia. Zaczynamy od dowolnego wierzchołka. 6.

0 1.9. Cykle i drogi Eulera 19 Powtarzamy, aż do wyczerpania krawȩdzi: Jeżeli z bierz acego wierzchołka nie odchodzi żadna krawȩdź, to koniec algorytmu. Jeżeli z bierz acego wierzchołka odchodzi tylko jedna krawȩdź, to przechodzimy wzdłuż tej krawȩdzi do nastȩpnego wierzchołka, usuwamy t a krawȩdź i wierzchołek z grafu. Jeżeli z odchodzi wiȩcej niż jedna krawȩdź, to wybieramy t a krawȩdź, której usuniȩcie nie rozspójnia grafu; przechodzimy wzdłuż tej krawȩdzi do nastȩpnego wierzchołka, usuwamy t a krawȩdź z grafu. Rysunek 1.10: Przykład grafu z cyklem Eulera 2 3 4 6 Przykład 1.34 W grafie z rysunku 1.10 wszystkie wierzchołki s a parzystego stopnia. Prześledźmy, jak działa powyższy algorytm. Zaczynamy od wierzchołka 2 i przyjmijmy, że w razie wyboru algorytm wybierze krawȩdź do wierzchołka z wcześniejsz a według alfabetu) liter a. Tak wiȩc 2 przejdzie do 3 potem do 4 i do. Rysunek 1.11 przedstawia nasz graf po tych trzech krokach, usuniȩciu odwiedzanych krawȩdzi i wierzchołka 4 z którego nie odchodz a już żadne krawȩdzie). Teraz algorytm nie może wybrać krawȩdzi 2 ponieważ usuniȩcie tej krawȩdzi roz spójni graf. Zamiast tego algorytm powinien wybrać krawȩdź i przejść do wierzchołka, a potem do. Teraz znowu nie powinien iść do 6 tylko do, a potem już bez problemów do końca cyklu Eulera: 3 0,,, 6,, 2. Pokażemy teraz poprawność tego algorytmu. Przypuśćmy, że po kilku krokach jesteśmy w wierzchołku, z którego odchodzi kilka krawȩdzi. Pokażemy, że wśród tych krawȩdzi co najwyżej jedna jest zła jej usuniȩcie może rozspójnić graf). Z przebiegu algorytmu wynika, że graf w aktualnej postaci po usuniȩciu być może jakiś krawȩdzi lub wierzchołków) jest nadal spójny i co najwyżej dwa wierzchołki w nim s a nieparzystego stopnia i % co zachodzi jeżeli ). Wiȩc posiada on drogȩ Eulera. Idźmy

0 20 Rozdział 1. Grafy nieskierowane) Rysunek 1.11: Graf po przejściu trzech krawȩdzi 2 3 6 t a drog a zaczynaj ac od. Droga ta kończy siȩ w lub i przechodzi kilka razy przez. Mamy wiȩc kilka pȩtli, które zaczynaj a siȩ i kończ a w i być może końcowy odcinek zaczynaj acy siȩ w i kończ acy w. Otóż tylko pierwsza krawȩdź tego ostatniego odcinka może rozspójniać graf. Wszystkie inne krawȩdzie wychodz ace z s a czȩściami cykli. Aby udowodnić, że algorytm dobrze działa, trzeba pokazać, że wszystkie krawȩdzie grafu bȩd a odwiedzone. Po każdej iteracji algorytmu graf jest spójny, wiȩc jeżeli z wierzchołka nie odchodz a żadne krawȩdzie, to znaczy, że nie ma już żadnych krawȩdzi w grafie. Powyższy algorytm mimo, że prosty i szybki wymaga sprawdzania, czy usuniȩcie krawȩdzi nie rozspójni grafu. Drugi algorytm wyznaczania cyklu Eulera. Dane wejściowe: spójny graf, w którym wszystkie wierzchołki s a parzystego stopnia. Pomocniczy STOS. Dane wyjściowe: CE cykl Eulera. Zaczynamy od dowolnego wierzchołka i wkładamy go na STOS, Natȩpnie powtarzamy dopóki STOS nie jest pusty Niech bȩdzie wierzchołkiem z wierzchu STOSU jeżeli z odchodz a jakieś nieodwiedzane krawȩdzie, to wybieramy jedn a z nich, przechodzimy na jej drugi koniec, zaznaczamy jako odwiedzon a i jej drugi koniec wkładamy na STOS. Jeżeli wszystkie krawȩdzie odchodz ace z były już odwiedzone, to zdejmujemy ze STOSU, przekładamy na wyjście CE oraz przechodzimy do wierzchołka znajduj acego siȩ pod na STOSIE.

6 1.10. Drogi i cykle Hamiltona 21 Przykład 1.3 Prześledźmy działanie algorytmu na przykładzie z rysunku 1.10. Poniższa tabela zawiera: odwiedzany wierzchołek, stan STOSU oraz stan pliku wyjściowego CE po każdym kroku z pierwszych szesnastu kroków. Krok wierzchołek STOS CE 1 a a 2 b ab 3 c abc 4 d abcd a abcda 6 d abcd a 7 e abcde a 8 f abcdef a 9 g abcdefg a 10 d abcdefgd a 11 g abcdefg ad 12 f abcdef adg 13 h abcdefh adg 14 b abcdefhb adg 1 i abcdefhbi adg 16 f abcdefhbif adg Po szesnastu krokach wszystkie krawȩdzie zostały odwiedzone i teraz STOS krok po kroku zostanie przełożony na wyjście CE. Otrzymamy nastȩpuj acy cykl Eulera: 2 6 0 3 4 3 2 Z algorytmu wynika, że kolejne wierzchołki na obu stosach s a poł aczone krawȩdziami i że każda krawȩdź jako para s asiednich wierzchołków) pojawia siȩ na STOSIE tylko raz. Należy wiȩc tylko pokazać, że wszystkie krawȩdzie znajd a sie na wyjściu. Jeżeli pominiȩto jakieś krawȩdzie, to ponieważ graf jest spójny jakaś nieodwiedzona krawȩdź musi przylegać do wierzchołka, który jest w wynikowym cyklu, ale jest przekładany na wyjście tylko tedy, gdy nie odchodz a od niego już żadne nieodwiedzane krawȩdzie. W każdej iteracji algoryt przechodzi jak aś krawȩdź. Albo wkładaj ac jej koniec na STOS, albo przekładaj ac j a na wyjście CE. A ponieważ każda krawȩdź jest odwiedzana dokładnie dwa razy, raz jak jest wkładana na STOS i drugi raz jak jest przekładana na CE, wiȩc czas działania algorytmu jest proporcjonalny do liczby krawȩdzi w grafie. 1.10 Drogi i cykle Hamiltona Droga Hamiltona to taka droga w grafie, która przechodzi dokładnie raz przez każdy wierzchołek grafu. Cykl Hamiltona to zamkniȩta droga Hamiltona. 2 3 4 Przykład 1.36 Graf z rysunku 1.1 posiada drogȩ Hamiltona, ale nie posiada cyklu Hamiltona. Każdy graf pełny z posiada cykl Hamiltona.

% 22 Rozdział 1. Grafy nieskierowane) Inaczej niż dla cyklu lub drogi Eulera nie jest znane żadne proste kryterium rozstrzygania, czy dany graf posiada drogȩ lub cykl Hamiltona. Nie jest także znany żaden algorytm wyszukiwania drogi lub cyklu Hamiltona działaj acy w czasie wielomianowym. Naiwnym sposobem szukania drogi Hamiltona jest sprawdzanie wszystkich możliwych dróg w grafie, ale algorytm ten jest bardzo czasochłonny, bo mamy około możliwych 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żliw a ścieżk a tak daleko jak to tylko możliwe okładaj ac kolejne odwiedzane wȩzły na stos. W momencie, gdy algorytrm utknie w ślepej uliczce, to cofa siȩ o jeden krok i próbuje innej drogi. Załóżmy, ż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 Dane wejściowe: graf. oraz wierzchołek pocz atkowy ". Dane wyjściowe: droga Hamiltona zaczynaj aca siȩ od, lub informacja, że takiej drogi nie ma. włóż na STOS powtarzaj aż do skutku: jeżeli jest wierzchołkiem na wierzchu STOSU, to szukamy wierzchołka o najniższym możliwie numerze poł aczonego z krawȩdzi a i nie wystȩpuj acy na STOSIE. Jeżeli w poprzedniej iteracji zdjȩto ze STOSU wierzchołek, to % powinien być wiȩkszy od. Jeżeli takie % znajdziemy, to wkładamy je na STOS. Jeżeli wierzchołki na STOSIE tworz a już drogȩ Hamiltona, to koniec algorytmu. Jeżeli takiego % nie znajdziemy, to zdejmujemy ze STOSU. Przykład 1.37 Prześledźmy działanie algorytmu na przykładzie grafu z rysunku 1.1. Poniższa tabela zawiera: odwiedzany wierzchołek, oraz stan STOSU po każdym kolejnym kroku szukanie rozpoczynamy od wierzchołka ).

1.11. Kolorowanie grafów 23 Krok wierzchołek STOS 1 d d 2 a da 3 b dab 4 c dabc f dabcf 6 e dabcfe 7 f dabcf 8 g dabcfg 9 f dabcf 10 c dabc 11 g dabcg 12 f dabcgf 13 e dacgfe Powyższy algorytm mimo, że szybszy od naiwnego algorytmu sprawdzania wszystkich dróg, ma wykładnicz a złożoność czasow a. 1.11 Kolorowanie grafów Chodzi o takie pokolorowanie wierzchołków grafu, żeby wierzchołki poł aczone krawȩdzi a były pokolorowane innymi kolorami i żeby liczba kolorów była jak najmniejsza. Definicja 1.38 Pokolorowanie grafu kolorami jest to funkcja 4 >??@, taka że 4 0 ;% 4 01,.# jeżeli. Najmniejsze takie, że graf można pokolorować 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żliwe kolorowania działa zbyt długo. Także tu mamy algorytm z nawrotami. Algorytm z nawrotami ==. kolorowania wierzchołków grafu Dane wejściowe: graf oraz liczba naturalna. Dane >??@ wyjściowe: pokolorowanie wierzchołków grafu za pomoc a kolorów 4 lub informacja, że takiego pokolorowania nie ma. dla każdego podstaw 4 01 4 0 koloru). włóż pierwszy wierzchołek na STOS, powtarzaj aż do skutku: oznacza, że nie ma jeszcze jeżeli jest wierzchołkiem na wierzchu STOSU, to próbujemy przypisać mu kolor, wiȩkszy od bież acego koloru 4 0, który nie koliduje z kolorami wierzchołków znajduj acych siȩ na STOSIE. Jeżeli to siȩ uda, to wkładamy kolejny wierzchołek na stos. Jeżeli siȩ nie uda, to zdejmujemy ze stosu i podstawiamy 4 :.

4 24 Rozdział 1. Grafy nieskierowane) W tym algorytmie próbujemy kolejnym wierzchołkom przypisać pierwszy z rzȩdu kolor i pokolorowane wierzchołki umieszczamy na stosie. Jak zabrniemy w ślep a uliczkȩ, to cofamy siȩ do poprzedniego wierzchołka na stosie i próbujemy nastȩpnego koloru. Przykład 1.39 Zastosujmy powyżwszy algorytm do grafu z rysunku 1.12, aby znaleźć kolorowanie trzema kolorami. Najpierw każdy wierzchołek dostaje kolor, co oznacza, że nie jest jeszcze pokolorowany. Rysunek 1.12: Przykład grafu 2 3 Zaczynamy od wierzchołka 2. W pierwszych piȩciu krokach algorytm pokoloruje wierzchołki 2, 3, 4, i w nastȩpuj acy sposób: u a b c d e f cu) 1 2 1 2 3 0 a na stosie mamy wierzchołki 2 3 4 ) Teraz algorytm nie może pokolorować wierzchołka, bo jest on poł aczony z 2,,, które s a pokolorowane kolorami 1, 2, 3. Dlatego jest zdjȩte ze stosu: 2 3 4 > Teraz zdejmujemy wierzchołek, bo nie można mu przypisać wyższego koloru, i podstawiamy 4. Teraz zmieniamy kolor na 4 stos. 2 3 4, a nastȩpnie kolorujemy 4 u a b c d e f cu) 1 2 1 3 2 0 2 3 4 ) i wkładamy na W tym momencie pokolorowanie nie jest możliwe, wiȩc zdejmujemy go ze stosu 2 3 4 >

1.11. Kolorowanie grafów 2 Wierzchołek też nie może być pokolorowany wyższym kolorem, wiȩc też go zdejmujemy. 2 3 4 Wierzchołek ma w tym momencie najwyższy kolor 4, więc zmiana koloru nie jest możliwa i zdejmujemy go ze stosu. Mamy teraz nastȩpuj ace kolorowanie u a b c d e f cu) 1 2 1 0 0 0 i stos Teraz zmieniamy kolor 4 na 4 4, 4, 4 2 3 4, a nastȩpnie już bez nawrotów kolorujemy 4. Ostateczne kolorowanie wygl ada tak: u a b c d e f cu) 1 2 3 1 2 3 Jeżeli zastosujemy powyższy algorytm, do pokolorowania grafu pełnego kolorami, to wypróbuje on wszystkie kolorowań dla pierwszych wierzchołków. Pesymistyczny czas działania algorytmu jest wiȩc. Problem kolorowania grafów jest trywialny, jeżeli mamy tylko jeden kolor. Jednym kolorem można pokolorować tylko grafy bez krawȩdzi. Proste jest też kolorowanie grafów dwoma kolorami. Grafy, które można pokolorować dwoma kolorami, to grafy dwudzielne. Grafu nie można pokolorować dwoma kolorami, jeżeli zawiera cykl nieparzystej długości. Poniżej pokażemy, że i na odwrót: jeżeli graf nie ma cyklu nieparzystej długości, to można go pokolorować dwoma kolorami. Poniżej przedstawiamy algorytm kolorowania grafów dwoma kolorami. Dla prostoty zakładamy, że kolorowane grafy s a spójne. Algorytm można łatwo przerobić tak, aby kolorował wszystkie grafy. Algorytm kolorowania grafu dwoma kolorami =. Dane wejściowe: spójny graf. Dane wyjściowe: 1 pokolorowanie wierzchołków grafu za pomoc a dwóch kolorów 4 lub informacja, że takiego pokolorowania nie ma. weź pierwszy wierzchołek, pokoloruj go pierwszym kolorem 4. powtarzaj aż do skutku: Weź wszystkie wierzchołki, które s a poł aczone krawȩdzi a z jakimś wierzchołkiem pokolorowanym w poprzedniej iteracji i nie maj a jeszcze koloru.. Jeżeli wśród nich żadne dwa nie s a poł aczone krawȩdzi a, to pokoloruj je jednym kolorem innym niż wierzchołki kolorowane w poprzedniej iteracji). Jeżeli wśród nich s a dwa poł aczone krawȩdzi a, to pokolorowanie dwoma kolorami nie jest możliwe.

+ 7 7 + 26 Rozdział 1. Grafy nieskierowane) Kolorowanie otrzymywane w tym algorytmie jest prawidłowe. Niech oznacza wierzchołki kolorowane 0 0 w tej iteracji,. Wierzchołki z s a kolorowane na pierwszy kolor, jeżeli jest = parzyste, i na drugi kolor, jeżeli jest nieparzyste. Zauważmy, że dowolny wierzchołek 7 może być poł aczony krawȩdzi a tylko z wierzchołkami ze zbiorów i. zawiera wszystkie wierzchołki, które s a poł aczone z 7 7 wierzchołkami 3 z i nie miały koloru po pokolorowaniu, tak wiȩc żaden ze zbiorów z 0 nie zawiera wierzchołków poł aczonych z. % Zauważmy, 7,???. że jeżeli dwa wierzchołki i należa do, to istniej a drogi % % oraz '%7???% % + % + + takie, że. Niech, bȩdzie ostatnim wspólnym wierzchołkiem na obu drogach. Ponieważ zbiory s a % 1???%??? rozł aczne, to wspólne wierzchołki musz a mieć te same indeksy. Droga jest drog a z parzyst a liczb a krawȩdzi. Dlatego, jeżeli i s a poł aczone krawȩdzi a, to w grafie mamy cykl nieparzystej długości i pokolorowanie dwoma kolorami nie jest możliwe. Z powyższych rozważań wynika Lemat 1.40 Graf jest dwudzielny może być pokolorowany dwoma kolorami) wtedy i tylko wtedy, gdy nie zawiera cykli nieparzystej długości. Wniosek 1.41 Każde drzewo można pokolorować dwoma kolorami. Nie jest znany algorytm koloruj acy grafy trzema kolorami lub dowoln a wiȩksz a liczb a kolorów) działaj acy w czasie wielomianowym. Ponieważ nie s a znane szybkie algorytmy kolorowania grafów stosuje siȩ heurystyki, czyli algorytmy niedokładne. Na przykład nastȩpuj aca heurystyka Heurystyka kolorowania grafu Posortuj wierzchołki grafu według ich stopni. Dla każdego wierzchołka po kolei przypisz mu najniższy możliwy kolor. W wielu przypadkach heurystyka ta da optymalne rozwi azanie, na przykład dla grafu z rysunku 1.12. 1.12 Hiperkostka Hiperkostka wymiaru 1 jest przedstawiona na rysunku 1.13a. Składa siȩ ona z dwóch wierzchołków 0 i 1 poł aczonych krawȩdzi a. Hiperkostkȩ wymiaru 2 rysunek 1.13b) budujemy z dwóch kostek. W pierwszej kostce numerujemy wierzchołki przez 00 i 01 dopisujemy 0 na pocz atek nazwy każdego wierzchołka). W drugiej kostce numerujemy wierzchołki przez 10 i 11 dopisujemy 1 na pocz atek). Nastȩpnie ł aczymy krawȩdziami odpowiadaj ace sobie wierzchołki z obu kopii 00 z 10 i 01 z 11. 7 Podobnie budujemy hiperkostkȩ wymiaru z dwóch kostek. W pierwszej kostce numerujemy wierzchołki dopisuj ac 0 na pocz atku nazwy każdego wierzchołka. W drugiej kostce numerujemy wierzchołki dopisuj ac 1 na pocz atek. Nastȩpnie ł aczymy

7 7 7 1.13. Rozgłaszanie wiadomości 27 Rysunek 1.13: a) Hiperkostka, b) Hiperkostka 1 01 11 0 00 10 a) b) krawȩdziami odpowiadaj ace sobie wierzchołki z obu #A kopii, 7 czyli wierzchołek poł aczony z wierzchołkiem, dla każdego hiperkostkȩ.. W rezultacie hiperkostka to graf = #, gdzie ci agi bitów długości, a dwa wierzchołki, jest. Rysunek 1.14 przedstawia zawiera wszystkie s a poł aczone krawȩdzi a wtedy i tylko wtedy, gdy różni a siȩ dokładnie jednym bitem. Jak łatwo widać w kostkach i s a cykle Hamiltona w jest droga Hamiltona). Ogólniej mamy Lemat 1.42 Każda hiperkostka zawiera drogȩ Hamiltona. zaczynaj ac a siȩ w wierzchołku i kończ ac a w wierzchołku 7. Dowód przez indukcjȩ ze wzglȩdu na wymiar kostki. # 7 zawiera drogȩ Hamiltona Załóżmy, że zawiera drogȩ Hamiltona z 7 do 7. składa siȩ z dwóch hiperkostek. Droga w zaczyna siȩ w punkcie. W pierszej hiperkostce tej z 0 na pocz atku każdego wierzchołka) przechodzi do, potem krawȩdzi a do do 7 i w drugiej hiperkostce tej z 1 na pocz atku każdego wierzchołka) w odwrotnym kierunku. Cykl Hamiltona w tworzy tak zwany kod Graya. Jest to ci ag wszyskich elementowych ci agów bitów, każdy wystȩpuje raz, każde dwa kolejne różni a siȩ jednym bitem oraz ostatni ciąg różni się jednym bitem od pierwszego. 1.13 Rozgłaszanie wiadomości. Graf może przedstawiać sieć poł aczeń. Wierzchołki s a agentami, a krawȩdzie to ł acza, którymi agenci mog a siȩ komunikować. Wyobraźmy sobie, że jeden agent posiada jak aś wiadomość, któr a chce przekazać wszystkim innym agentom w sieci. Reguły s a nastȩpuj ace. Komunikacja odbywa siȩ synchronicznie w taktach. W każdym takcie każdy agent może przekazać wiadomość jednemu swojemu s asiadowi. Powyższy problem nazywa siȩ problemem rozgłaszania. Poniżej pokażemy, że można go bardzo efektywnie rozwi azać, jeżeli graf jest hiperkostk a ci ag bitów jako przedstawienie dwójkowe liczby naturalnej.. Bȩdziemy traktować

28 Rozdział 1. Grafy nieskierowane) Rysunek 1.14: Hiperkostka ) ) ) Najpierw prześledźmy działanie tego protokułu na hiperkostce rysunek 1.14). Załóżmy, że wierzchołek jest żródłem wiadomości. W pierwszym takcie przekazuje on j a do wierzchołka. Zauważmy, że po pierwszym takcie wiadomość jest znana wierzchołkom o numerach mniejszych od 2 i, że te wierzchołki tworz a hiperkostkȩ wymiaru 1. W drugim takcie wierzchołek przekaże wiadomość do wierzchołka " ), a wierzchołek do. Po drugim takcie wiadomość znaj a wierzchołki o numerach mniejszych od 4 i tworz a one hiperkostkȩ wymiaru 2. W trzecim takcie przekazuje wiadomość do, do, do ) ), a znaj a wiadomość. do Protokół rozsyłania wiadomości w hiperkostce Na pocz atku wiadomość ma wierzchołek 0 >??@. Powtarzaj dla 0 w tym takcie każdy wierzchołek 7.. Tak wiȩc po trzech taktach wszystkie wierzchołki w 7 przekazuje wiadomość do wierzchołka 0 Aby pokazać poprawność tego protokołu, pokażemy przez indukcje, że po tym takcie wiadomość jest znana wszystkim wierzchołkom o numerach mniejszych od. Przed pierwszym taktem wiadomość jest znana wierzchołkom 0 o numerach mniejszych od, czyli wierzchołkowi 0. Załóżmy, że przed tym taktem wiadomość jest znana

0 0 0 1.14. Zbieranie informacji 29 7 wszystkim wierzchołkom 7 o numerach #A mniejszych 7 od. S a to dokładnie wierzchołki postaci 0, gdzie jeżeli to jest pustym ci agiem). W 7 tym takcie każdy taki wierzchołek przekaże wiadomość do, czyli po tym takcie wiadomość bȩd 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żna także stosować do grafu pełnego lub do innego grafu, który zawiera hiperkostkȩ. 1.14 Zbieranie informacji Hiperkostka jest także wygodn a struktur a do zbierania informacji, gdy chcemy do jednego wierzchołka zebrać informacje od wszystkich wierzchołków. Informacje te należy przesył ać w odwrotnym kierunku niż w protkóle rozsyłania. Zakładamy, że przesyłane informacje s a ł aczone w pakiety i wierzchołek może przesłać w jednym takcie cały pakiet zawieraj acy kilka informacji. Protokół zbierania wiadomości w hiperkostce Powtarzaj dla 0??? 0 w tym takcie każdy wierzchołek postaci przesyła swój pakiet do wierzchołka 7, 7, gdzie Przykład 1.43 Prześledźmy działanie tego protokułu na hiperkostce &A rysunek 1.14). W do, wierzchołek do ), a wierzchołek do. pierwszym takcie wierzchołek przekazuje swoja wiadomość do, wierzchołek W drugim takcie wierzchołek przekazuje zebrane wiadomości swoja i te, kt.ore otrzymał w poprzednim takcie) do, a wierzchołek ) do. W trzecim takcie wierzchołek przekazuje zebrane wiadomości do. a wierzchołek do. 1.1 Plotkowanie Plotkowanie polega na tym, że na pocz atku każdy wierzchołek ma jak aś wiadomość i chce j a rozesłać do wszystkich innych wierzchołków w grafie. Znaj ac protokoły do zbierania i rozsyłania wiadomości możemy zaprojektować protokół plotkowania, który najpierw zbiera wszystkie informacje do jednego wȩzła, a nastȩpnie rozsyła je do wszystkich wierzchołków. 1.16 Zadania 1. Ile krawędzi ma graf pełny? 2. Ile maksymalnie krawędzi może mieć graf z wierzchołkami?

30 Rozdział 1. Grafy nieskierowane) >??@ 3. Ile jest grafów ze zbiorem wierzchołków 4. Ile krawędzi ma dwudzielny graf pełny $??. Udowodnij, że izomorfizm grafów jest relacj a równoważności. 6. Narysuj wszystkie grafy ze zbiorem wierzchołków 2 3 4 izomorficzne?. Które z nich s a 7. Narysuj możliwie jak najwiȩcej nieizomorficznych grafów z czterema wierzchołkami 2 3 4. 8. Narysuj dwa nieizomorficzne grafy z t a sam a możliwie jak najmniejsz a) liczb a wierzchołków. 9. Narysuj dwa nieizomorficzne drzewa z t a sam a możliwie jak najmniejsz a) liczb a wierzchołków. 10. Narysuj dwa nieizomorficzne grafy z t a sam a możliwie jak najmniejsz a) liczb a wierzchołków i t a sam a liczb a krawȩdzi. 11. Narysuj dwa nieizomorficzne grafy, które maj a t a sam a liczb a wierzchołków stopnia, dla każdego. 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ź zbiór cykli fundamentalnych dla grafów. 1. Zmodyfikuj algorytm przeszukiwania grafu wszerz tak, aby wyznaczał on także drzewo spinaj ace złożone z tych krawȩdzi, którymi przeszedł algorytm). Zastosuj ten algorytm do grafów z rysunków 1.1, 1.7 i 1.10. 16. Sprawdź, które grafy przedstawione na rysunkach w tym rozdziale posiadaj a cykl lub drogȩ) Eulera. 17. Sprawdź, które grafy przedstawione na rysunkach w tym rozdziale posiadaj a cykl lub drogȩ Hamiltona. 18. Zastosuj algorytm kolorowania z nawrotami do grafu z rysunku 1.7. 19. Znajdź graf, dla którego heurystyka przedstawiona w podrozdziale o kolorowaniu grafów nie znajduje optymalnego kolorowania. 20. Narysuj hiperkostkȩ. Wskaż w niej cykl Hamiltona. Prześledź na niej protokół rozsyłania wiadomości.

1.17 Problemy 1.17. Problemy 31 Oto. algorytm konstrukcji minimalnego drzewa spinaj acego dla grafu : 1) zaczynamy od zbioru wszystkich krawȩdzi grafu, 2) sortujemy krawȩdzie według długości, od najdłuższej do najkrótszej 3) dla każdej krawȩdzi usuwamy j a z, jeżeli jej usuniȩcie nie rozspójnia grafu. Udowodnij poprawność tego algorytmu. Zastosuj powyższy algorytm do grafu z rysunku 1.9a. % bȩdzie dowolnym grafem z wagami krawȩdzi, a Niech dowolnym minimalnym drzewem spinaj acym. Pokaż, że dla dowolnego wierzchołka do należ a te krawȩdzie wychodz acych z, które maja najkrótsze wagi, to znaczy, jeżeli i " " % % s a dwiema krawȩdziami przyległymi do takimi, że oraz, to.