• Nie Znaleziono Wyników

Rozdzial 10 - Grafy skierowane

N/A
N/A
Protected

Academic year: 2021

Share "Rozdzial 10 - Grafy skierowane"

Copied!
12
0
0

Pełen tekst

(1)

Matematyka Dyskretna

Andrzej Szepietowski

(2)
(3)

Rozdział 1

Grafy skierowane

W tym rozdziale zajmiemy si¸e algorytmami wyszukiwania najkrótszej drogi w grafach skierowanych. Ka˙zdej kraw¸edzi przypiszemy długo´s´c (wag¸e) i algorytmy b¸ed¸a szuka´c drogi, dla której suma długo´sci kraw¸edzi jest najmniejsza.

1.1

Grafy skierowane

Definicja 1.1 Graf skierowany (zorientowany) to dowolna para

, ze sko´nczo-nym zbiorem wierzchołków

i zbiorem kraw¸edzi  

.

Rysunek 1.1: Graf skierowany

  

 

W grafie skierowanym kraw¸ed´z



jest skierowana od wierzchołka

do wierz-chołka

. Wierzchołek

nazywamy pocz¸atkiem kraw¸edzi, a wierzchołek

ko ´ncem. Na rysunkach kraw¸edzie skierowane b¸edziemy przedstawia ´c jako strzałki. Droga w grafie skierowanym jest to ci¸ag wierzchołków

 !"$#%#$#&'

, taki, ˙ze dla ka˙zdego( *),+ ( +.-, wierzchołki /01! , "/

s¸a poł¸aczone kraw¸edzi¸a, czyli

2/01!" "/3 546

. Drog¸e

78 !9%#$#%#$ '

nazywamy cyklem je˙zeli

":;'

, oraz wszystkie wierzchołki

8!"$#$#%#& '

s¸a ró˙zne. Na przykład ci¸ag wierzchołków

       

jest cyklem w grafie z rysunku 1.1. Dla grafów skierowanych dopuszczamy cykl zło˙zony z dwóch wierzchołków, na przykład ci¸ag

  



stanowi cykl w grafie z rysunku 1.1. Kraw¸ed´z typu

2< 1

, w której pocz¸atek i koniec pokrywaj¸a si¸e, nazywamy p¸etl¸a. Mo˙zna przyj¸a´c, ˙ze p¸etla jest cyklem długo´sci jeden.

(4)

Definicja 1.2 Graf skierowany jest (silnie) spójny, je˙zeli dla ka˙zdych 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´s´cmy teraz, ˙ze ka˙zdej kraw¸edzi

przypisano długo´s´c (wag¸e) 



. Dopuszczamy przy tym ujemne długo´sci. Dla ka˙zdej drogi w grafie

7%#$#$#% 

zdefiniujmy jej długo´s´c jako sum¸e długo´sci kraw¸edzi, czyli

  /! 2"/01!" "/3 # Je˙zeli 

, droga składa si¸e z pojedynczego punktu, to przyjmujemy, ˙ze jej długo´s´c wy-nosi 0. W tym rozdziale interesuj¸a nas algorytmy wyznaczania najkrótszej drogi ł¸acz¸acej dwa wierzchołki i w grafie.

Przykład 1.4 Jako przykład zastosowania algorytmu wyszukiwania najkrótszej drogi w

grafie rozpatrzmy sie´c poł¸acze´n, czyli graf, w którym kraw¸edzie reprezentuj¸a ł¸acza pomi¸edzy w¸ezłami. Z ka˙zd¸a kraw¸edzi¸a

zwi¸azane jest prawdopodobie´nstwo





, ˙ze kraw¸ed´z za-działa bez awarii. Zakładamy, ˙ze awarie poszczególnych kraw¸edzi s¸a od siebie niezale˙zne. Przyjmijmy teraz długo´s´c kraw¸edzi

jako        

. Najkrótsza droga jest wtedy drog¸a z najmniejszym prawdopodobie´nstwem awarii.

Łatwo zauwa˙zy´c, ˙ze je˙zeli w grafie s¸a cykle o ujemnej długo´sci, to dla pewnych par wierzchołków nie istnieje najkrótsza droga mi¸edzy nimi. Powtarzaj¸ac przej´scie wzdłu˙z cyklu mo˙zna wtedy otrzymywa´c drogi o długo´sci dowolnie małej. Dlatego w dalszej cz¸e´sci b¸edziemy zakłada´c, ˙ze w grafie wszystkie cykle s¸a dodatniej długo´sci.

Problem znajdowania najkrótszej drogi w grafie nieskierowanym, je˙zeli wszystkie kraw¸edzie maj¸a dodatnie długo´sci, mo˙zna sprowadzi´c do przypadku grafu skierowane-go. Wystarczy ka˙zd¸a kraw¸ed´z

< 

zast¸api´c przez dwie kraw¸edzie2< 

i 

. Je˙zeli w grafie s¸a kraw¸edzie o ujemnych długo´sciach, to sposób ten prowadzi do powstania cykli ujemnej długo´sci.

Opisane tu algorytmy składaj¸a si¸e z dwóch etapów. W pierwszym etapie wyznaczamy długo´sci najkrótszych dróg z do wszystkich wierzchołków w grafie. A dopiero w drugim

etapie wyznaczymy najkrótsz¸a drog¸e z do.

Najpierw opiszemy drugi etap, czyli jak znale´z´c najkrótsz¸a drog¸e z do, je˙zeli znane

s¸a odległo´sci z do wszystkich wierzchołków grafu. Algorytm ten b¸edziemy opisywa ´c

przy pomocy przykładu grafu z rysunku 1.2. Dla prostoty algorytmu przyjmujemy

2<  ,

, je˙zeli

 4

. Załó˙zmy, ˙ze macierz zawiera odległo´sci od do wszystkich pozostałych wierzchołków grafu.

(5)

1.3. Algorytm Forda-Bellmana 5

Rysunek 1.2: Graf z długo´sciami kraw¸edzi

     )  )  v s a b c d t   0 1 0 -1 1 2   zawiera odległo´s´c

