Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku RozdziaÅ‚ 1 Grafy skierowane W tym rozdziale zajmiemy sie algorytmami wyszukiwania najkrótszej drogi w grafach ¸ skierowanych. Każdej kraw¸ przypiszemy dÅ‚ugość (wage) i algorytmy beda szukać edzi ¸ ¸ ¸ drogi, dla której suma dÅ‚ugoÅ›ci kraw¸ jest najmniejsza. edzi 1.1 Grafy skierowane
Definicja 1.1 Graf skierowany (zorientowany) to dowolna para , ze skończo-
nym zbiorem wierzchoÅ‚ków i zbiorem kraw¸ . edzi Rysunek 1.1: Graf skierowany
W grafie skierowanym kraw¸ jest skierowana od wierzchoÅ‚ka do wierz- edz
choÅ‚ka . WierzchoÅ‚ek nazywamy poczatkiem kraw¸ a wierzchoÅ‚ek koÅ„cem. Na ¸ edzi, rysunkach kraw¸ skierowane bedziemy przedstawiać jako strzaÅ‚ki. Droga w grafie edzie ¸
skierowanym jest to ciag wierzchoÅ‚ków , taki, że dla każdego , ¸
wierzchoÅ‚ki , sa poÅ‚aczone kraw¸ ¸ czyli . Droge ¸ ¸ edzia, ¸
nazywamy cyklem jeżeli , oraz wszystkie wierzchoÅ‚ki sa różne. Na ¸
przykÅ‚ad ciag wierzchoÅ‚ków jest cyklem w grafie z rysunku 1.1. Dla grafów ¸
skierowanych dopuszczamy cykl zÅ‚ożony z dwóch wierzchoÅ‚ków, na przykÅ‚ad ciag ¸
stanowi cykl w grafie z rysunku 1.1. Kraw¸ typu , w której poczatek i koniec edz ¸ pokrywaja sie, nazywamy petla. Można przyjać, że petla jest cyklem dÅ‚ugoÅ›ci jeden. ¸ ¸ ¸ ¸ ¸ ¸ 3 4 RozdziaÅ‚ 1. Grafy skierowane Definicja 1.2 Graf skierowany jest (silnie) spójny, jeżeli dla każdych dwóch jego wierz-
chołków i istnieje droga z do .
Przykład 1.3 Graf z rysunku 1.1 nie jest spójny, bo nie ma w nim drogi z do . 1.2 Najkrótsze drogi w grafie
Przypuśćmy teraz, że każdej kraw¸ przypisano dÅ‚ugość (wage) . Dopuszczamy edzi ¸ przy tym ujemne dÅ‚ugoÅ›ci. Dla każdej drogi w grafie
zdefiniujmy jej dÅ‚ugość jako sum¸ dÅ‚ugoÅ›ci kraw¸ czyli e edzi,
Jeżeli , droga skÅ‚ada sie z pojedynczego punktu, to przyjmujemy, że jej dÅ‚ugość wy- ¸ nosi 0. W tym rozdziale interesuja nas algorytmy wyznaczania najkrótszej drogi Å‚aczacej ¸ ¸ ¸ dwa wierzchoÅ‚ki i w grafie. PrzykÅ‚ad 1.4 Jako przykÅ‚ad zastosowania algorytmu wyszukiwania najkrótszej drogi w grafie rozpatrzmy sieć poÅ‚aczeÅ„, czyli graf, w którym kraw¸ reprezentuja Å‚acza pomiedzy ¸ edzie ¸ ¸ ¸
w¸ Z każda kraw¸ ¸ zwiazane jest prawdopodobieÅ„stwo , że kraw¸ za- ezÅ‚ami. ¸ edzia ¸ edz dziaÅ‚a bez awarii. ZakÅ‚adamy, że awarie poszczególnych kraw¸ sa od siebie niezależne. edzi ¸
Przyjmijmy teraz dÅ‚ugość kraw¸ jako . Najkrótsza droga jest wtedy edzi droga z najmniejszym prawdopodobieÅ„stwem awarii. ¸ Aatwo zauważyć, że jeżeli w grafie sa cykle o ujemnej dÅ‚ugoÅ›ci, to dla pewnych par ¸ wierzchoÅ‚ków nie istnieje najkrótsza droga miedzy nimi. Powtarzajac przejÅ›cie wzdÅ‚uż ¸ ¸ cyklu można wtedy otrzymywać drogi o dÅ‚ugoÅ›ci dowolnie maÅ‚ej. Dlatego w dalszej czeÅ›ci bedziemy zakÅ‚adać, że w grafie wszystkie cykle sa dodatniej dÅ‚ugoÅ›ci. ¸ ¸ ¸ Problem znajdowania najkrótszej drogi w grafie nieskierowanym, jeżeli wszystkie kraw¸ maja dodatnie dÅ‚ugo można sprowadzić do przypadku skierowane- edzie ¸ Å›ci, grafu
go. Wystarczy każda kraw¸ zastapić przez dwie kraw¸ ¸ edz ¸ edzie i . Jeżeli w grafie sa kraw¸ o ujemnych dÅ‚ugoÅ›ciach, to sposób ten prowadzi do powstania cykli ¸ edzie ujemnej dÅ‚ugoÅ›ci. Opisane tu algorytmy skÅ‚adaja sie 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ótsza droge z do . ¸ ¸ Najpierw opiszemy drugi etap, czyli jak znalezć najkrótsza droge z do , jeżeli znane ¸ ¸ sa odlegÅ‚oÅ›ci z do wszystkich wierzchoÅ‚ków grafu. Algorytm ten bedziemy opisywać ¸ ¸ przy pomocy przykÅ‚adu grafu z rysunku 1.2.
Dla prostoty algorytmu przyjmujemy , jeżeli . Załóżmy, że macierz zawiera odlegÅ‚oÅ›ci od do wszystkich pozostaÅ‚ych wierzchoÅ‚ków grafu. 1.3. Algorytm Forda-Bellmana 5 Rysunek 1.2: Graf z dÅ‚ugoÅ›ciami kraw¸ edzi
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
przy tym, że oraz , jeżeli nie ma żadnej drogi z do . Najkrótsza ¸ droge od do wyznaczamy teraz od koÅ„ca. Najpierw szukamy przedostatniego wierz- ¸
chołka tej drogi, pózniej trzeciego od końca i tak dalej. Przedostatni wierzchołek naj- krótszej drogi spełnia równość
W naszym przykÅ‚adzie tylko wierzchoÅ‚ek speÅ‚nia ta równość. Zauważmy, że isnieje ¸
przedÅ‚użymy ¸ ¸ edz droga dÅ‚ugoÅ›ci z do . Jeżeli te droge o kraw¸ , to otrzymamy
droge z do dÅ‚ugoÅ›ci , czyli najkrótsza droge z do . Jest też ¸ ¸ ¸
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ść
W naszym przykÅ‚adzie jest to i tak dalej, aż odtworzymy caÅ‚a droge . ¸ ¸ Algorytm ten musi zakoÅ„czyć prace, ponieważ kolejne wierzchoÅ‚ki odsÅ‚anianej drogi sa ¸ ¸ różne. Inaczej mielibyÅ›my cykl, co nie jest możliwe, jeżeli w grafie wszystkie cykle sa ¸ dodatniej dÅ‚ugoÅ›ci. 1.3 Algorytm Forda-Bellmana W tym podrozdziale opiszemy pierwszy z algorytmów obliczania wartoÅ›ci macierzy . Mówiac grubsza polega on na przyjeciu najpierw pewnych górnych oszacowaÅ„ na war- ¸ z ¸
toś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ózniej algo- e ¸
rytm znajdzie krótsza droge, to wartość zostanie poprawiona. Znajdowanie krotszej ¸ ¸
drogi polega na szukaniu wierzchoÅ‚ka speÅ‚niajacego warunek ¸
Dane wejÅ›ciowe: Graf skierowany , dÅ‚ugoÅ›ci kraw¸ . edzi Dane wyjÅ›ciowe: Macierz odlegÅ‚oÅ›ci z do wszystkich wierzchoÅ‚ków.
dla każdego podstaw
;
dla każdego od 1 do zrób:
dla każdego zrób:
dla każdego zrób:
Algorytm Forda-Bellmana najpierw podstawia . Jest to pierwsze
przybliżenie. Potem w rundach, dla każdego wierzchołka algorytm sprawdza,
czy istnieje wierzchoÅ‚ek , który wyznacza krótsza droge do . ¸ ¸ PrzykÅ‚ad 1.5 Algorytm Forda-Bellmana zastosowany do grafu z rysunku 1.2 dziaÅ‚a w nastepujacy sposób: Na poczatku macierz przedstawia sie nastepujaco: ¸ ¸ ¸ ¸ ¸ ¸ v s a b c d t
0 2 2 1
W pierwszej iteracji zewnetrznej petli, dla , algorytm dla każdego wierzchoÅ‚ka ¸ ¸
, sprawdza, czy istnieje wierzchołek przez który wiedzie krótsza droga do . I
tak dla , stwierdza, . Oznacza, to, że
droga z do a potem kraw¸ ¸ do jest krótsza od dotychczasowego oszacowania . edzia
Dlatego algorytm podstawia na . Dla wartość nie zmienia sie 3 ¸
ponieważ droga przez nie jest krótsza od dotychczasowego
oszacowania. Dla algorytm znajduje krótsza e przez ; ¸ drog ¸
ść i zmienia na . Dla warto macierzy nie jest
korygowana, a dla algorytm odnajduje droge przez , ¸
¸ ¸ ¸ ¸ i posyÅ‚a . Tak wiec po pierwszej iteracji petli macierz ma nastepujace wartoÅ›ci: v s a b c d t
0 3 2 -1 1 4
W drugiej iteracji tylko wartość zostaje poprawiona, gdyż dla
¸ ¸ . Nowa wartość . PozostaÅ‚e wartoÅ›ci nie zmieniaja sie i po drugiej iteracji macierz wyglada tak ¸ v s a b c d t
0 3 0 -1 1 4
W trzeciej iteracji dla algorytm najpierw znajduje krótsza droge do (przez ) petli ¸ ¸ ¸
i poprawia , a potem znajduje krótsza droge do (przez ) i poprawia . ¸ ¸ Po trzeciej iteracji macierz wyglada tak ¸ v s a b c d t
0 1 0 -1 1 2 1.4. Dodatnie dÅ‚ugoÅ›ci, algorytm Dijsktry 7 Jest to ostateczna postać macierzy, gdyż w czwartej iteracji jej wartoÅ›ci nie sa już popra- ¸ wione. Aby udowodnić, że algorytm dziaÅ‚a poprawnie pokażemy przez indukcje, że po -tej ite- ¸
racji zewnetrznej petli zawiera dÅ‚ugość najkrótszej drogi z do zawierajacej co ¸ ¸ ¸
najwyżej kraw¸ Przed pierwsza iteracja zawiera dÅ‚ugość drogi zÅ‚ożonej z edzi. ¸ ¸ jednej lub zero kraw¸ Załóżmy, że po iteracjach zawiera dÅ‚ugość najkrótszej drogi edzi.
z lub mniej kraw¸ edziami. Przypuśćmy, że
jest najkrótsza spoÅ›ród dróg z do z lub mniej kraw¸ Droga ¸ edziami.
jest ¸ droga do z lub mniej kraw¸ Gdyby istniaÅ‚a krótsza droga najkrótsza ¸ edziami.
do z co najwyżej kraw¸ to mielibyÅ›my krótsza drog e do z co najwyżej edziami, ¸ ¸
kraw¸ sprzecznoÅ› dÅ‚ugoÅ› drogi jest równa edziami; ć. Czyli ć
po tej iteracji. Dlatego po iteracji bedzie zawierać dÅ‚ugość najkrótszej drogi ¸
do z kraw¸ edziami.
Po zakończeniu pracy algorytmu zawiera długość najkrótszej drogi z do ,
ponieważ, jeżeli w grafie wszystkie cykle sa dodatniej dÅ‚ugoÅ›ci, to w minimalnej drodze ¸
żaden wierzchoÅ‚ek nie powtarza sie i droga nie zawiera wiecej niż kraw¸ ¸ ¸ edzi. Algorytm zawiera trzy petle zagnieżdżone jedna w druga. Zewnetrzna petla wykonuje ¸ ¸ ¸ ¸
sie razy. Dla każdego wewnetrzna petla wykonuje sie razy, raz dla każdego ¸ ¸ ¸ ¸
, a dla każdego mamy wykonaÅ„ najbardziej ¸ ¸ czyli czas wewnetrznej petli,
działania algorytmu można oszacować przez , gdzie i to
staÅ‚e. Tak wiec zÅ‚ożoność czasowa algorytmu wynosi . ¸ 1.4 Dodatnie dÅ‚ugoÅ›ci, algorytm Dijsktry W tym podrozdziale podamy algorytm znajdowania odlegÅ‚oÅ›ci od zródÅ‚a do wszystkich wierzchoÅ‚ków grafu dla przypadku, gdy dÅ‚ugoÅ›ci wszystkich kraw¸ sa dodatnie. edzi ¸ Algorytm Dijkstry
Dane wejÅ›ciowe: Graf skierowany , dodatnie dÅ‚ugoÅ›ci kraw¸ edzi
. Dane wyjściowe: Macierz odległości z do wszystkich wierzchołków.
dla każdego podstaw
;
dopóki powtarzaj:
wybierz wierzchołek taki, że
;
dla każdego podstaw
8 Rozdział 1. Grafy skierowane
Podobnie jak w poprzednim algorytmie na poczatku macierz zawiera dÅ‚ugość ¸
kraw¸ , a jeżeli takiej kraw¸ nie ma, to . Zbiór zawiera wierz- edzi edzi choÅ‚ki, dla których nie jest jeszcze wyliczona dokÅ‚adna odlegÅ‚ość od . Poniżej pokaże-
my, że dla , zawiera długość najkrótszej spośród dróg, której przedostatni
wierzchoÅ‚ek należy do . Nastepnie w każdej iteracji zewnetrznej petli bierzemy ¸ ¸ ¸
wierzchoÅ‚ek , który le najbliżej od . Jak sie za chwile okaże ten wierzchoÅ‚ek ma ży ¸
już a prawidÅ‚ow¸ wartość i dlatego jest on usuwany z . Teraz korygujemy wartoÅ›ci
¸ ¸ dla pozostaÅ‚ych wierzchoÅ‚ków z uwzgledniajac drogi, w których wierzchoÅ‚ek jest przedostatni. PrzykÅ‚ad 1.6 Rysunek 1.3 przedstawia graf z dodatnimi dÅ‚ugoÅ›ciami kraw¸ Poniż- edzi. sza tabela ilustruje dziaÅ‚anie algorytmu Dijkstry. Pokazuje jak w kolejnych iteracjach
zewnetrznej petli wybrano wierzchoÅ‚ek oraz jak przedstawiaja sie zbiór i macierz . ¸ ¸ ¸ ¸
Aby udowodnić poprawność tego algorytmu, pokażemy przez indukcje, że po każdej ite- ¸ racji petli mamy ¸
(a) dla każdego wierzchoÅ‚ka , zawiera ostateczna dÅ‚ugość minimalnej ¸
drogi z do .
(b) dla każdego wierzchołka , zawiera długość minimalnej śród wszyst- spo
kich dróg z do , w których przedostatni wierzchołek należy do
Przed pierwsza petla tylko , a dla każdego innego wierzchoÅ‚ka , ¸ ¸ ¸
¸ ¸ . Warunki (a) i (b) sa wiec speÅ‚nione, Ponieważ w najkrótszej drodze do nie ma petli, wiec drogi, w których jest przedostatni skÅ‚adaja sie tylko z jednej kraw¸ ¸ ¸ ¸ ¸ edzi. 1.5. Najkrótsza droga w grafach acyklicznych 9
W kolejnej iteracji wybieramy wierzchołek , dla którego jest najmniejsza. Po-
każ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 bedzie takim ¸
wierzchołkiem, że droga z zawiera tylko wierzchołki z i wierzchołek przed do
nie należy do . Mamy , bo inaczej mielibyśmy sprzeczność z założeniem induk-
cyjnym, ż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ówna aktualnej wartoÅ›ci ¸
¸ . Z drugiej strony ponieważ dÅ‚ugoÅ›ci sa nieujemne mamy
sprzeczność zasada wyboru . z ¸
Dlatego może być usuniety z . Nastepnie algorytm sprawdza dla każdego , ¸ ¸
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ś wierz-
choÅ‚ek z różny od . Dlatego po tym bedzie speÅ‚niony warunek (b). sprawdzeniu ¸ Czas dziaÅ‚ania algorytmu Dijkstry jest , ponieważ mamy tylko podwójne za- gnieżdżenie petli i liczba iteracji obu jest ograniczona przez . ¸ 1.5 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¸ prowadziÅ‚a od wierzchoÅ‚ka z niższym numerem do wierzchoÅ‚ka z wyż- edz szym numerem.
Lemat 1.7 W każdym skierowanym grafie bez cykli istnieje wierzchoÅ‚ek, do którego nie wchodza żadne kraw¸ ¸ edzie.
Dowód: Wezmy dowolny wierzchoÅ‚ek . Jeżeli nie wchodzi do niego, żadna kraw¸ edz,
to koniec, znalezliÅ›my. Jeżeli wchodzi, to niech bedzie wierzchoÅ‚kiem, z którego pro- ¸
wadzi kraw¸ do . Albo jest dobry, albo prowadzi do niego kraw¸ od jakiegoÅ› edz edz
wierzchoÅ‚ka itd. Ponieważ zbiór wierzchoÅ‚ków jest skoÅ„czony i nie ma w nim cy- klu, wiec ten ciag musi sie kiedyÅ› skoÅ„czyć i dojdziemy do wierzchoÅ‚ka, do którego nie ¸ ¸ ¸ prowadza żadne kraw¸ ¸ edzie.
Lemat 1.8 W skierowanym grafie acyklicznym można tak ponumerować wierzchoÅ‚ki, aby każda kraw¸ prowadziÅ‚a od wierzchoÅ‚ka z niższym numerem do wierz- edz
chołka z numerem, czyli wzajemnie jednoznaczna funkcja wyższym istnieje
taka, że jeżeli , to . Dowód: 10 RozdziaÅ‚ 1. Grafy skierowane Jako dowód przedstawimy algorytm, który odpowiednio numeruje wierzchoÅ‚ki gra- fu kolejnymi liczbami naturalnymi. Najpierw sa numerowane i usuwane z grafu wierz- ¸ choÅ‚ki, do których nie wchodza żadne kraw¸ Po usunieciu tych wierzchoÅ‚ków i ¸ edzie. ¸ wychodzacych z nich kraw¸ znowu otrzymamy graf bez cykli, który zawiera wierz- ¸ edzi choÅ‚ki bez wchodzacych kraw¸ Teraz te z koleji wierzchoÅ‚ki sa numerowane kolejny- ¸ edzi. ¸ mi numerami i usuwane z grafu, i tak dalej aż do ponumerowania wszystkich wierzchoÅ‚- ków. Rysunek 1.4: Graf acykliczny
Przykład 1.9 Zastosujmy powyższy algorytm do grafu z rysunku 1.4. Wierzchołkami bez
wchodzacych kraw¸ sa i . Przypisujemy wiec i oraz usuwa- ¸ edzi ¸ ¸
my i z grafu wraz z wychodzacymi z nich kraw¸ Teraz wierzchoÅ‚ek nie ma ¸ edziami.
wchodzacych kraw¸ przypisujemy mu i usuwamy z grafu. W dalszych kro- ¸ edzi,
kach algorytm przypisze wartości , oraz . Ostatecznie hunkcja ma postać: v s a b c d t
1 4 2 3 5 6 Przedstawimy teraz algorytm wyliczajacy odlegÅ‚oÅ›ci z do wszystkich wierzchoÅ‚ków w ¸
grafie acyklicznym. ZakÅ‚adamy przy tym, że w grafie wierzchoÅ‚ki sa ponumerowane ¸ tak, jak opisano to w lemacie 1.8. 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 wyliczajacy odlegÅ‚oÅ›ci wszystkich wierzchoÅ‚ków w grafie acyklicznym ¸
Dane wejÅ›ciowe: acykliczny graf skierowany , dÅ‚ugoÅ›ci kraw¸ edzi
. Dane wyjściowe: Macierz odległości z do wszystkich wierzchołków.
dla każdego podstaw
;
dla każdego po kolei według numerów zrób:
dla każdego ,
1.6. Zadania 11 Udowodnimy przez indukcje, że po -tej iteracji zewnetrznej petli wierzchoÅ‚ki o nu- ¸ ¸ ¸ merch od 1 do maja już prawidÅ‚owe wartoÅ›ci w macierzy . Po pierwszej iteracji ¸
ma prawidÅ‚ow¸ wartość . W tej iteracji petli (zakÅ‚adamy, że wierzchoÅ‚ki o a ¸
numerach od 1 do maja już prawidÅ‚owe wartoÅ›ci w macierzy ) obliczamy . ¸
Zauważmy, że najkrótsza droga z do przebiega przez wierzchołki o mniejszych od
numerach. Niech b edzie przedostatnim wierzchoÅ‚kiem na tej drodze. DÅ‚ugość tej drogi ¸
¸ wynosi i zostanie odnaleziona w petli. Ponieważ mamy podwójne zagnieżdżenie petli i w obu liczba iteracji jest ograniczona ¸
przez , czas działania algorytmu jest . Przykład 1.10 (kontynuacja przykładu 1.9) Jeżeli zastosujemy ten algorytm do grafu z
rysunku 1.4, to w kolejnych iteracjach zewnetrznej petli obliczy on , , ¸ ¸
, , oraz . 1.6 Zadania
1. Narysuj wszystkie grafy skierowane ze zbiorem wierzchoÅ‚ków . Które z nich sa spójne? Które z nich sa izomorficzne? ¸ ¸ 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 sa spójne? ¸ 3. Narysuj możliwie jak najwiecej nieizomorficznych grafów skierowanych z trzema ¸
wierzchoÅ‚kami . 4. Narysuj pare różnych i izomorficznych grafów skierowanych z możliwie najmniejsza ¸ ¸ liczba wierzchoÅ‚ków. ¸ Rysunek 1.5: Graf skierowany
5. Zastosuj algorytm Dijkstry i znajdz najkrótsza droge z do w grafie z rysunku 1.5. ¸ ¸ 6. Zastosuj algorytm Forda-Bellmana do grafu z rysunku 1.5. 7. Znajdz najkrótsza droge z do w grafach z rysunków 1.3 i 1.4. ¸ ¸ 8. Zastosuj algorytm Forda-Bellmana do grafów z rysunków 1.3 i 1.4. 12 RozdziaÅ‚ 1. Grafy skierowane 1.7 Problemy 1.7.1 Cykl Eulera w grafie skierowanym Cykl Eulera w grafie skierowanym jest to droga zamkniÄ™ta przechodzÄ…ca przez każdÄ… krawÄ™dz 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 wierz- choÅ‚ku liczba krawÄ™dzi wchodzÄ…cych jest równa liczbie krawÄ™dzi wychodzÄ…cych. Jeżeli
w jest pÄ™tla , to liczymy jÄ… jako krawÄ™dz wchodzÄ…cÄ… do i jako wychodzÄ…cÄ… grafie z . Zaproponuj algorytm wynajdywania cyklu Eulera w grafie skierowanym. Które z grafów przedstawionych na rysunkach w tym rozdziale maja cykle Eulera? ¸ 1.7.2 CiÄ…g 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 jest ciągiem de Bruijna rzędu 3 ( występuje na pozycjach 7, 8 i ciąg
1, a na pozycjach 8, 1 i 2).
Aby otrzymaż ciąg de rzędu rozważmy następujący graf skierowany G=(V,E). Bruijna
Wierzchołki grafu to zbiór ciągów bitów długosci . Dwa wszystkich
wierzchołki , tworzą krawędz, wtedy i tylko wtedy, gdy ostatnich
bitów jest takie samo jak pierwsze bitów . Krawędz 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 .