• Nie Znaleziono Wyników

Minimalne drzewa spinaj ¾ ace i najkrótsze ´scie· zki

N/A
N/A
Protected

Academic year: 2021

Share "Minimalne drzewa spinaj ¾ ace i najkrótsze ´scie· zki"

Copied!
18
0
0

Pełen tekst

(1)

Minimalne drzewa spinaj ¾ ace i najkrótsze ´scie· zki

Rozwa·zmy problem budowy sieci kolejowej ÷¾acz ¾acej wybrane miasta. Sie´c ma zapewnia´c mo·zliwo´s´c podró·zy kolej ¾a z dowolnego miasta do ka·zdego innego. Znane s ¾a odleg÷o´sci mi ¾edzy miastami, a koszt budowy jest proporcjonalny do d÷ugo´sci torów. Zale·zy nam na minimalizacji kosztów, czyli na minimalizacji d÷ugo´sci linii kolejowej. Traktuj ¾ac miasta jako wierzcho÷ki, za´s tory mi ¾edzy nimi jako kraw¾edzie, dostajemy pewien graf. Aby móc podró·zowa´c mi ¾edzy dowolnymi miastami, graf musi by´c spójny. Sie´c kolejowa o minimalnej d÷ugo´sci nie mo·ze zawiera´c cykli (bo z cyklu mo·zna usun ¾a´c kraw¾ed´z bez utraty spójno´sci). Tak wi ¾ec szukana sie´c jest drzewem. Aby znale´z´c teoretyczne rozwi ¾azanie problemu, musimy zde…niowa´c poj ¾ecie b ¾ed ¾ace odpowiednikiem d÷ugo´sci torów lub kosztów ich budowy.

Grafem z wagami (grafem wa·zonym) nazywamy par ¾e (G; w), gdzie G jest grafem, za´s w : EG ! [0; 1) funkcj ¾a wag przypisuj ¾ac ¾a kraw¾edziom liczby nieujemne. Liczb ¾e w (k) nazywamy wag ¾a kraw ¾edzi k. Wag ¾a podgrafu G0 nazywamy sum ¾e wag wszystkich kraw¾edzi z G0. Analogicznie de…niujemy graf skierowany z wagami. Istnieje mo·zliwo´s´c rozszerzenia podanych de…nicji przez dopuszczenie wag ujemnych, ale na naszym wyk÷adzie nie b ¾edziemy tego robi´c.

Minimalnym drzewem spinaj ¾acymgrafu G nazywamy drzewo spinaj ¾ace o najmniejszej wadze. Oczywi´scie, graf mo·ze mie´c wiele minimalnych drzew spinaj ¾acych. Zajmiemy si ¾e prob- lemem znajdowania minimalnego drzewa spinaj ¾acego w gra…e spójnym z wagami. Drzewo to mo·zna znale´z´c badaj ¾ac wagi wszystkich drzew spinaj ¾acych grafu. Z twierdzenia Cayleya wynika jednak, ·ze ju·z dla niezbyt du·zego grafu K20musieliby´smy sprawdzi´c 2018drzew spina- j ¾acych, co nie wygl ¾ada zach ¾ecaj ¾aco (oko÷o 8 miliardów lat przy pr ¾edko´sci milion drzew na sekund ¾e).

Omówimy dwa algorytmy znajdowania minimalnego drzewa spinaj ¾acego: algorytm Prima i algorytm Kruskala. Oba opieraj ¾a si ¾e na metodzie budowania drzewa spinaj ¾acego przez do- dawanie kolejnych kraw¾edzi. Oba s ¾a te·z algorytmami zach÷annymi, tzn. w ka·zdym kroku wybierana jest mo·zliwo´s´c w danym momencie najkorzystniejsza. Zaczniemy od algorytmu Prima. Jest on wersj ¾a algorytmu Drzewo, w której w kolejnych iteracjach wybierana jest kraw¾ed´z o najmniejszej wadze, spo´sród tych, które mo·zna wybra´c.

Niech (G; w) b ¾edzie spójnym grafem z wagami oraz a dowolnie wybranym wierzcho÷kiem.

Prim(G; w; a) V0 :=fag E0 :=;

while VGn V0 6= ; do