od , czyli długo´s´c najkrótszej drogi z do



. Przyjmujemy przy tym, ˙ze

  

oraz   

, je˙zeli nie ma ˙zadnej drogi z do



. Najkrótsz¸a drog¸e od do wyznaczamy teraz od ko ´nca. Najpierw szukamy przedostatniego

wierz-chołka tej drogi, pó´zniej trzeciego od ko ´nca i tak dalej. Przedostatni wierzchołek

naj-krótszej drogi spełnia równo´s´c

     2  #

W naszym przykładzie tylko wierzchołek

 



spełnia t¸a równo´s´c. Zauwa˙zmy, ˙ze isnieje droga długo´sci



z do



. Je˙zeli przedłu˙zymy t¸e drog¸e o kraw¸ed´z

  , to otrzymamy drog¸e z do długo´sci     ,  

, czyli najkrótsz¸a drog¸e z do. Jest te˙z

jasne, ˙ze taki wierzchołek

istnieje. Jest to przedostatni wierzchołek dowolnej najkrótszej drogi z do. Trzeci od ko ´nca wierzchołek

 spełnia równo´s´c        2< 

W naszym przykładzie jest to

 



i tak dalej, a˙z odtworzymy cał¸a drog¸e          .

Algorytm ten musi zako ´nczy´c prac¸e, poniewa˙z kolejne wierzchołki odsłanianej drogi s¸a ró˙zne. Inaczej mieliby´smy cykl, co nie jest mo˙zliwe, je˙zeli w grafie wszystkie cykle s¸a dodatniej długo´sci.

1.3

Algorytm Forda-Bellmana

W tym podrozdziale opiszemy pierwszy z algorytmów obliczania warto´sci macierzy .

Mówi¸ac z grubsza polega on na przyj¸eciu najpierw pewnych górnych oszacowa ´n na war-to´sci



i poprawianiu ich potem. Je˙zeli na jakim´s etapie pracy algorytmu mamy war-to´s´c

 

, to znaczy, ˙ze znaleziono ju˙z drog¸e od do



długo´sci  

. Je˙zeli pó´zniej algo-rytm znajdzie krótsz¸a drog¸e, to warto´s´c

 

zostanie poprawiona. Znajdowanie krotszej drogi polega na szukaniu wierzchołka

 spełniaj¸acego warunek      3#

(6)

Algorytm [Forda-Bellmana]

Dane wej´sciowe: Graf skierowany

, długo´sci kraw¸edzi 

