Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Podobne dokumenty
Digraf. 13 maja 2017

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

TEORETYCZNE PODSTAWY INFORMATYKI

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

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

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

Graf. Definicja marca / 1

Matematyka dyskretna

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Sortowanie topologiczne skierowanych grafów acyklicznych

Algorytmy i Struktury Danych.

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

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

Metoda Simplex bez użycia tabel simplex 29 kwietnia 2010

Matematyczne Podstawy Informatyki

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

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

G. Wybrane elementy teorii grafów

KURS MATEMATYKA DYSKRETNA

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Matematyczne Podstawy Informatyki

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

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

Zagadnienie najkrótszej drogi w sieci

Lista 4. Kamil Matuszewski 22 marca 2016

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

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

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

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

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

Lista 0. Kamil Matuszewski 1 marca 2016

Algorytmiczna teoria grafów

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

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Algorytmiczna teoria grafów

5. Najkrótsze ścieżki

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Elementy teorii grafów Elementy teorii grafów

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

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

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

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

Indukcja matematyczna. Zasada minimum. Zastosowania.

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

5c. Sieci i przepływy

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

KURS MATEMATYKA DYSKRETNA

Matematyka dyskretna - 5.Grafy.

Algebry skończonego typu i formy kwadratowe

Algorytmy i Struktury Danych.

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

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

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

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

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:

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

CIĄGI wiadomości podstawowe

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

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

Ilustracja S1 S2. S3 ściana zewnętrzna

Rozdzia l 10. Najważniejsze normalne logiki modalne

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Dwa równania kwadratowe z częścią całkowitą

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

Matematyka dyskretna - 7.Drzewa

Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków

Szymon G l ab. Struktury losowe II Graf losowy. Instytut Matematyki, Politechnika Lódzka

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Spacery losowe generowanie realizacji procesu losowego

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

Kolorowanie wierzchołków grafu

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

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

0. ELEMENTY LOGIKI. ALGEBRA BOOLE A

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

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

Ogólne wiadomości o grafach

Układy równań i nierówności liniowych

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

Zadanie 2. Obliczyć rangę dowolnego elementu zbioru uporządkowanego N 0 N 0, gdy porządek jest zdefiniowany następująco: (a, b) (c, d) (a c b d)

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

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

XIV Olimpiada Matematyczna Juniorów

Wykład z Technologii Informacyjnych. Piotr Mika

ZAGADNIENIE TRANSPORTOWE

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

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

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

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Wykład 4. Droga i cykl Eulera i Hamiltona

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

0.1 Sposȯb rozk ladu liczb na czynniki pierwsze

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Transkrypt:

Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku

