Matematyka dyskretna 2002 10 Grafy skierowane

background image

Matematyka Dyskretna

Andrzej Szepietowski

25 czerwca 2002 roku

background image
background image

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.

3

background image

4

Rozdział 1. Grafy skierowane

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¸edzie

2< 

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.

background image

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#

background image

6

Rozdział 1. Grafy skierowane

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˙zdego

4



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



 

0

1

0

-1

1

2

background image

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< 

background image

8

Rozdział 1. Grafy skierowane

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



nie ma p¸etli, wi¸ec drogi, w których

jest przedostatni składaj¸a si¸e tylko z jednej kraw¸edzi.

background image

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˙zdego

4

,

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:

background image

10

Rozdział 1. Grafy skierowane

Jako dowód przedstawimy algorytm, który odpowiednio numeruje wierzchołki gra-

fu kolejnymi liczbami naturalnymi. Najpierw s¸a numerowane i usuwane z grafu 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 wierzchołki s¸a numerowane kolejny-
mi numerami 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< 

background image

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.

8. Zastosuj algorytm Forda-Bellmana do grafów z rysunków 1.3 i 1.4.

background image

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˛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



.


Wyszukiwarka

Podobne podstrony:
Matematyka dyskretna 2002 07 Rekurencja
Matematyka dyskretna 2002 04 Rachunek prawdopodobieństwa
Matematyka dyskretna 2002 01 Oznaczenia
Matematyka dyskretna 2002 11 Poprawność programów
Matematyka dyskretna 2002 04 Rachunek prawdopodobieństwa
Matematyka dyskretna 2002 07 Rekurencja
Matematyka dyskretna 2002 08 Struktury danych
Matematyka dyskretna 2002 01 Oznaczenia
Matematyka dyskretna 2002 03 Kombinatoryka
Matematyka dyskretna 2002 05 Funkcje boolowskie
Matematyka dyskretna 2002 11 Poprawność programów
Matematyka dyskretna 2002 02 Arytmetyka
Matematyka dyskretna 2002 06 Teoria liczb
Wykład z dnia 10.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
PK-I-06, 1 STUDIA - Informatyka Politechnika Koszalińska, Matematyka dyskretna i TPI, 04-10-2012
2002 10 12 matematyka finansowaid 21647
Test 2, 1 STUDIA - Informatyka Politechnika Koszalińska, Matematyka dyskretna i TPI, 04-10-2012
TPI CH 2, 1 STUDIA - Informatyka Politechnika Koszalińska, Matematyka dyskretna i TPI, 04-10-2012
PK-WE Z E, 1 STUDIA - Informatyka Politechnika Koszalińska, Matematyka dyskretna i TPI, 04-10-2012

więcej podobnych podstron