. Dane wyj´sciowe: Macierz odległo´sci z do wszystkich wierzchołków.

 dla ka˙zdego  4 podstaw           ;  dla ka˙zdego -od 1 do zrób:  dla ka˙zdego   zrób: dla ka˙zdego4  zrób:    (         2< 

Algorytm Forda-Bellmana najpierw podstawia 

     . Jest to pierwsze przybli˙zenie. Potem w

rundach, dla ka˙zdego wierzchołka 4 

algorytm sprawdza, czy istnieje wierzchołek

, który wyznacza krótsz¸a drog¸e do

.

Przykład 1.5 Algorytm Forda-Bellmana zastosowany do grafu z rysunku 1.2 działa w

nast¸epuj¸acy sposób: Na pocz¸atku macierz przedstawia si¸e nast¸epuj¸aco:

v s a b c d t   0  2 2 1 

W pierwszej iteracji zewn¸etrznej p¸etli, dla

- )

, algorytm dla ka˙zdego wierzchołka

 

sprawdza, czy istnieje wierzchołek



, przez który wiedzie krótsza droga do

 . I tak dla    , stwierdza,        6 )      

. Oznacza, to, ˙ze droga z do



a potem kraw¸edzi¸a do

jest krótsza od dotychczasowego oszacowania



. Dlatego algorytm podstawia 3 na

  . Dla    warto´s´c   ,

nie zmienia si¸e poniewa˙z droga przez

        )5

nie jest krótsza od dotychczasowego oszacowania. Dla 



algorytm znajduje krótsz¸a drog¸e przez 

;        )   )     i zmienia   na ) . Dla: 

warto´s´c macierzy nie jest

korygowana, a dla 

algorytm odnajduje drog¸e przez

 ,      5 )    i posyła   

. Tak wi¸ec po pierwszej iteracji p¸etli macierz ma nast¸epuj¸ace

warto´sci:

v s a b c d t

  

0 3 2 -1 1 4 W drugiej iteracji dla

- 

tylko warto´s´c





zostaje poprawiona, gdy˙z

       ) )       . Nowa warto´s´c   

. Pozostałe warto´sci nie zmieniaj¸a si¸e i po drugiej iteracji macierz wygl¸ada tak

v s a b c d t

  

0 3 0 -1 1 4 W trzeciej iteracji p¸etli dla

- 

algorytm najpierw znajduje krótsz¸a drog¸e do

(przez

) i poprawia



 )

, a potem znajduje krótsz¸a drog¸e do (przez



) i poprawia  

. Po trzeciej iteracji macierz wygl¸ada tak

v s a b c d t

  

(7)

1.4. Dodatnie długo´sci, algorytm Dijsktry 7

Jest to ostateczna posta´c macierzy, gdy˙z w czwartej iteracji jej warto´sci nie s¸a ju˙z popra-wione.