Wybierz kraw¾ed´z bc o najmniejszej wadze tak ¾a, ·ze b 2 V0 i c 2 VGn V0 V0 := V0[ fcg

1

(2)

E0 := E0[ fbcg T := (V0; E0)

Twierdzenie 1. Wynikiem dzia÷ania procedury Prim jest minimalne drzewo spinaj ¾ace T spójnego grafu z wagami (G; w).

Dowód. Oznaczmy V = VG. Z twierdzenia ?? wynika, ·ze T jest drzewem spinaj ¾acym G.

Rozwa·zmy warunek

(1) G0 = (V0; E0) jest podgrafem pewnego minimalnego drzewa spinaj ¾acego.

Oczywi´scie, warunek (1) zachodzi na wej´sciu, czyli dla G0 = (fag ; ;). Poka·zemy, ·ze warunek (1) jest niezmiennikiem p ¾etli. Za÷ó·zmy, ·ze na pocz ¾atku iteracji, G0 jest podgrafem pewnego minimalnego drzewa spinaj ¾acego T0, czyli E0 ET0. Algorytm wybiera kraw¾ed´z bc tak ¾a, ·ze b 2 V0 i c 2 V n V0. Mo·zliwe s ¾a przypadki

(a) bc 2 ET0.

Wtedy na ko´ncu iteracji E0 ET0. Oznacza to, ·ze G0 jest podgrafem T0, czyli zachodzi (1).

(b) bc =2 ET0.

W drzewie T0 istnieje ´scie·zka prosta d ÷¾acz ¾aca b i c. ´Scie·zka ta nie zawiera kraw¾edzi bc (bo bc =2 ET0). Z w÷asno´sci ?? wynika, ·ze d musi zawiera´c kraw¾ed´z b0c0 tak ¾a, ·ze b0 2 V0 i c0 2 V n V0. Poniewa·z c0 2 V= 0, wi ¾ec b0c0 2 E= 0.

Rozwa·zmy graf

T0 = (T0n fb0c0g) [ fbcg . Na ko´ncu iteracji mamy V0 V = VT0 oraz

E0 = E0n fb0c0g (ET0 n fb0c0g) [ fbcg = ET0.

Oznacza to, ·ze G0 jest podgrafem T0. Aby udowodni´c (1), wystarczy pokaza´c, ·ze T0 jest minimalnym drzewem spinaj ¾acym.

Dla dowolnych wierzcho÷ków z VT0 = VT0 istnieje ´scie·zka ÷¾acz ¾aca je w T0. Zast ¾epuj ¾ac na tej ´scie·zce kraw¾ed´z b0c0 ´scie·zk ¾a b0 d bc cd 0, dostajemy ´scie·zk¾e ÷¾acz ¾ac ¾a wybrane wierzcho÷ki w T0. Oznacza to, ·ze graf T0 jest spójny. Poniewa·z graf T0 ma tyle samo wierzcho÷ków i tyle samo kraw¾edzi co drzewo T0, wi ¾ec z twierdzenia ?? wynika, ·ze T0 jest drzewem. W rozwa·zanej iteracji algorytm wybra÷kraw¾ed´z bc, a nie b0c0. Wynika st ¾ad, ·ze w (bc) w (b0c0)i w konsekwencji w (T0) w (T0). Zatem T0 jest minimalnym drzewem spinaj ¾acym, co ko´nczy dowód warunku (1) w tym przypadku.

(3)

Z (a) i (b) wnioskujemy, ·ze (1) jest niezmiennikiem p ¾etli. Zatem po zako´nczeniu procedury, drzewo T = G0 jest podgrafem minimalego drzewa spinaj ¾acego, a wi ¾ec musi by´c minimalnym drzewem spinaj ¾acym.

Algorytm Prima bywa te·z nazywany algorytmem Jarnika, algorytmem Prima- Jarnika lub algorytmem DJP (Dijkstra-Jarnik-Prime). Implementuj ¾ac algorytm Prima z u·zyciem macierzy s ¾asiedztwa mo·zna uzyska´c z÷o·zono´s´c obliczeniow ¾a O (V2). U·zywaj ¾ac kopców binarnych lub kopców Fibonacciego mo·zna dosta´c, odpowiednio, z÷o·zono´s´c O (E log V ) i O (E + V log V ). Poni·zszy przyk÷ad ilustruje dzia÷anie algorytmu Prima.

w (T ) = 8.

Omówimy teraz algorytm Kruskala. Wymaga on by kraw¾edzie grafu by÷y uporz ¾ad- kowane wed÷ug niemalej ¾acych wag.

Niech (G; w) b ¾edzie spójnym grafem z wagami, EG = fk1; k2; : : : ; kmg oraz w (k1) w (k2) : : : w (km).

Kruskal(G; w) E0 :=;

for i := 1 to m do

if graf (VG; E0[ fkig) jest acykliczny then E0 := E0[ fkig T := (VG; E0)

Twierdzenie 2. Wynikiem dzia÷ania procedury Kruskal jest minimalne drzewo spinaj ¾ace T spójnego grafu z wagami (G; w).

Dowód powy·zszego twierdzenia pominiemy. Mo·zna go znale´z´c w ksi ¾a·zce "Matematyka dyskretna" Rossa i Wrighta. Idea dowodu jest podobna do idei dowodu twierdzenia 1 i polega na pokazaniu, ·ze graf (VG; E0)jest, w ka·zdej iteracji, podgrafem pewnego minimalnego drzewa spinaj ¾acego. Mo·zna sprawdzi´c, ·ze algorytm Kruskala dzia÷a równie·z dla grafów niespójnych.

Wynikiem jest wtedy minimalny las spinaj ¾acy.

Cwiczenie 1.´ Udowodni´c ostatnie twierdzenie.

(4)

Dzia÷anie algorytmu Kruskala przedstawimy dla tego samego grafu, do którego zastosowal- i´smy algorytm Prima.

Cwiczenie 2.´ Znale´z´c minimalne drzewa spinaj ¾ace i ich wagi dla poni·zszych grafów.

Zastosowa´c

(1) Algorytm Kruskala.

(2) Algorytm Prima, zaczynaj ¾ac od dowolnie wybranego wierzcho÷ka. Operacj ¾e powtórzy´c dla dwóch innych wierzcho÷ków.

Cwiczenie 3.´ W tabeli podane s ¾a odleg÷o´sci mi ¾edzy miastami (w milach). Towarzystwo naftowe chce utworzy´c ruroci ¾ag przechodz ¾acy bezpo´srednio mi ¾edzy miastami. Jaka jest min- imalna d÷ugo´s´c ruroci ¾agu zapewniaj ¾acego przesy÷anie ropy z dowolnego miasta do ka·zdego innego? Narysowa´c schemat najkrótszego ruroci ¾agu.

B D Mil Min O P W

Bismarck 670 758 427 581 211 369

Des Moines 361 252 132 492 680

Milwaukee 332 493 690 759

Minneapolis 357 394 431

Omaha 391 650

Pierre 521

Winnipeg

Posiadacz atlasu samochodowego Polski stan ¾a÷przed problemem znalezienia najkrótszej drogi mi ¾edzy ×odzi ¾a a Szczecinem. Problem ten ÷atwo wyrazi´c w j ¾ezyku grafów. Polega on na znalezienu ´scie·zki o najmniejszej wadze (sumie wag kraw¾edzi) mi ¾edzy ustalonymi wierz- cho÷kami grafu wa·zonego.

(5)

Niech (G; w) b ¾edzie grafem lub digrafem z wagami. Wag ¾a ´scie·zki d = a0k1:::knan nazy- wamy sum ¾e wag kraw¾edzi tej scie·zki, tj.

w (d) = w (k1) + : : : + w (kn) :

Dla ´scie·zki trywialnej (bez kraw¾edzi) przyjmujemy w (d) = 0. Najkrótsz ¾a ´scie·zk ¾a ÷¾acz ¾aca wierzcho÷ek a z wierzcho÷kiem b nazywamy ´scie·zk¾e o najmniejszej wadze spo´sród ÷¾acz ¾acych a z b. Wag ¾e najkrótszej ´scie·zki z a do b oznaczamy m (a; b). Je´sli nie istnieje najkrótsza ´scie·zka z a do b, to przyjmujemy m (a; b) = 1.

Uwaga 1. W naszych rozwa·zaniach pojawi÷y si ¾e wcze´sniej´scie·zki o minimalnej liczbie kraw ¾edzi

÷¾acz ¾ace ustalone wierzcho÷ki. Przyjmuj ¾ac wagi wszystkich kraw ¾edzi równe 1, dostajemy wag ¾e

´scie·zki równ ¾a jej d÷ugo´sci. Tak wi ¾ec ´scie·zka o minimalnej liczbie kraw ¾edzi jest najkrótsz ¾a

´scie·zk ¾a wzgl ¾edem wag w (k) = 1 dla k 2 EG.

W÷asno´s´c 1. Je·zeli wierzcho÷ek b jest osi ¾agalny z wierzcho÷ka a w gra…e [digra…e] G, to istnieje najkrótsza ´scie·zka z a do b. W´sród najkrótszych ´scie·zek z a do b jest taka, w której nie powtarzaj ¾a si ¾e ani wierzcho÷ki ani kraw ¾edzie.

Dowód. Za÷ó·zmy, ·ze wierzcho÷ek b jest osi ¾agalny z wierzcho÷ka a. Mo·zemy przyj ¾a´c, ·ze a 6= b.

Z twierdzenia ?? wynika, ·ze istnieje ´scie·zka prosta bez powtarzaj ¾acych si ¾e wierzcho÷ków z a do b. Poniewa·z liczba takich ´scie·zek jest sko´nczona, wi ¾ec mo·zemy z nich wybra´c ´scie·zk¾e l o najmniejszej wadze. Aby zako´nczy´c dowód wystarczy pokaza´c, ·ze

l jest najkrótsz ¾a ´scie·zk ¾a z a do b:

Przypu´s´cmy nie wprost, ·ze tak nie jest. Spo´sród wszystkich ´scie·zek, które ÷¾acz ¾a a z b i maj ¾a wag ¾e mniejsz ¾a ni·z l wybierzmy ´scie·zk¾e d o najmniejszej liczbie kraw¾edzi. Poniewa·z w (d) < w (l) wi ¾ec d nie jest ´scie·zk ¾a prost ¾a bez powtarzaj ¾acych si ¾e wierzcho÷ków i musi si ¾e w niej powtarza´c pewien wierzcho÷ek c (tw. ??)

d = a : : : c : : : c : : : b.

Pomijaj ¾ac w d pod´scie·zk¾e c : : : c dostajemy ´scie·zk¾e d0 ÷acz ¾ac ¾a a z b. Pomini ¾ete kraw¾edzie maj ¾a wagi nieujmne, wi ¾ec w (d0) w (d) < w (l). Z drugiej strony d0 ma mniej kraw¾edzi ni·z d. Zatem na mocy de…nicji d dostajemy w (d0) w (l). Otrzymana sprzeczno´s´c ko´nczy dowód.

Z ostatniej w÷asno´sci wynika, ·ze najkrótsz ¾a ´scie·zk¾e mo·zna wyznaczy´c badaj ¾ac wagi wszys- tkich ´scie·zek prostych bez powtarzaj ¾acych si ¾e wierzcho÷ków ÷¾acz ¾acych ustalone wierzcho÷ki.

Metoda ta nie ma jednak ·zadnego praktycznego znaczenia. W dalszej cz ¾e´sci wyk÷adu omówimy algorytmy szukania najkrótszych ´scie·zek na tyle szybkie by móc je stosowa´c w praktyce. Za- czniemy od sformu÷owania kilku wariantów rozwa·zanego problemu.

Szukanie najkrótszej ´scie·zki mi ¾edzy ustalon ¾a par ¾a wierzcho÷ków.

Szukanie najkrótszej ´scie·zki mi ¾edzy ustalonym wierzcho÷kiem s, a pozosta÷ymi wierz- cho÷kami grafu. Mówimy wtedy o problemie najkrótszych ´scie·zek z jednym

´zród÷em. W przypadku grafów skierowanych rozwa·za si ¾e równie·z problem szukania

(6)

najkrótszych ´scie·zek ze wszystkich wierzcho÷ków do ustalonego wierzcho÷ka t (najkrót- sze ´scie·zki z jednym uj´sciem).

Szukanie najkrótszych ´scie·zek mi ¾edzy wszystkimi parami wierzcho÷ków.

Oczywi´scie, znaj ¾ac rozwi ¾azanie problemu w jednym z wariantów, potra…my go rozwi ¾aza´c w dwu pozosta÷ych. Ze wzgl ¾edu na wydajno´s´c, dla ró·znych wariantów problemu stosuje si ¾e jednak ró·zne algorytmy. Na wyk÷adzie ograniczymy si ¾e do dwóch algorytmów rozwi ¾azuj ¾acych problem najkrótszych ´scie·zek z jednym ´zród÷em. Zaczniemy od kilku uwag pokazuj ¾acych, ·ze rozwa·zania mo·zemy ograniczy´c do skierowanych grafów prostych.

Je´sli wierzcho÷ek b jest osi ¾agalny z wierzcho÷ka a, to istnieje najkrótsza ´scie·zka z a do b w której nie powtarzaj ¾a si ¾e wierzcho÷ki, a wi ¾ec nie ma p ¾etli. Oznacza to, ·ze usuni ¾ecie p ¾etli z grafu [digrafu] nie zmienia wag najkrótszych ´scie·zek. Mo·zemy wi ¾ec ograniczy´c si ¾e do szukania najkrótszych ´scie·zek w grafach i digrafach bez p ¾etli.

Wagi najkrótszych ´scie·zek nie zmieni ¾a si ¾e równie·z, je´sli spo´sród kraw¾edzi wielokrot- nych ÷¾acz ¾acych ustalone wierzcho÷ki usuniemy wszystkie oprócz kraw¾edzi o najm- niejszej wadze (jednej). Mo·zemy wi ¾ec ograniczy´c rozwa·zania do grafów i digrafów bez kraw¾edzi wielokrotnych, a uwzgl ¾edniaj ¾ac poprzedni punkt, do grafów [digrafów]

prostych.

Przypu´s´cmy, ·ze znamy metod ¾e szukania najkrótszych ´scie·zek dla skierowanych grafów prostych. Niech (G; w) b ¾edzie nieskierowanym grafem prostym z wagami. Rozwa·zmy skierowan ¾a wersj ¾e grafu G, czyli digraf GS o tych samych wierzcho÷kach oraz kraw¾edzi- ach zde…niowanych warunkiem

(a; b)2 EGS , fa; bg 2 EG:

W digra…e GS de…niujemy wagi przyjmuj ¾ac wS((a; b)) = w (fa; bg). Za÷o·zyli´smy, ·ze w digra…e wa·zonym (GS; wS)potra…my znale´z´c najkrótsz ¾a ´scie·zk¾e d mi ¾edzy pewnymi wierzcho÷kami. ×atwo sprawdzi´c, ·ze najkrótsz ¾a ´scie·zk ¾a mi ¾edzy tymi wierzcho÷kami w (G; w) jest ´scie·zka d0 powsta÷a z d przez zast ¾apienie kraw¾edzi (ai 1; ai) kraw¾edziami fai 1; aig. Tak wi ¾ec mo·zemy ograniczy´c nasze rozwa·zania do skierowanych grafów prostych.

Cwiczenie 4.´ Pokaza´c, ·ze je·zeli d = a0a1: : : an jest najkrótsz ¾a ´scie·zk ¾a z a0 do an w prostym digra…e wa·zonym (GS; wS), to d0 = a0a1: : : an jest najkrótsz ¾a ´scie·zk ¾a mi ¾edzy tymi wierz- cho÷kami w (G; w).

Szukanie najkrótszych ´scie·zek w prostych grafach skierowanych zaczniemy od udowodnienia dwóch ÷atwych, ale bardzo przydatnych w÷asno´sci.

W÷asno´s´c 2. Pod´scie·zki najkrótszych ´scie·zek s ¾a najkrótszymi ´scie·zkami, tzn. je´sli d = a0a1: : : an jest najkrótsz ¾a ´scie·zk ¾a z a0 do an w wa·zonym gra…e skierowanym (G; w), to dla dowolnych 0 i < j n, pod´scie·zka d0 = ai: : : aj jest najkrótsz ¾a ´scie·zk ¾a z ai do aj.

Dowód. Przypu´s´cmy nie wprost, ·ze istnieje ´scie·zka d00 z ai do aj taka, ·ze w (d00) < w (d0).

Wtedy ´scie·zka

e

d = a0: : : aid00aj: : : an

(7)

÷¾aczy a0 z an oraz w d < w (d), co jest sprzeczne z za÷e o·zeniem.

W÷asno´s´c 3 (Nierówno´s´c trójk ¾ata). Dla dowolnego wierzcho÷ka s i dowolnej kraw ¾edzi (a; b) grafu skierowanego z wagami (G; w) zachodzi

m (s; b) m (s; a) + w (a; b) :

Dowód. Za÷ó·zmy najpierw, ·ze a nie jest osi ¾agalny z s. Nie istnieje wi ¾ec najkrótsza ´scie·zka z s do a i st ¾ad

m (s; a) + w (a; b) =1 + w (a; b) = 1 m (s; b) :

Za÷ó·zmy z kolei, ·ze a jest osi ¾agalny z s. Z w÷asno´sci 1 wynika, ·ze istnieje najkrótsza ´scie·zka dsa z s do a. Dodaj ¾ac do niej kraw¾ed´z (a; b) dostajemy scie·zk¾e dsab ÷¾acz ¾ac ¾a s z b. Zatem

m (s; b) w (dsab) = w (dsa) + w (b) = m (s; a) + w (a; b) :

Niech G = (V; E) b ¾edzie digrafem z wagami, za´s s ustalonym wierzcho÷kiem G. Drzewem najkrótszych ´scie·zek o korzeniu s nazywamy podgraf G0 = (V0; E0) digrafu G taki, ·ze

V0 sk÷ada si ¾e ze wszystkich wierzcho÷ków osi ¾agalnych z s.

G0 jest drzewem skierowanym z korzeniem s.

Dla dowolnego wierzcho÷ka a 2 V0, jedyna ´scie·zka z s do a w G0 jest najkrótsz ¾a ´scie·zk ¾a z s do a w G.

Rozwa·zmy wa·zony graf skierowany

Wagi najkrótszych ´scie·zek z wierzcho÷ka s wynosz ¾a: m (s; s) = 0; m (s; a) = 3; m (s; b) = 9;

m (s; c) = 5; m (s; d) = 11 Drzewami najkrótszych ´scie·zek s ¾a np.

Omówimy dwa algorytmy rozwi ¾azujace problem najkrótszych ´scie·zek z jednym ´zród÷em w prostym digra…e z wagami - algorytm Bellmana-Forda i algorytm Dijkstry. Istota dzi- a÷ania obu algorytmów jest podobna. Dla ustalonego wierzcho÷ka s, buduj ¾a one dwa wektory:

p = [p (a)]a2V i l = [l (a)]a2V. Pierwszy jest wektorem poprzedników drzewa najkrótszych

´scie·zek o korzeniu s. Jego znajomo´s´c pozwala na wyznaczenie najkrótszych ´scie·zek z s do innych wierzcho÷ków grafu. Drugi wektor przechowuje wagi najkrótszych ´scie·zek o pocz ¾atku

(8)

s. Wektory s ¾a w stopniowo "poprawiane" w trakcie analizy kolejnych fragmentów grafu.

Na pocz ¾atku jedyn ¾a znan ¾a nam najkrótsz ¾a ´scie·zk ¾a jest ´scie·zka trywialna z s do s. Zatem przyjmujemy l (s) = 0 i p (s) = ; (s nie ma na tej ´scie·zce poprzednika). Dla pozosta÷ych wierzcho÷ków najkrótsze ´scie·zki nie s ¾a znane. Przyjmujemy wi ¾ec p (a) = ; i l (a) = 1 dla a 6= s. Ustawienie warto´sci pocz ¾atkowych jest realizowane przez procedur ¾e Init

Init(G; s)

for ka·zdy a 2 VG do l (a) :=1 p (a) := ; l (s) := 0

Po zainicjowaniu algorytmy rozpoczynaj ¾a "poprawianie" wektorów p i l. Polega to na bada- niu kolejnych kraw¾edzi i sprawdzaniu czy uwzgl ¾ednienie badanej kraw¾edzi nie zmniejszy wagi której´s ze znalezionych do tej pory najkrótszych ´scie·zek. Operacja ta nazywa si ¾e relaksacj ¾a kraw ¾edzi. Jest realizowana przez procedur ¾e Relax.

Relax(a; b)

if l (a) + w (a; b) < l (b) then l (b) := l (a) + w (a; b) p (b) := a

Przed rozpocz ¾eciem relaksacji s ¾a zde…niowane bie·z ¾ace warto´sci l (a) i l (b), czyli wagi na- jkrótszych spo´sród znalezionych do tej pory ´scie·zek z s do a i z s do b (mog ¾a by´c równe 1 je·zeli ·zadna ´scie·zka nie zosta÷a znaleziona). Mamy równie·z wierzcho÷ki p (a) i p (b) b ¾ed ¾ace poprzednikami a i b na tych ´scie·zkach (mo·ze by´c ;). Rozwa·zmy przypadek gdy l (a) < 1 oraz l (b) < 1. Oznacza to, ·ze najkrótsza znaleziona do tej pory ´scie·zka z s do a ma wag ¾e l (a) i jest postaci dsa = s : : : p (a) a, za´s najkrótsza znaleziona do tej pory ´scie·zka z s do b ma wag ¾e l (b) i jest postaci dsb = s : : : p (b) b. Przyk÷adowo przed rozpocz ¾eciem relaksacji kraw¾edzi (a; b) mamy

l (a) = 9, l (b) = 13 oraz w (a; b) = 3.

Procedura relaksacji bada czy po dodaniu kraw¾edzi (a; b) do ´scie·zki dsadostaniemy ´scie·zk¾e o mniejszej wadze ni·z waga ´scie·zki dsb. Je·zeli tak, to ´scie·zka dsabstaje si ¾e najkrótsz ¾a (aktualnie)

´scie·zk ¾a z s do b. Jej wag ¾e l (a) + w (a; b) wstawiamy wi ¾ec w l (b), za´s poprzednik b na tej

´scie·zce, czyli a wstawiamy w p (b). W naszym przyk÷adzie mamy l (a) + w (a; b) = 12 < l (b).

(9)

Zatem po relaksacji dostaniemy l (b) = 12 i p (b) = a.

Je´sli waga ´scie·zki dsab nie jest mniejsza ni·z waga dsa, to relaksacja nie wprowadza zmian.

Jak wspomnieli´smy, algorytmy Bellmana-Forda i Dijkstry wykonuj ¾a pewien zestaw relak- sacji kraw¾edzi. Ró·znica polega na liczbie i kolejno´sci tych relaksacji.

Niech (G; w) b ¾edzie prostym grafem skierowanym z wagami, s dowolnym wierzcho÷kiem G oraz n niech oznacza ilo´s´c wierzcho÷ków tego grafu. Algorytm Bellmana-Forda polega na wykonaniu n 1 relaksacji wszystkich kraw¾edzi grafu.

Bellman-Ford(G; w; s) Init(G; s)

for i := 1 to n 1 do

for ka·zda kraw¾ed´z (a; b) 2 E do Relax(a; b)

Twierdzenie 3. Niech (G; w) b ¾edzie prostym grafem skierowanym z wagami oraz s wierz- cho÷kiem G. Wynikiem dzia÷ania procedury Bellman-Ford s ¾a wektory l, p takie, ·ze

(a) l (a) = m (s; a) dla a 2 V , czyli l sk÷ada si ¾e z wag najkrótszych ´scie·zek o pocz ¾atku s, (b) p jest wektorem poprzedników w G,

(c) Gp jest drzewem najkrótszych ´scie·zek o korzeniu s.

Dowód. Udowodnimy najpierw, ·ze w dowolnym miejscu procedury Bellman-Ford zachodzi (1) l (x) m (s; x) dla x 2 V .

Bezpo´srednio po zainicjowaniu warunek zachodzi bo l (s) = 0 = m (s; s) oraz l (a) = 1 m (s; a) dla a 6= s. Poka·zemy, ·ze warunek (1) jest niezmiennikem relaksacji.

Za÷ó·zmy, ·ze warunek zachodzi przed relaksacj ¾a kraw¾edzi (a; b). Wystarczy pokaza´c, ze po relaksacji warunek zachodzi dla wierzcho÷· ka x = b (relaksacja mog÷a zmieni´c tylko l (b)). Je´sli relaksacja zmieni÷a warto´s´c l (b), to korzystaj ¾ac z nierówno´sci (1) dla wierzcho÷ka a oraz nierówno´sci trójk ¾ata (w÷asno´s´c 3) dostajemy

l (b) = l (a) + w (a; b) m (s; a) + w (a; b) m (s; b) ; co ko´nczy dowód (1).

Poka·zemy z kolei, ·ze dla dowolnego x 2 V

(2) Równo´s´c l (x) = m (s; x) jest niezmiennikiem relaksacji.

W wyniku relaksacji warto´s´c l (x) nie mo·ze si ¾e zwi ¾ekszy´c. Zatem (2) wynika z (1).

Warunek (2) oznacza, ·ze je´sli w trakcie wykonywania procedury, l (x) osi ¾agnie warto´s´c m (s; x), to ju·z si ¾e nie zmieni.

(10)

Mo·zemy przej´s´c do dowodu warunku (a). We´zmy dowolny a 2 V . Mamy pokaza´c, ·ze po wykonaniu ostatniej relaksacji zachodzi

(3) l (a) = m (s; a).

Je·zeli a nie jest osi ¾agalny z s, to m (s; a) = 1 i na podstawie (1), l (s) = 1 = m (s; a).

Je·zeli a = s, to po zainicjowaniu algorytmu mamy l (s) = 0 = m (s; s). Z (2) wniosku- jemy, ·ze równo´s´c pozostanie prawdziwa w trakcie wszystkich iteracji.

Za÷ó·zmy na koniec, ·ze a jest osi ¾agalny z s oraz a 6= s. Z w÷asno´sci 1 wynika, ·ze istnieje najkrótsza ´scie·zka sa1: : : ak, która jest ´scie·zk ¾a bez powtarzaj ¾acych si ¾e wierzcho÷ków (oznaczamy ak = a). Oczywi´scie 1 k n 1. Procedura Bellman-Ford wykonuje n 1 razy relaksacj ¾e wszystkich kraw¾edzi. Zatem ci ¾ag wszystkich relaksacji zawiera relaksacje kolejnych kraw¾edzi ze ´scie·zki sa1: : : ak

: : : (s; a1) : : :

| {z }

i=1

: : : (a1; a2) : : :

| {z }

i=2

: : : : : : (ak 1; ak) : : :

| {z }

i=k

: : :

Po zainicjowaniu algorytmu równo´s´c (3) zachodzi dla wierzcho÷ka a0 = s. Chcemy udowodni´c (3) dla ak. W tym celu wystarczy pokaza´c, ·ze je´sli przed relaksacj ¾a kraw¾edzi (ai 1; ai) zachodzi równo´s´c l (ai 1) = m (s; ai 1), to po wykonaniu tej re- laksacji mamy l (ai) = m (s; ai)(krok indukcyjny). Z w÷asno´sci 2 wynika, ·ze sa1: : : ai jest najkrótsz ¾a ´scie·zk ¾a z s do ai. Zatem z de…nicji relaksacji i za÷o·zenia indukcyjnego dostajemy

l (ai)def. relaksacji

l (ai 1) + w (ai 1; ai)za÷. ind.= m (s; ai 1) + w (ai 1; ai) . w (sa1: : : ai 1) + w (ai 1; ai) = w (sa1: : : ai) = m (s; ai) :

Z (1) wnioskujemy zatem, ·ze l (ai) = m (s; ai), co ko´nczy dowód warunku (a).

Udowodnimy teraz (b). Po zainicjowaniu algorytmu mamy p (s) = ; i l (s) = 0 = m (s; s).

Na podstawie (2), ·zadna relaksacja nie zmieni warto´sci l (s). W konsekwencji nie zmieni si ¾e równie·z warto´s´c p (s), czyli w dowolnym miejscu procedury Bellman-Ford zachodzi p (s) = ;.

Niech a b ¾edzie wierzcho÷kiem, dla którego na ko´ncu procedury zachodzi p (a) 6= ;, czyli p (a) = b 2 V . Ko´ncowa warto´s´c p (a) musia÷a zosta´c nadana w trakcie relaksacji kraw¾edzi (b; a). Oznacza to, ·ze (p (a) ; a) = (b; a) 2 E. Wynika st ¾ad, ·ze p jest wektorem poprzedników w G, czyli zachodzi (b).

Aby udowodni´c (c) nale·zy pokaza´c, ·ze po zako´nczeniu procedury Bellman-Ford, para Gp = (Vp; Ep) spe÷nia warunki

(4) a 2 Vp , a jest osi ¾agalny z s.

(5) Gp jest drzewem skierowanym z korzeniem s.

(6) Dla ka·zdego a 2 Vp´scie·zka z s do a w Gp jest najkrótsz ¾a ´scie·zk ¾a z s do a w G.

Z de…nicji wynika, ·ze relaksacja albo zmienia obie warto´sci l (a) i p (a), albo nie zmienia zadnej. Zatem dla a 6= s, w dowolnym miejscu procedury, nierówno´s´c l (a) < 1 zachodzi· wtedy i tylko wtedy, gdy p (a) 6= ;. Na ko´ncu procedury mamy wi¾ec

a2 Vp , p (a) 6= ; _ a = s , m (s; a) = l (a) < 1 , a jest osi ¾agalny z s;

(11)

czyli zachodzi (4).

Bezpo´srednio po zainicjowaniu algorytmu mamy Gp = (fsg ; ;), czyli warunek (5) jest prawdziwy. Poka·zemy, ·ze (5) jest niezmiennikiem relaksacji. Za÷ó·zmy, ·ze przed relaksacj ¾a kraw¾edzi (a; b) graf Gp jest drzewem skierowanym o korzeniu s. Z twierdzenia ?? wynika, ·ze

(7) szkielet grafu Gp jest spójny, (8) indeg s = 0,

(9) indeg a = 1 dla a 6= s.

Musimy pokaza´c, ·ze warunki te zachodz ¾a po relaksacji kraw¾edzi (a; b). Zauwa·zmy przede wszystkim, ·ze (8) wynika z udowodnionej wcze´sniej równo´sci p (s) = ;. Mo·zemy za÷o·zy´c, ze ralaksacja zmienia l (b) i p (b). Zatem przed relaksacj ¾· a mamy l (a) + w (a; b) < l (b). W konsekwencji l (a) < 1, czyli p (a) 6= ;, a wi¾ec a 2 Vp. W wyniku relaksacji kraw¾edzi (a; b) w Gp nast ¾api÷y nast ¾epuj ¾ace zmiany

Je´sli przed relaksacj ¾a by÷o p (b) = ;, to relaksacja doda÷a do Gp wierzcho÷ek b oraz kraw¾ed´z (a; b).

Je´sli przed relaksacj ¾a by÷o p (b) = c 2 V , to relaksacja usun¾e÷¾a z Gp kraw¾ed´z (c; b) i doda÷a kraw¾ed´z (a; b).

×atwo sprawdzi´c, ·ze w obu przypadkach warunki (7) i (9) zachodz ¾a po zako´nczeniu relak- sacji. Wynika st ¾ad, ·ze (5) zachodzi w dowolnym miejscu procedury.

Do zako´nczenia dowodu zosta÷o pokazanie, ·ze po zako´nczeniu procedury zachodzi (6). Niech (a; b) b ¾edzie kraw¾edzi ¾a w Gp, czyli a = p (b). Warto´s´c p (b) musia÷a zosta´c nadana w trakcie relaksacji kraw¾edzi (a; b). W trakcie tej relaksacji zosta÷a te·z nadana warto´s´c l (b) = l (a) + w (a; b)i warto´sci tej nie zmieni÷a ·zadna nast ¾epna relaksacja. Zatem po zako´nczeniu procedury mamy

w (a; b) = l (b) l (a) = m (s; b) m (s; a) : Dla dowolnej nietrywialnej ´scie·zki sa1: : : ak w Gp zachodzi wi ¾ec w (sa1: : : ak) = w (sa1) + w (a1a2) + : : : + w (ak 1ak) =

= (m (s; a1) m (s; s)) + (m (s; a2) m (s; a1)) + : : : + (m (s; ak) m (s; ak 1)) =

= m (s; ak) m (s; s) = m (s; ak) ;

(12)

czyli sa1: : : ak jest najkrótsz ¾a ´scie·zk ¾a z s do ak w G. Wynika st ¾ad (6).

Z dowodu wynika, ·ze algorytm Bellmana-Forda mo·ze znale´z´c najkrótsze ´scie·zki po mniejszej ni·z n 1 liczbie iteracji. Potrzebna ilo´s´c iteracji jest równa maksymalnej liczbie kraw¾edzi w najkrótszych ´scie·zkach ze ´zród÷a s.

W ksi ¾a·zce "Wprowadzenie do algorytmów" jest omówiona ogólniejsza wersja algorytmu Bellmana-Forda. Dopuszczane s ¾a tam ujemne wagi kraw¾edzi, pod warunkiem, ·ze graf nie zawiera cykli o ujemnych wagach osi ¾agalnych ze ´zród÷a.

Algorytm Bellmana-Forda nie jest zbyt szybki. Jego z÷o·zono´s´c obliczeniowa wynosi O (V E).

Omówimy teraz algorytm Dijkstry, który dzi ¾eki odpowiedniej kolejno´sci relaksacji, re- dukuje ich liczb ¾e. Dowód poprawno´sci tego algorytmu pominiemy. Opiera si ¾e on na tych samych metodach co dowód poprawno´sci algorytmu Bellmana-Forda. Mo·zna go znale´z´c w ksi ¾a·zkach "Wprowadzenie do algorytmów" oraz "Matematyka dyskretna".

Algorytm Dijkstry wykorzystuje zmienn ¾a V0, w której pami ¾etany jest zbiór przetworzonych wierzcho÷ków czyli takich, dla których znale´zli´smy rzeczywiste najkrótsze ´scie·zki.

Dijkstra(G; w; s) Init(G; s)

V0 :=;

while V0 6= V do

znajd´z a 2 V n V0 o minimalnej etykiecie l (a) V0 := V0[ fag

for ka·zdy wierzcho÷ek b 2 V n V0 do if (a; b)2 E then Relax(a; b)

Procedura w pierwszej iteracji znajduje ´zród÷o s, dodaje je do V0 oraz wykonuje relaksacje wszystkich kraw¾edzi wychodz ¾acych z s. W kolejnych iteracjach znajdowane s ¾a wierzcho÷ki o najmniejszej etykiecie l (a) i wykonywane s ¾a relaksacje kraw¾edzi ÷¾acz ¾acych a z nieprzetwor- zonymi s ¾asiadami.

Twierdzenie 4. Niech (G; w) b ¾edzie prostym grafem skierowanym z wagami oraz s wierz- cho÷kiem G. Wynikiem dzia÷ania procedury Dijkstra s ¾a wektory l, p takie, ·ze

(a) l (a) = m (s; a) dla a 2 V ,

(b) p jest wektorem poprzedników w G,

(c) Gp jest drzewem najkrótszych ´scie·zek o korzeniu s.

Twierdzenie daje si ¾e wzmocni´c. Mo·zna pokaza´c, ·ze po wykonaniu dowolnej liczby iteracji, równo´s´c l (a) = m (s; a) zachodzi dla a 2 V0. Oznacza to, ·ze znane s ¾a wagi najkrótszych

´scie·zek do przetworzonych wierzcho÷ków. Wektor p pozwala wyznaczy´c te ´scie·zki. Wynika st ¾ad, ·ze algorytm Dijkstry mo·ze s÷u·zy´c do szukania najkrótszej ´scie·zki mi ¾edzy ustalonymi wierzcho÷kami a i b. Traktujemy wtedy a jako ´zród÷o i przerywamy procedur ¾e w momencie gdy wierzcho÷ek b zostanie dodany do V0.

Algorytm Dijkstry ma z÷o·zono´s´c obliczeniow ¾a O (V2). Je´sli stosujemy go do grafów wystar- czaj ¾aco rzadkich, to przy odpowiedniej implementacji mo·zna uzyska´c O ln VV2 .

(13)

W poni·zszym gra…e szukamy najkrótszych ´scie·zek ze ´zród÷a a.

(14)

INIT 1 2 3 4 5 6 7 8 a

0

; b

1

;

2 a c

1

;

6 a

5 b d

1

;

7 a

7 a

7 a e

1

;

1

; 9 b

9 b

9 b

9 b f

1

;

1

;

17 b

17 b

16 d

16 d

16 d

16 d g

1

;

1

;

1

; 8 c

8 c h

1

;

1

;

1

;

1

;

1

;

14 g

14 g m (a; h) = l (h) = 14

h ! gp ! cp p! b p! a

Najkrótsza ´scie·zka z a do h: abcgh

Cwiczenie 5.´ (Dla bardzo pracowitych). Wyznaczy´c najkrótsze ´scie·zki w gra…e z ostatniego przyk÷adu przy pomocy algorytmu Bellmana-Forda.

Cwiczenie 6.´ Korzystaj ¾ac z algorytmu Dijkstry wyznaczy´c najkrótsze ´scie·zki z wierzcho÷ka s oraz ich wagi.

(1)

(2)

(15)

(3)

Wspomnijmy jeszcze o problemie najkrótszych ´scie·zek mi ¾edzy wszystkimi parami wierz- cho÷ków. Problem mo·zna rozwi ¾aza´c traktuj ¾ac kolejne wierzcho÷ki jako ´zród÷o i stosuj ¾ac al- gorytm Dijkstry. Nie jest to jednak rozwi ¾azanie optymalne. Istniej ¾a szybsze algorytmy rozwi ¾azania tego problemu. Dwa z nich: algorytm Floyda-Warshalla i algorytm Johnsona s ¾a opisane w ksi ¾a·zce "Wprowadzenie do algorytmów". Algorytmy te opieraj ¾a si ¾e na innych pomys÷ach ni·z algorytm Bellmana-Forda i algorytm Dijkstry.

Omówimy teraz krótko dwa klasyczne problemy zwi ¾azane z szukaniem najkrótszych ´scie·zek.

Problem komiwoja·zera.

Komiwoja·zer ma odwiedzi´c n miast. Znane s ¾a odleg÷o´sci mi ¾edzy miastami. Szukamy najkrótszej drogi przechodz ¾acej przez ka·zde miasto dok÷adnie raz i wracaj ¾acej do punktu wyj´scia. W j ¾ezyku teorii grafów problem przyjmuje nast ¾epuj ¾ac ¾a posta´c.

(PK) W pe÷nym gra…e z wagami znale´z´c cykl Hamiltona o najmniejszej wadze.

Podane sformu÷owanie jest podstawow ¾a wersj ¾a problemu komiwoja·zera. Rozwa·zane s ¾a jed- nak równie·z inne wersje. Podamy tutaj "bardziej ·zyciow ¾a" wersj ¾e tego problemu. Graf pe÷ny zast ¾apimy spójnym i zrezygnujmy z wymagania by ka·zde miasto by÷o odwiedzone dok÷adnie raz. Dostajemy zatem nast ¾epuj ¾acy problem.

(PK2) W spójnym gra…e z wagami znale´z´c najkrótsz ¾a´scie·zk ¾e zamkni ¾et ¾a zawieraj ¾ac ¾a wszystkie wierzcho÷ki.

W rozwa·zanym gra…e spójnym mo·zemy oczywi´scie usun ¾a´c wszystkie p ¾etle i wszystkie kraw¾edzie wielokrotne, oprócz tych o najmniejszej wadze (jednej dla ka·zdej pary wierzcho÷ków s ¾asiednich). Oznacza to, ·ze mo·zemy ograniczy´c rozwa·zania do grafów prostych.

Niech G = (V; E) b ¾edzie prostym grafem spójnym oraz w : E ! [0; 1) funkcj ¾a wag. Dla dowolnych a; b 2 V oznaczmy przez dab najkrótsz ¾a ´scie·zk¾e z a do b. Niech G0 = (V; E0)b ¾edzie grafem pe÷nym o tych samych wierzcho÷kach co G. Wagi w G0 de…niujemy przyjmuj ¾ac:

w0(ab) = w (dab) = m (a; b) :

W÷asno´s´c 4. Dla dowolnych wierzcho÷ków a; b; c

(16)

(1) Je´sli ab 2 E, to w0(ab) w (ab),

(2) w0(ac) w0(ab) + w0(bc) (warunek trójk ¾ata).

Cwiczenie 7.´ Udowodni´c w÷asno´s´c 4.

Twierdzenie 5. Niech (G; w) b ¾edzie spójnym grafem prostym z wagami oraz (G0; w0) odpowiada- j ¾acym mu grafem pe÷nym. Je·zeli a1a2: : : an jest najkrótsz ¾a ´scie·zk ¾a z a1 do an w G0, to d = da1a2da2a3: : : dan 1an jest najkrótsz ¾a ´scie·zk ¾a z a1 do an w G oraz

w (d) = w0(a1a2: : : an) :

Dowód. Równo´s´c w (d) = w0(a1a2: : : an) wynika z de…nicji w0. Przypu´s´cmy nie wprost, ·ze istnieje w G ´scie·zka d0 z a1 do an krótsza ni·z d. Wtedy z w÷asno´sci 4 dostajemy

w0(a1a2: : : an) w0(d0) w (d0) < w (d) = w0(a1a2: : : an) : Otrzymana sprzeczno´s´c ko´nczy dowód.

Twierdzenie 6. W pe÷nym gra…e z wagami spe÷niaj ¾acymi warunek trójk ¾ata istnieje cykl Hamiltona b ¾ed ¾acy rozwi ¾azaniem (PK2).

Dowód. Poka·zemy, ·ze dla dowolnej ´scie·zki zamkni ¾etej d zawieraj ¾acej wszystkie wierzcho÷ki grafu istnieje cykl Hamiltona hd taki, ·ze

(1) w (hd) w (d) :

Mo·zemy oczywi´scie za÷o·zy´c, ·ze d nie jest cyklem Hamiltona, czyli w d powtarza si ¾e pewien wierzcho÷ek a:

d = a : : : xay : : : a:

Przyjmijmy

d1 =

( a : : : xy : : : a ; x6= y;

a : : : x : : : a ; x = y:

´Scie·zka d1zawiera wszystkie wierzcho÷ki, jest zamkni ¾eta i ma mniej kraw¾edzi ni·z d. Z warunku trójk ¾ata i nieujemno´sci wag wynika, ·ze w (d1) w (d). Je·zeli w d1 powtarzaj ¾a si ¾e wierzcho÷ki, to stosuj ¾ac analogiczne rozumowanie znajdziemy ´scie·zk¾e d2 zamkni ¾et ¾a, zawieraj ¾ac ¾a wszys- tkie wierzcho÷ki, spe÷niaj ¾ac ¾a nierówno´s´c w (d2) w (d1) oraz maj ¾ac ¾a mniej kraw¾edzi ni·z d1. Kontynuuj ¾ac takie post ¾epowanie (indukcja), po sko´nczonej liczbie kroków znajdziemy cykl Hamiltona spe÷niaj ¾acy (1). Poniewa·z w gra…e jest sko´nczona ilo´s´c cykli Hamiltona, wi ¾ec ist- nieje cykl Hamiltona h0 o najmniejszej wadze. Cykl ten jest rozwi ¾azaniem problemu (PK2), bo dla dowolnej ´scie·zki zamkni ¾etej d zawieraj ¾acej wszystkie wierzcho÷ki mamy

w (h0) w (hd) w (d) :

Cwiczenie 8.´ Rozwi ¾aza´c problem komiwoja·zera w gra…e G0 z ostatniego przyk÷adu oraz w gra…e G (w wersji (PK2)).

(17)

Z dwóch ostatnich twierdze´n wynika, ·ze problem (PK2) mo·zna sprowadzi´c do nast ¾epujacego zagadnienia.

(PK3) W pe÷nym gra…e z wagami spe÷niaj ¾acymi warunek trójk ¾ata znale´z´c cykl Hamiltona o minimalnej wadze.

Jest to szczególny przypadek problemu komiwoja·zera nazywany problemem komiwo- ja·zera z warunkiem trójk ¾ata.

Podstawowym zagadnieniem dotycz ¾acym problemu komiwoja·zera jest pytanie o istnienie

"szybkiego" algorytmu rozwi ¾azuj ¾acego ten problem, tzn. dzia÷aj ¾acego w czasie wielomi- anowym (f (n) = O nk dla pewnej liczby naturalnej k). Przekszta÷cenie grafu prostego (G; w) w graf pe÷ny (G0; w0) polega na znalezieniu najkrótszych ´scie·zek mi ¾edzy wszystkimi parami wierzcho÷ków grafu. Z wcze´sniejszych rozwa·za´n wynika, ·ze mo·zna to zrobi´c w cza- sie wielomianowym. Gdyby zatem uda÷o si ¾e w czasie wielomianowym znale´z´c rozwi ¾azanie (PK3), to potra…liby´smy równie·z znale´z´c podobne rozwi ¾azanie dla (PK2). Okazuje si ¾e jed- nak, ·ze nawet dla problemu komiwoja·zera z warunkiem trójk ¾ata nie jest znany ·zaden algorytm rozwi ¾azuj ¾acy ten problem w czasie wielomianowym. Nie zosta÷o jednak udowodnione, ·ze taki algorytm nie istnieje.

Problem komiwoja·zera (w obu wersjach) nale·zy do klasy problemów NP-trudnych. Znalezie- nie rozwi ¾azania któregokolwiek problemu NP-trudnego w czasie wielomianowym zapewnia istnienie podobnego rozwi ¾azania dla szerokiej klasy problemów NP-zupe÷nych (dla nich te·z takie rozwi ¾azania nie s ¾a znane). Wed÷ug niektórych informatyków uprawdopodobnia to hipotez ¾e, ·ze rozwi ¾azania w czasie wielomianowych problemów NP-trudnych i NP-zupe÷nych nie istniej ¾a (bo mimo olbrzymiej ilo´sci prób ·zadne nie zosta÷o do tej pory znalezione).

W praktyce do rozwi ¾azywania problemu komiwoja·zera stosuje si ¾e algorytmy aproksyma- cyjne, daj ¾ace rozwi ¾azania przybli·zone.

Problem chi´nskiego listonosza (Mei-Ku Kuan, 1962).

Listonosz wychodzi z poczty, przechodzi przez wszystkie ulice w swoim rejonie i wraca na poczt ¾e. Znale´z´c najkrótsz ¾a drog ¾e jak ¾a musi pokona´c. W j ¾ezyku teorii grafów problem ten brzmi nast ¾epuj ¾aco.

(PChL) W spójnym gra…e z wagami znale´z´c najkrótsz ¾a´scie·zk ¾e zamkni ¾et ¾a zawieraj ¾ac ¾a wszystkie kraw ¾edzie.

Podobnie jak w przypadku problemu komiwoja·zera, nie jest znany ·zaden algorytm rozwi ¾azu- j ¾acy problem chi´nskiego listonosza w czasie wielomianowym. Poni·zej podamy rozwi ¾aza- nia tego problemu w dwóch specy…cznych przypadkach. Najprostszy jest przypadek grafu eulerowskiego.

W÷asno´s´c 5. Je·zeli (G; w) jest eulerowskim grafem z wagami, to rozwi ¾azaniem problemu chi´nskiego listonosza jest dowolny cykl Eulera.

W÷asno´s´c 6. Je·zeli (G; w) jest pó÷eulerowskim grafem z wagami oraz a, b wierzcho÷kami stopnia nieparzystego, to rozwi ¾azaniem problemu chi´nskiego listonosza jest po÷¾aczenie ´scie·zki Eulera z a do b i najkrótszej ´scie·zki z b do a.

(18)

Cwiczenie 9.´ Udowodni´c w÷asno´s´c 6.

Cwiczenie 10.´ Znale´z´c rozwi ¾azanie problemu chi´nskiego listonosza dla poni·zszego grafu.

Poczta znajduje si ¾e w wierzcho÷ku a.

Cytaty

Powiązane dokumenty

• Prawo ustanowione przez ludzi mo¿e byæ tylko wtedy dobre, kiedy nie jest sprzeczne z Prawem Bo¿ym. • Bóg wzywa ludzi, aby przestrzegali prawa, a swe obowi¹zki wykony-

Grafem (grafem prostym, grafem niezorientowanym) nazywamy par¸e (V, E) gdzie V jest pewnym zbiorem zwanym zbiorem wierzcho lk´ow, natomiast E jest zbiorem pewnych par

Do wystawienia oceny z przedmiotu brany jest wynik ostatniego zaliczenia wyk ladu (albo suma punkt´ ow z obu cz¸e´sci zaliczenia je´sli student zalicza l na raty i nie poprawia l).

Potencjalne mutageny i kancerogeny wyst puj ce w ywno ci mo na podzieli na trzy grupy [46]: zwi zki wyst puj ce naturalnie (toksyny ro linne), zwi zki formowane w czasie

Jest to ty po wy uk³ad dla gleb auto ge ni cz nych wy kszta³co nych ze s³abo prze pusz cza l nych ska³.. Re gres sion pa ra me ters are given in the

Mo˙zna zak lada´ c warunek mie , kko´ sci: dla ka˙zdego przekroju F na zbiorze domknie , tym mo˙zna przed lu˙zy´ c do przekroju globalnego... Shabath, Introduction to

Rysunek 5.54 Uchyby pozycji i orientacji w zadaniu odtwa- rzania ´scie ˙zki o zmiennej krzywi´znie realizo- wanym przez obiekt w pełni dosterowany dla ró ˙znych warto´sci macierzy

Prosz¸e sformułować twierdzenie Lagrange o reszcie we