( Rozdział 1 Grafy skierowane W tym rozdziale zajmiemy siȩ algorytmami wyszukiwania najkrótszej drogi w grafach skierowanych Każdej krawȩdzi przypiszemy długość (wagȩ i algorytmy bȩd a szukać drogi, dla której suma długości krawȩdzi jest najmniejsza 11 Grafy skierowane Definicja 11 Graf skierowany (zorientowany to dowolna para, ze skończonym zbiorem wierzchołków i zbiorem krawȩdzi Rysunek 11: Graf skierowany W grafie skierowanym krawȩdź jest skierowana od wierzchołka do wierzchołka Wierzchołek nazywamy pocz atkiem krawȩdzi, a wierzchołek końcem Na rysunkach krawȩdzie skierowane bȩdziemy przedstawiać jako strzałki Droga w grafie skierowanym jest to ci ag wierzchołków!" $#%#$#& ' *,+ +-, taki, że dla każdego (, wierzchołki /01!, "/ s a poł aczone krawȩdzi a, czyli 2/01!" "/3546 78!9 %#$#%#$ ' Drogȩ nazywamy cyklem jeżeli ":;', oraz wszystkie wierzchołki 8!" $#$#%#& ' s a różne Na przykład ci ag wierzchołków jest cyklem w grafie z rysunku 11 Dla grafów skierowanych dopuszczamy cykl złożony z dwóch wierzchołków, na przykład ci ag stanowi cykl w grafie z rysunku 11 Krawȩdź typu 2< 1, w której pocz atek i koniec pokrywaj a siȩ, nazywamy pȩtl a Można przyj ać, że pȩtla jest cyklem długości jeden 3

4 Rozdział 1 Grafy skierowane Definicja 12 Graf skierowany jest (silnie spójny, jeżeli dla każdych dwóch jego wierzchołków i istnieje droga z do Przykład 13 Graf z rysunku 11 nie jest spójny, bo nie ma w nim drogi z do 12 Najkrótsze drogi w grafie Przypuśćmy teraz, że każdej krawȩdzi przypisano długość (wagȩ przy tym ujemne długości Dla każdej drogi w grafie 7 %#$#$#% Dopuszczamy zdefiniujmy jej długość jako sumȩ długości krawȩdzi, czyli Jeżeli /! 2"/01!" "/3 #, droga składa siȩ z pojedynczego punktu, to przyjmujemy, że jej długość wynosi 0 W tym rozdziale interesuj a nas algorytmy wyznaczania najkrótszej drogi ł acz acej dwa wierzchołki i w grafie Przykład 14 Jako przykład zastosowania algorytmu wyszukiwania najkrótszej drogi w grafie rozpatrzmy sieć poł aczeń, czyli graf, w którym krawȩdzie reprezentuj a ł acza pomiȩdzy wȩzłami Z każd a krawȩdzi a zwi azane jest prawdopodobieństwo, że krawȩdź zadziała bez awarii Zakładamy, że awarie poszczególnych krawȩdzi s a od siebie niezależne Przyjmijmy teraz długość krawȩdzi jako Najkrótsza droga jest wtedy drog a z najmniejszym prawdopodobieństwem awarii Łatwo zauważyć, że jeżeli w grafie s a cykle o ujemnej długości, to dla pewnych par wierzchołków nie istnieje najkrótsza droga miȩdzy nimi Powtarzaj ac przejście wzdłuż cyklu można wtedy otrzymywać drogi o długości dowolnie małej Dlatego w dalszej czȩści bȩdziemy zakładać, że w grafie wszystkie cykle s a dodatniej długości Problem znajdowania najkrótszej drogi w grafie nieskierowanym, jeżeli wszystkie krawȩdzie maj a dodatnie długości, można sprowadzić do przypadku grafu skierowanego Wystarczy każd a krawȩdź < zast apić przez dwie krawȩdzie 2< i Jeżeli w grafie s a krawȩdzie o ujemnych długościach, to sposób ten prowadzi do powstania cykli ujemnej długości Opisane tu algorytmy składaj a siȩ z dwóch etapów W pierwszym etapie wyznaczamy długości najkrótszych dróg z do wszystkich wierzchołków w grafie A dopiero w drugim etapie wyznaczymy najkrótsz a drogȩ z do Najpierw opiszemy drugi etap, czyli jak znaleźć najkrótsz a drogȩ z do, jeżeli znane s a odległości z do wszystkich wierzchołków grafu Algorytm ten bȩdziemy opisywać przy pomocy przykładu grafu z rysunku 12 2<,, jeżeli 4 Załóżmy, że Dla prostoty algorytmu przyjmujemy macierz zawiera odległości od do wszystkich pozostałych wierzchołków grafu

13 Algorytm Forda-Bellmana 5 Rysunek 12: Graf z długościami krawȩdzi przy tym, że v s a b c d t 0 1 0-1 1 2 zawiera odległość od, czyli długość najkrótszej drogi z do Przyjmujemy oraz, jeżeli nie ma żadnej drogi z do Najkrótsz a drogȩ od do wyznaczamy teraz od końca Najpierw szukamy przedostatniego wierzchołka tej drogi, później trzeciego od końca i tak dalej Przedostatni wierzchołek najkrótszej drogi spełnia równość 2 # spełnia t a równość Zauważmy, że isnieje, to otrzymamy, czyli najkrótsz a drogȩ z do Jest też W naszym przykładzie tylko wierzchołek droga długości z do Jeżeli przedłużymy tȩ drogȩ o krawȩdź, drogȩ z do długości jasne, że taki wierzchołek istnieje Jest to przedostatni wierzchołek dowolnej najkrótszej drogi z do Trzeci od końca wierzchołek spełnia równość 2< W naszym przykładzie jest to i tak dalej, aż odtworzymy cał a drogȩ Algorytm ten musi zakończyć pracȩ, ponieważ kolejne wierzchołki odsłanianej drogi s a różne Inaczej mielibyśmy cykl, co nie jest możliwe, jeżeli w grafie wszystkie cykle s a dodatniej długości 13 Algorytm Forda-Bellmana W tym podrozdziale opiszemy pierwszy z algorytmów obliczania wartości macierzy Mówi ac z grubsza polega on na przyjȩciu najpierw pewnych górnych oszacowań na wartości i poprawianiu ich potem Jeżeli na jakimś etapie pracy algorytmu mamy war- tość, to znaczy, że znaleziono już drogȩ od do długości Jeżeli później algorytm znajdzie krótsz a drogȩ, to wartość zostanie poprawiona Znajdowanie krotszej drogi polega na szukaniu wierzchołka spełniaj acego warunek 3#

6 Rozdział 1 Grafy skierowane Algorytm [Forda-Bellmana] Dane wejściowe: Graf skierowany, długości krawȩdzi Dane wyjściowe: Macierz odległości z do wszystkich wierzchołków dla każdego 4 podstaw ; dla każdego - od 1 do zrób: dla każdego zrób: dla każdego 4 2< zrób: ( Algorytm Forda-Bellmana najpierw podstawia przybliżenie Potem w rundach, dla każdego wierzchołka 4 czy istnieje wierzchołek, który wyznacza krótsz a drogȩ do Jest to pierwsze algorytm sprawdza, Przykład 15 Algorytm Forda-Bellmana zastosowany do grafu z rysunku 12 działa w nastȩpuj acy sposób: Na pocz atku macierz przedstawia siȩ nastȩpuj aco: v s a b c d t 0 2 2 1 W pierwszej iteracji zewnȩtrznej pȩtli, dla -, algorytm dla każdego wierzchołka sprawdza, czy istnieje wierzchołek, przez który wiedzie krótsza droga do I tak dla, stwierdza, 6 Oznacza, to, że droga z do a potem krawȩdzi a do jest krótsza od dotychczasowego oszacowania Dlatego algorytm podstawia 3 na Dla, wartość nie zmienia siȩ ponieważ droga przez 5 nie jest krótsza od dotychczasowego oszacowania Dla algorytm znajduje krótsz a drogȩ przez ; i zmienia na Dla : wartość macierzy nie jest korygowana, a dla algorytm odnajduje drogȩ przez, 5 i posyła wartości: Tak wiȩc po pierwszej iteracji pȩtli macierz ma nastȩpuj ace v s a b c d t 0 3 2-1 1 4 W drugiej iteracji dla - tylko wartość zostaje poprawiona, gdyż Nowa wartość po drugiej iteracji macierz wygl ada tak v s a b c d t 0 3 0-1 1 4 Pozostałe wartości nie zmieniaj a siȩ i W trzeciej iteracji pȩtli dla - algorytm najpierw znajduje krótsz a drogȩ do (przez i poprawia, a potem znajduje krótsz a drogȩ do (przez i poprawia Po trzeciej iteracji macierz wygl ada tak v s a b c d t 0 1 0-1 1 2

( 14 Dodatnie długości, algorytm Dijsktry 7 Jest to ostateczna postać macierzy, gdyż w czwartej iteracji jej wartości nie s a już poprawione Aby udowodnić, że algorytm działa poprawnie pokażemy przez indukcjȩ, że po ( -tej iteracji zewnȩtrznej pȩtli zawiera długość najkrótszej drogi z do zawieraj acej co najwyżej ( krawȩdzi Przed pierwsz a iteracj a zawiera długość drogi złożonej z jednej lub zero krawȩdzi Załóżmy, że po ( iteracjach zawiera długość najkrótszej drogi z ( lub mniej krawȩdziami Przypuśćmy, że %#$#$#%! jest najkrótsz a spośród dróg z do $#%#$#$ z ( lub mniej krawȩdziami Droga! jest najkrótsz a drog a do! z ( lub mniej krawȩdziami Gdyby istniała krótsza droga do! z co najwyżej ( krawȩdziami, to mielibyśmy krótsz a %#$#$#$ drogȩ do z co najwyżej krawȩdziami; sprzeczność Czyli długość drogi! jest równa! po ( tej iteracji Dlatego po ( iteracji bȩdzie zawierać długość najkrótszej drogi do z ( krawȩdziami Po zakończeniu pracy algorytmu zawiera długość najkrótszej drogi z do, ponieważ, jeżeli w grafie wszystkie cykle s a dodatniej długości, to w minimalnej drodze żaden wierzchołek nie powtarza siȩ i droga nie zawiera wiȩcej niż krawȩdzi Algorytm zawiera trzy pȩtle zagnieżdżone jedna w drug a Zewnȩtrzna pȩtla wykonuje siȩ razy Dla każdego - 4 wewnȩtrzna pȩtla wykonuje siȩ razy, raz dla każdego, a dla każdego mamy wykonań najbardziej wewnȩtrznej pȩtli, czyli czas działania algorytmu można oszacować przez $ 9 +, gdzie i to stałe Tak wiȩc złożoność czasowa algorytmu wynosi 14 Dodatnie długości, algorytm Dijsktry W tym podrozdziale podamy algorytm znajdowania odległości od źródła do wszystkich wierzchołków grafu dla przypadku, gdy długości wszystkich krawȩdzi s a dodatnie Algorytm Dijkstry Dane wejściowe: Graf skierowany, dodatnie długości krawȩdzi Dane wyjściowe: Macierz odległości z do wszystkich wierzchołków dla każdego 4 podstaw ; dopóki powtarzaj: wybierz wierzchołek 4 ; dla każdego 4 taki, że 3 podstaw 4 2<

8 Rozdział 1 Grafy skierowane Podobnie jak w poprzednim algorytmie na pocz atku macierz zawiera długość krawȩdzi 1, a jeżeli takiej krawȩdzi nie ma, to Zbiór zawiera wierzchołki, dla których nie jest jeszcze wyliczona dokładna odległość od Poniżej pokażemy, że dla 4, zawiera długość najkrótszej spośród dróg, której przedostatni wierzchołek należy do Nastȩpnie w każdej iteracji zewnȩtrznej pȩtli bierzemy wierzchołek 4, który leży najbliżej od Jak siȩ za chwile okaże ten wierzchołek ma już prawidłow a wartość i dlatego jest on usuwany z Teraz korygujemy wartości dla pozostałych wierzchołków z uwzglȩdniaj ac drogi, w których wierzchołek jest przedostatni Przykład 16 Rysunek 13 przedstawia graf z dodatnimi długościami krawȩdzi Poniższa tabela ilustruje działanie algorytmu Dijkstry Pokazuje jak w kolejnych iteracjach zewnȩtrznej pȩtli wybrano wierzchołek oraz jak przedstawiaj a siȩ zbiór i macierz 0 1 2 3 4 iteracja 5 0 1 5 0 1 2 4 0 1 2 3 6 0 1 2 3 4 6 0 1 2 3 4 5 0 1 2 3 4 5 Rysunek 13: Graf z dodatnimi długościami krawȩdzi Aby udowodnić poprawność tego algorytmu, pokażemy przez indukcjȩ, że po każdej iteracji pȩtli mamy (a dla każdego wierzchołka 4 drogi z do,, zawiera ostateczn a długość minimalnej zawiera długość minimalnej spośród wszyst- (b dla każdego wierzchołka 4 kich dróg z do, w których przedostatni wierzchołek należy do 4 Przed pierwsz a pȩtl a tylko, Warunki (a i (b s a wiȩc spełnione, Ponieważ w najkrótszej drodze do nie ma pȩtli, wiȩc drogi, w których jest przedostatni składaj a siȩ tylko z jednej krawȩdzi, a dla każdego innego wierzchołka 4

15 Najkrótsza droga w grafach acyklicznych 9 W kolejnej iteracji wybieramy wierzchołek 4, dla którego jest najmniejsza Pokażemy, że wartość jest już ostateczna, czyli jest równa długości najkrótszej spośród wszystkich dróg z do Przypuśćmy, że istnieje krótsza droga i niech bȩdzie takim wierzchołkiem, że droga z do zawiera tylko wierzchołki z i wierzchołek przed nie należy do Mamy, bo inaczej mielibyśmy sprzeczność z założeniem indukcyjnym, że zawiera długość najkrótszej spośród dróg, z których przedostatni wierz- chołek nie jest z Zauważmy, że droga z do ma długość równ a aktualnej wartości Z drugiej strony ponieważ długości s a nieujemne mamy sprzeczność z zasad a wyboru + Dlatego może być usuniȩty z Nastȩpnie algorytm sprawdza dla każdego 4, czy istnieje jakaś droga z do, w której wierzchołek jest przedostani i która jest krót- sza od aktualnej wartości Zauważmy, że dotychczasowa wartość zawierała długość najkrótszej drogi do, w których przedostatnim wierzchołkiem był jakiś wierzchołek z różny od Dlatego po tym sprawdzeniu bȩdzie spełniony warunek (b Czas działania algorytmu Dijkstry jest, ponieważ mamy tylko podwójne zagnieżdżenie pȩtli i liczba iteracji obu jest ograniczona przez 15 Najkrótsza droga w grafach acyklicznych Inny przypadek, kiedy można szybciej niż w czasie policzyć długości najkrótszych dróg do wszystkich wierzchołków w grafie, zachodzi wtedy, gdy w grafie nie ma cykli Najpierw pokażemy, że w grafie acyklicznym można tak ponumerować wierzchołki tak, każda krawȩdź prowadziła od wierzchołka z niższym numerem do wierzchołka z wyższym numerem Lemat 17 W każdym skierowanym grafie którego nie wchodz a żadne krawȩdzie bez cykli istnieje wierzchołek, do Dowód: Weźmy dowolny wierzchołek! Jeżeli nie wchodzi do niego, żadna krawȩdź, to koniec, znaleźliśmy Jeżeli wchodzi, to niech bȩdzie wierzchołkiem, z którego prowadzi krawȩdź do 8! Albo jest dobry, albo prowadzi do niego krawȩdź od jakiegoś wierzchołka itd Ponieważ zbiór wierzchołków jest skończony i nie ma w nim cyklu, wiȩc ten ci ag musi siȩ kiedyś skończyć i dojdziemy do wierzchołka, do którego nie prowadz a żadne krawȩdzie Lemat 18 W skierowanym grafie acyklicznym można tak ponumerować wierzchołki, aby każda krawȩdź prowadziła od wierzchołka z niższym numerem do wierzchołka z wyższym numerem, czyli istnieje wzajemnie jednoznaczna funkcja $#%#$#& taka, że jeżeli 2< 4 21 2, to Dowód:

10 Rozdział 1 Grafy skierowane Jako dowód przedstawimy algorytm, który odpowiednio numeruje wierzchołki grafu kolejnymi liczbami naturalnymi Najpierw s a numerowane i usuwane z grafu wierzchołki, do których nie wchodz a żadne krawȩdzie Po usuniȩciu tych wierzchołków i wychodz acych z nich krawȩdzi znowu otrzymamy graf bez cykli, który zawiera wierzchołki bez wchodz acych krawȩdzi Teraz te z koleji wierzchołki s a numerowane kolejnymi numerami i usuwane z grafu, i tak dalej aż do ponumerowania wszystkich wierzchołków Rysunek 14: Graf acykliczny Przykład 19 Zastosujmy powyższy algorytm do grafu z rysunku 14 Wierzchołkami bez wchodz acych krawȩdzi s a i Przypisujemy wiȩc i oraz usuwamy i z grafu wraz z wychodz acymi z nich krawȩdziami Teraz wierzchołek nie ma wchodz acych krawȩdzi, przypisujemy mu i usuwamy z grafu W dalszych kro- kach algorytm przypisze wartości ma postać:, oraz v s a b c d t 1 4 2 3 5 6 Ostatecznie hunkcja Przedstawimy teraz algorytm wyliczaj acy odległości z do wszystkich wierzchołków w grafie acyklicznym Zakładamy przy tym, że w grafie wierzchołki s a ponumerowane tak, jak opisano to w lemacie 18 Bez straty ogólności można założyć, że jest pierwszy, ponieważ nie ma ścieżek z do wierzchołków o niższych numerach Algorytm wyliczaj acy odległości wszystkich wierzchołków w grafie acyklicznym ; Dane wejściowe: acykliczny graf skierowany, długości krawȩdzi Dane wyjściowe: Macierz odległości z do wszystkich wierzchołków dla każdego 4 podstaw ; dla każdego 4 po kolei według numerów zrób: < dla każdego, 2<

16 Zadania 11 Udowodnimy przez indukcjȩ, że po ( -tej iteracji zewnȩtrznej pȩtli wierzchołki o numerch od 1 do ( maj a już prawidłowe wartości w macierzy Po pierwszej iteracji ma prawidłow a wartość numerach od 1 do ( maj a już prawidłowe wartości w macierzy obliczamy ( Zauważmy, że najkrótsza droga z do / przebiega przez wierzchołki o mniejszych od ( wynosi 1 "/3 2< "/3 i zostanie odnaleziona w pȩtli W ( tej iteracji pȩtli (zakładamy, że wierzchołki o numerach Niech bȩdzie przedostatnim wierzchołkiem na tej drodze Długość tej drogi Ponieważ mamy podwójne zagnieżdżenie pȩtli i w obu liczba iteracji jest ograniczona przez, czas działania algorytmu jest Przykład 110 (kontynuacja przykładu 19 Jeżeli zastosujemy ten algorytm do grafu z rysunku 14, to w kolejnych iteracjach zewnȩtrznej pȩtli obliczy on,,,, oraz 16 Zadania 1 Narysuj wszystkie grafy skierowane ze zbiorem wierzchołków z nich s a spójne? Które z nich s a izomorficzne? Które Wskazówka: Definicja izomorfizmu grafów skierowanych jest taka sama jak dla grafów nieskierowanych 2 Które z grafów przedstawionych na rysunkach w tym rozdziale s a spójne? 3 Narysuj możliwie jak najwiȩcej nieizomorficznych grafów skierowanych z trzema wierzchołkami 4 Narysuj parȩ różnych i izomorficznych grafów skierowanych z możliwie najmniejsz a liczb a wierzchołków Rysunek 15: Graf skierowany 5 Zastosuj algorytm Dijkstry i znajdź najkrótsz a drogȩ z do w grafie z rysunku 15 6 Zastosuj algorytm Forda-Bellmana do grafu z rysunku 15 7 Znajdź najkrótsz a drogȩ z do w grafach z rysunków 13 i 14 8 Zastosuj algorytm Forda-Bellmana do grafów z rysunków 13 i 14

12 Rozdział 1 Grafy skierowane 17 Problemy 171 Cykl Eulera w grafie skierowanym Cykl Eulera w grafie skierowanym jest to droga zamknięta przechodząca przez każdą krawędź grafu dokładnie jeden raz Udowodnij, że jeżeli graf skierowany jest spójny jako graf nieskierowany, to ma cykl Eulera wtedy i tylko wtedy, gdy w każdym jego wierzchołku liczba krawędzi wchodzących jest równa liczbie krawędzi wychodzących Jeżeli w grafie jest pętla, to liczymy ją jako krawędź wchodzącą do i jako wychodzącą z Zaproponuj algorytm wynajdywania cyklu Eulera w grafie skierowanym Które z grafów przedstawionych na rysunkach w tym rozdziale maj a cykle Eulera? 172 Ciag de Bruijna Ciąg de Bruijna rzędu to cykliczne ustawienie bitów takie, że każdy ciąg bitów występuje w tym cyklu dokładnie jeden raz jako kolejnych bitów Na przykład ciąg jest ciągiem de Bruijna rzędu 2 ( występuje na pozycjach 4 i 1, a ciąg jest ciągiem de Bruijna rzędu 3 ( występuje na pozycjach 7, 8 i 1, a na pozycjach 8, 1 i 2 % 0! : Aby otrzymaż ciąg de Bruijna rzędu rozważmy następujący graf skierowany G=(V,E Wierzchołki grafu to zbiór wszystkich ciągów bitów długosci Dwa wierzchołki, 4 tworzą krawędź, 4 wtedy i tylko wtedy, gdy ostatnich bitów jest takie samo jak pierwsze bitów Krawędź ta jest etykietowana ostatnim bitem Narysuj graf dla, i Udowodnij, że: Graf jest spójny (jako graf nieskierowany i posiada cykl Eulera Etykiety każdej drogi długości tworzą nazwę ostatniego wierzchołka tej drogi Cykl Eulera ma krawędzi i przechodzi przez każdy wierzchołek dwa razy Etykiety cyklu Eulera tworzą ciąg de Bruijna rzędu Wyznacz ciąg de Bruijna rzędu