Aby udowodni´c, ˙ze algorytm działa poprawnie poka˙zemy przez indukcj¸e, ˙ze po(-tej

ite-racji zewn¸etrznej p¸etli 

zawiera długo´s´c najkrótszej drogi z do



zawieraj¸acej co najwy˙zej(

)

kraw¸edzi. Przed pierwsz¸a iteracj¸a  

zawiera długo´s´c drogi zło˙zonej z jednej lub zero kraw¸edzi. Załó˙zmy, ˙ze po( iteracjach zawiera długo´s´c najkrótszej drogi

z( )

lub mniej kraw¸edziami. Przypu´s´cmy, ˙ze    %#$#$#%   !   

jest najkrótsz¸a spo´sród dróg z do



z(

lub mniej kraw¸edziami. Droga

   $#%#$#$



!

jest najkrótsz¸a drog¸a do



!

z( )

lub mniej kraw¸edziami. Gdyby istniała krótsza droga do



!

z co najwy˙zej( )

kraw¸edziami, to mieliby´smy krótsz¸a drog¸e do

z co najwy˙zej

(

kraw¸edziami; sprzeczno´s´c. Czyli długo´s´c drogi   %#$#$#$   ! jest równa   ! 

po( tej iteracji. Dlatego po( )

iteracji  

b¸edzie zawiera´c długo´s´c najkrótszej drogi do



z(

kraw¸edziami.

Po zako´nczeniu pracy algorytmu  

zawiera długo´s´c najkrótszej drogi z do



, poniewa˙z, je˙zeli w grafie wszystkie cykle s¸a dodatniej długo´sci, to w minimalnej drodze ˙zaden wierzchołek nie powtarza si¸e i droga nie zawiera wi¸ecej ni˙z

)

kraw¸edzi. Algorytm zawiera trzy p¸etle zagnie˙zd˙zone jedna w drug¸a. Zewn¸etrzna p¸etla wykonuje si¸e

razy. Dla ka˙zdego

-wewn¸etrzna p¸etla wykonuje si¸e )

razy, raz dla ka˙zdego

 4  



, a dla ka˙zdego



mamy wykona ´n najbardziej wewn¸etrznej p¸etli, czyli czas

działania algorytmu mo˙zna oszacowa´c przez

  $  )9  +    , gdzie i  to stałe. Tak wi¸ec zło˙zono´s´c czasowa algorytmu wynosi 



.

1.4

Dodatnie długo´sci, algorytm Dijsktry

W tym podrozdziale podamy algorytm znajdowania odległo´sci od ´zródła do wszystkich wierzchołków grafu dla przypadku, gdy długo´sci wszystkich kraw¸edzi s¸a dodatnie.

Algorytm Dijkstry

Dane wej´sciowe: Graf skierowany

 

, dodatnie długo´sci kraw¸edzi





 .

Dane wyj´sciowe: Macierz odległo´sci z do wszystkich wierzchołków.

 dla ka˙zdego  4 podstaw            ;      dopóki  powtarzaj:  wybierz wierzchołek  4 taki, ˙ze      4       ;  dla ka˙zdego  4 podstaw     3    2< 

(8)

Podobnie jak w poprzednim algorytmie na pocz¸atku macierz   zawiera długo´s´c kraw¸edzi   1

, a je˙zeli takiej kraw¸edzi nie ma, to  

. Zbiór

zawiera wierz-chołki, dla których nie jest jeszcze wyliczona dokładna odległo´s´c od . Poni˙zej

poka˙ze-my, ˙ze dla

 4

,  

zawiera długo´s´c najkrótszej spo´sród dróg, której przedostatni wierzchołek nale˙zy do



. Nast¸epnie w ka˙zdej iteracji zewn¸etrznej p¸etli bierzemy wierzchołek

 4

, który le˙zy najbli˙zej od . Jak si¸e za chwile oka˙ze ten wierzchołek ma

ju˙z prawidłow¸a warto´s´c 

i dlatego jest on usuwany z

. Teraz korygujemy warto´sci

  

dla pozostałych wierzchołków z

uwzgl¸edniaj¸ac drogi, w których wierzchołek



jest przedostatni.

Przykład 1.6 Rysunek 1.3 przedstawia graf z dodatnimi długo´sciami kraw¸edzi.

Poni˙z-sza tabela ilustruje działanie algorytmu Dijkstry. Pokazuje jak w kolejnych iteracjach zewn¸etrznej p¸etli wybrano wierzchołek

oraz jak przedstawiaj¸a si¸e zbiór

i macierz . iteracja                  0           0 1  5   1          0 1 2 4   2       0 1 2 3  6 3      0 1 2 3 4 6 4    0 1 2 3 4 5 5  0 1 2 3 4 5

Rysunek 1.3: Graf z dodatnimi długo´sciami kraw¸edzi

    )  ) ) )  ) )

Aby udowodni´c poprawno´s´c tego algorytmu, poka˙zemy przez indukcj¸e, ˙ze po ka˙zdej ite-racji p¸etli mamy

(a) dla ka˙zdego wierzchołka

 4 

, 

zawiera ostateczn¸a długo´s´c minimalnej drogi z do



.

(b) dla ka˙zdego wierzchołka 4

,  

zawiera długo´s´c minimalnej spo´sród wszyst-kich dróg z do



, w których przedostatni wierzchołek nale˙zy do

Przed pierwsz¸a p¸etl¸a tylko 4

, a dla ka˙zdego innego wierzchołka

 4 ,      

. Warunki (a) i (b) s¸a wi¸ec spełnione, Poniewa˙z w najkrótszej drodze do



(9)

1.5. Najkrótsza droga w grafach acyklicznych 9

W kolejnej iteracji wybieramy wierzchołek

 4

, dla którego  

