ALG 5

ALG 5



10.5. Algorytm Floyda 255

•    W/iJ]~wartość przypisana krawędzi lub00 (inaczej: bardzo dużą liczba);

•    wartość optymalnej drogi będzie zapamiętywana w matrycy D\

Ideę algorytmu w zrozumiały sposób prezentuje następujący przykład:

Załóżmy, że szukamy optymalnej drogi od / do j. W tym celu „przechadzamy” się po grafie, próbując ewentualnie znaleźć inny, pośredni wierzchołek k, którego „wbudowanie” w drogę umożliwiłoby otrzymanie lepszego wyniku niż już obliczone Dfi, j] Znajdujemy pewne k i zadajemy pytanie: czy przejście przez wierzchołek k poprawi nam w'ynik. czy nie? Popatrzmy na rysunek 10 - 8, który przedstawia odpowiedź na to pytanie w nieco bardziej poglądowej formie niż goły wzór matematyczny (przedstawiony obok).

Rys. W - H. Aigorvtm Floyda <!)■ '


Jest oczywiste, że w przypadku większej ilości takich „optymalnych” wierzchołków pośrednich należy wybrać najlepszy z nich!

Przedstawiony poniżej program jest najprostszą formą algorytmu Floyda, która wyłącznie oblicza wartość optymalnej drogi, ale jej nic zapamiętuje.

floyd.cpp

void floydtint g[n] [n] )

(

fortint k=0;k<n;k++) for(int i-0;i<n;i++) fortint j=0;j<n;i++)

g[i][j]-min( gli][j], g[i][k]+g[k)[j]);

)

Popatrzmy na rysunek 10 - 9, który przedstawia przykład wyboru optymalnej drogi przez algorytm Floyda.

Załóżmy, że interesuje nas optymalna droga od wierzchołka nr 0 do wierzchołka numer 4. Z uwagi na dość prostą topografię grafu, widać, że mamy do wyboru dwie drogi: 0-1-4 i nieco dłuższą: 0-I-2-4.

Elementarne obliczenia wykazują, że druga trasa jest efektywniejsza (koszt: 45) od pierwszej (koszt: 50).


Wyszukiwarka

Podobne podstrony:
ALG 7 10,5. Algorytm Floyda_25710.6.Przeszukiwanie grafów Dużo interesujących zadań algorytmicznych,
10 Algorytm Floyda-Warshalla Rozważmy graf G — (V,E), w którym z każdą krawędzią skojarzono nieujemn
ALG 3 10.4. Algorytm Roy-Warshalla 253 Algorytm Roy-Warshalla może być w dość prosty sposób zmodyfik
ALG&5 10.7. Problem właściwego doboru_ 265 Algorytm doboru można zamknąć w rozbudowanej funkcji inci
202 203 202 X    V 5.11.5. Mnożenie binarna Jak pamiętam? (patrz p. 1.2.10), algorytm
202 203 202X    Y 5.11.3. Mnożenie binarne Jak pamiętamy (patrz p. 1.2.10), algorytm
10.2.1. Algorytm wyznoczonlo dondrytu dróg najdłuższych O o n c x Siać cklorowann boz dróg cykliczny
10.2. Głowa państwa 255 a na zewnątrz (RFN, Czechy, Węgry) czy w rozwiązywaniu bieżących proble-;w
DSC00303 (8) ip.ł. DROPI PROSTR. BK3TKBMAŁNB W SIECIACH ACYKLICZNYCH 10.2.1. Algorytm wyznaczania ma
DSC00304 (9) 10,3. OROOl PROSTE, ■KmUlMAt.Nt W SIECIACH CYKLICZNYCH 10.3.1. Algorytm wyznaczania mak
/■- Address 1 Id numbor(10) 0 stroel varcha/2{255) c- 0
47922 IMG?34 3320 Warszawa, dnia 10 lipca 2014 roku

54038 Scanned at 10 01 25# 13 (10) Ce^3^,e=c:JŁj:>S    /—<=**$   
Czas F:Panc F:Wria F:Piech F:Opl : F:inne 10 12:33 255.0 59.0 11.0 0.0
84416 Scanned at 10 01 25# 13 (4) IJ i A fi Mll r- i Ar-, W />. > A * £u r i Ar-» -a "£v
ALG!3 8.2. Nowe algorytmy poszukiwań 213 Analogiczny przykład znajduje się na rysunku 8-5. 8.2. Nowe

więcej podobnych podstron