jest najmniejsza. Po-ka˙zemy, ˙ze warto´s´c

 

jest ju˙z ostateczna, czyli jest równa długo´sci najkrótszej spo´sród wszystkich dróg z do



. Przypu´s´cmy, ˙ze istnieje krótsza droga i niech b¸edzie takim wierzchołkiem, ˙ze droga z do



zawiera tylko wierzchołki z

i wierzchołek przed nie nale˙zy do

. Mamy



, bo inaczej mieliby´smy sprzeczno´s´c z zało˙zeniem induk-cyjnym, ˙ze



zawiera długo´s´c najkrótszej spo´sród dróg, z których przedostatni wierz-chołek nie jest z

. Zauwa˙zmy, ˙ze droga z do ma długo´s´c równ¸a aktualnej warto´sci 



. Z drugiej strony poniewa˙z długo´sci s¸a nieujemne mamy

      +      

sprzeczno´s´c z zasad¸a wyboru



. Dlatego

mo˙ze by´c usuni¸ety z

. Nast¸epnie algorytm sprawdza dla ka˙zdego4

, czy istnieje jaka´s droga z do



, w której wierzchołek

jest przedostani i która jest krót-sza od aktualnej warto´sci

 

. Zauwa˙zmy, ˙ze dotychczasowa warto´s´c  

zawierała długo´s´c najkrótszej drogi do



, w których przedostatnim wierzchołkiem był jaki´s wierz-chołek z



ró˙zny od



. Dlatego po tym sprawdzeniu b¸edzie spełniony warunek (b). Czas działania algorytmu Dijkstry jest







, poniewa˙z mamy tylko podwójne za-gnie˙zd˙zenie p¸etli i liczba iteracji obu jest ograniczona przez .

1.5

Najkrótsza droga w grafach acyklicznych

Inny przypadek, kiedy mo˙zna szybciej ni˙z w czasie 



policzy´c długo´sci najkrótszych dróg do wszystkich wierzchołków w grafie, zachodzi wtedy, gdy w grafie nie ma cykli. Najpierw poka˙zemy, ˙ze w grafie acyklicznym mo˙zna tak ponumerowa ´c wierzchołki tak, ka˙zda kraw¸ed´z prowadziła od wierzchołka z ni˙zszym numerem do wierzchołka z wy˙z-szym numerem.

Lemat 1.7 W ka˙zdym skierowanym grafie

 

bez cykli istnieje wierzchołek, do którego nie wchodz¸a ˙zadne kraw¸edzie.

Dowód: We´zmy dowolny wierzchołek !

. Je˙zeli nie wchodzi do niego, ˙zadna kraw¸ed´z, to koniec, znale´zli´smy. Je˙zeli wchodzi, to niech



 b¸edzie wierzchołkiem, z którego

pro-wadzi kraw¸ed´z do

8!

. Albo



 jest dobry, albo prowadzi do niego kraw¸ed´z od jakiego´s

wierzchołka



itd. Poniewa˙z zbiór wierzchołków jest sko ´nczony i nie ma w nim cy-klu, wi¸ec ten ci¸ag musi si¸e kiedy´s sko´nczy´c i dojdziemy do wierzchołka, do którego nie

prowadz¸a ˙zadne kraw¸edzie. 

Lemat 1.8 W skierowanym grafie acyklicznym

 

mo˙zna tak ponumerowa´c wierzchołki, aby ka˙zda kraw¸ed´z prowadziła od wierzchołka z ni˙zszym numerem do wierz-chołka z wy˙zszym numerem, czyli istnieje wzajemnie jednoznaczna funkcja 

 



)$#%#$#&  

taka, ˙ze je˙zeli

2<  4 , to 21   2 . Dowód:

(10)

Jako dowód przedstawimy algorytm, który odpowiednio numeruje wierzchołki gra-fu kolejnymi liczbami naturalnymi. Najpierw s¸a numerowane i usuwane z gragra-fu wierz-chołki, do których nie wchodz¸a ˙zadne kraw¸edzie. Po usuni¸eciu tych wierzchołków i wychodz¸acych z nich kraw¸edzi znowu otrzymamy graf bez cykli, który zawiera wierz-chołki bez wchodz¸acych kraw¸edzi. Teraz te z koleji wierzwierz-chołki s¸a numerowane kolejny-mi numerakolejny-mi i usuwane z grafu, i tak dalej a˙z do ponumerowania wszystkich

wierzchoł-ków. 

Rysunek 1.4: Graf acykliczny

    ) ) )   )

Przykład 1.9 Zastosujmy powy˙zszy algorytm do grafu z rysunku 1.4. Wierzchołkami bez

wchodz¸acych kraw¸edzi s¸a i

 . Przypisujemy wi¸ec   ) i     oraz usuwa-my i 

z grafu wraz z wychodz¸acymi z nich kraw¸edziami. Teraz wierzchołek

nie ma wchodz¸acych kraw¸edzi, przypisujemy mu





 

i usuwamy z grafu. W dalszych kro-kach algorytm przypisze warto´sci

    ,   oraz   . Ostatecznie hunkcja  ma posta´c: v s a b c d t    1 4 2 3 5 6

Przedstawimy teraz algorytm wyliczaj¸acy odległo´sci z do wszystkich wierzchołków w

grafie acyklicznym. Zakładamy przy tym, ˙ze w grafie wierzchołki s¸a ponumerowane tak, jak opisano to w lemacie 1.8. Bez straty ogólno´sci mo˙zna zało˙zy´c, ˙ze jest pierwszy,

poniewa˙z nie ma ´scie˙zek z do wierzchołków o ni˙zszych numerach.

Algorytm wyliczaj¸acy odległo´sci wszystkich wierzchołków w grafie acyklicznym

Dane wej´sciowe: acykliczny graf skierowany ;

, długo´sci kraw¸edzi 



.

Dane wyj´sciowe: Macierz odległo´sci z do wszystkich wierzchołków.

 dla ka˙zdego 4 podstaw          ;  dla ka˙zdego  4

po kolei według numerów zrób:

 dla ka˙zdego   ,    <       2< 

(11)

1.6. Zadania 11

Udowodnimy przez indukcj¸e, ˙ze po(-tej iteracji zewn¸etrznej p¸etli wierzchołki o

nu-merch od 1 do( maj¸a ju˙z prawidłowe warto´sci w macierzy  . Po pierwszej iteracji

ma prawidłow¸a warto´s´c   

. W ( tej iteracji p¸etli (zakładamy, ˙ze wierzchołki o

numerach od 1 do( )

maj¸a ju˙z prawidłowe warto´sci w macierzy ) obliczamy(



. Zauwa˙zmy, ˙ze najkrótsza droga z do

/

przebiega przez wierzchołki o mniejszych od(

numerach. Niech



b¸edzie przedostatnim wierzchołkiem na tej drodze. Długo´s´c tej drogi wynosi    1 "/3     2< "/3

i zostanie odnaleziona w p¸etli.

Poniewa˙z mamy podwójne zagnie˙zd˙zenie p¸etli i w obu liczba iteracji jest ograniczona przez , czas działania algorytmu jest







.

Przykład 1.10 (kontynuacja przykładu 1.9) Je˙zeli zastosujemy ten algorytm do grafu z

rysunku 1.4, to w kolejnych iteracjach zewn¸etrznej p¸etli obliczy on    ,     ,    ) ,    ,     oraz    .

1.6

Zadania

1. Narysuj wszystkie grafy skierowane ze zbiorem wierzchołków 

     . Które z nich s¸a spójne? Które z nich s¸a 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 s¸a spójne?

3. Narysuj mo˙zliwie jak najwi¸ecej nieizomorficznych grafów skierowanych z trzema wierzchołkami       .

4. Narysuj par¸e ró˙znych i izomorficznych grafów skierowanych z mo˙zliwie najmniejsz¸a liczb¸a wierzchołków.

Rysunek 1.5: Graf skierowany

    )  )  ) )  )

5. Zastosuj algorytm Dijkstry i znajd´z najkrótsz¸a drog¸e z do w grafie z rysunku 1.5.

6. Zastosuj algorytm Forda-Bellmana do grafu z rysunku 1.5.

7. Znajd´z najkrótsz¸a drog¸e z do w grafach z rysunków 1.3 i 1.4.

(12)

1.7

Problemy

1.7.1

Cykl Eulera w grafie skierowanym

Cykl Eulera w grafie skierowanym jest to droga zamkni˛eta przechodz ˛aca przez ka˙zd ˛a kraw˛ed´z grafu dokładnie jeden raz. Udowodnij, ˙ze je˙zeli graf skierowany jest spójny jako graf nieskierowany, to ma cykl Eulera wtedy i tylko wtedy, gdy w ka˙zdym jego wierz-chołku liczba kraw˛edzi wchodz ˛acych jest równa liczbie kraw˛edzi wychodz ˛acych. Je˙zeli w grafie jest p˛etla

, to liczymy j ˛a jako kraw˛ed´z wchodz ˛ac ˛a do

i jako wychodz ˛ac ˛a z

.

Zaproponuj algorytm wynajdywania cyklu Eulera w grafie skierowanym.

Które z grafów przedstawionych na rysunkach w tym rozdziale maj¸a cykle Eulera?

1.7.2

Ci ˛

ag de Bruijna

Ci ˛ag de Bruijna rz˛edu to cykliczne ustawienie 

bitów takie, ˙ze ka˙zdy ci ˛ag bitów

wyst˛epuje w tym cyklu dokładnie jeden raz jako kolejnych bitów.

Na przykład ci ˛ag

 ))

jest ci ˛agiem de Bruijna rz˛edu 2 (

)

wyst˛epuje na pozycjach 4 i 1), a ci ˛ag

  ) )))

jest ci ˛agiem de Bruijna rz˛edu 3 (

)) 

wyst˛epuje na pozycjach 7, 8 i 1, a) 

na pozycjach 8, 1 i 2).

Aby otrzyma˙z ci ˛ag de Bruijna rz˛edu rozwa˙zmy nast˛epuj ˛acy graf skierowany G=(V,E).

Wierzchołki grafu



 %)  0 !

to zbiór wszystkich ci ˛agów bitów długosci :)

. Dwa wierzchołki

,4 

tworz ˛a kraw˛ed´z,  4

wtedy i tylko wtedy, gdy ostatnich



bitów

jest takie samo jak pierwsze

bitów

. Kraw˛ed´z ta jest etykietowana ostatnim bitem

. Narysuj graf dla

 , i . Udowodnij, ˙ze: 

Graf jest spójny (jako graf nieskierowany) i posiada cykl Eulera.



Etykiety ka˙zdej drogi długo´sci )

tworz ˛a nazw˛e ostatniego wierzchołka tej drogi.



Cykl Eulera ma

kraw˛edzi i przechodzi przez ka˙zdy wierzchołek dwa razy.



Etykiety cyklu Eulera tworz ˛a ci ˛ag de Bruijna rz˛edu .

Wyznacz ci ˛ag de Bruijna rz˛edu

Obraz

Rysunek 1.1: Graf skierowany
Rysunek 1.2: Graf z długo´sciami kraw¸edzi
Rysunek 1.3: Graf z dodatnimi długo´sciami kraw¸edzi
Rysunek 1.4: Graf acykliczny
+2

Cytaty

Powiązane dokumenty

Asymptotyczna teoria testowania hipotez: graniczne rozk lady statystyk testowych, asympto- tyczna efektywno´s´c test´ow,

Je´sli ka˙zdy sko´ nczony podzbi´ or zbioru Γ jest spe lnialny, zbi´ or Γ te˙z jest spe lnialny. Twierdzenie

Na czworo´scianie foremnym opisano walec w ten spos´ ob, ˙ze dwie krawe ι dzie czwo- ro´scianu le˙za ι ce na prostych sko´snych sa ι ´srednicami podstaw walca2. Oblicz stosunek

Zbi´or warto´sci przyjmowanych przez zmienn¸a losow¸a typu skokowego mo˙ze by´c

Ka˙zde zdanie jest prawdziwe lub

7 Udowodni´ c, ˙ze niezerowy pier´ scien sko´ nczony jest cia lem wtedy i tylko wtedy, gdy nie zawiera w la´ sciwych dzielnikow zera.. 8 Wykaza´ c, ˙ze je˙zeli R jest dziedzina ,

Digraf silnie spójny (z lewej) i digraf, który jest spójny, ale nie jest silnie spójny..

Samochód ma pokona´c nierówno´s´c w kształcie klina (patrz rys.. Kr ˛a˙zki pchni˛eto, przy czym pierwszemu nadano tylko ruch post˛epowy, a drugiemu tak˙ze ruch obrotowy.