ALG 3
10.4. Algorytm Roy-Warshalla 253
Algorytm Roy-Warshalla może być w dość prosty sposób zmodyfikowany, tak aby dostarczyć informacji nie tylko o istnieniu drogi wiodącej od wierzchołka ,v do wierzchołkay, ale oprócz tego podać przepis którędy należy pójść...
W celu zidentyfikowania drogi (oczywiście jeśli w ogóle ona istnieje!) przyporządkujemy macierzy reprezentującej graf tzw. macierz kierowania ruchem (ang. routing) R. Jest ona zdefiniowana w sposób następujący:
• R[x. y]=0. jeśli nie ma drogi, która wiedzie od .r do y;
• R[x, yj^z, gdzie z oznacza „następny” wierzchołek na drodze od x do y.
Konstrukcja matiycy umożliwia w naturalny sposób odtworzenie drogi wiodącej od danego wierzchołka do innego:
route.cpp
void pisz(int x, int y, int rt(n][n]) l
int k;
if(R[x][y)==C)
cout « "Drogi nie ;ua\n"; else (
cout << x « endl; k=x;
while(k!=y) k=RLkJ ty];
cout « k « endl;
)
f
cout << endl;
f
Wiemy już, jak wypisać drogę na podstawie macierzy R, najwyższa zatem pora na przedstawienie algorytmu, który ją prawidłowo dla danego grafu wylicza.
Przedstawiona poniżej procedura route „zakłada", że matryca R przekazana jej w parametrze została zainicjowana uprzednio w następujący sposób:
• R[x,y]=0, jeśli nic istnieje krawędź (x,y);
• R[x,y]=y, w przeciwnym przypadku.
Zapis procedury jest ekstremalnie prosty:
void route(int R[n][n])
(
for(int x=C;x<n;x++) for(int y=0;y<n;y++!
if(R[y)[x]!—O> II wiemy jak dojść z 'y' do 'x' for(int z=0;z<n;z++)
Wyszukiwarka
Podobne podstrony:
ALG 5 10.5. Algorytm Floyda 255 • W/iJ]~wartość przypisana krawędzi lub00 (inaczejALG 7 10,5. Algorytm Floyda_25710.6.Przeszukiwanie grafów Dużo interesujących zadań algorytmicznych,WYKŁAD 10 Orzeczenie ETS z 14 maja 1998r. Art.7 dyrektywy powinien byc interpretowany w ten sposob.1,2 (63) Strona: (Poprzedni) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 29 Teletransmisja10 Algorytm Floyda-Warshalla Rozważmy graf G — (V,E), w którym z każdą krawędzią skojarzono nieujemnALG&5 10.7. Problem właściwego doboru_ 265 Algorytm doboru można zamknąć w rozbudowanej funkcji inci202 203 202 X V 5.11.5. Mnożenie binarna Jak pamiętam? (patrz p. 1.2.10), algorytm202 203 202X Y 5.11.3. Mnożenie binarne Jak pamiętamy (patrz p. 1.2.10), algorytm10.2.1. Algorytm wyznoczonlo dondrytu dróg najdłuższych O o n c x Siać cklorowann boz dróg cyklicznyDSC00303 (8) ip.ł. DROPI PROSTR. BK3TKBMAŁNB W SIECIACH ACYKLICZNYCH 10.2.1. Algorytm wyznaczania maDSC00304 (9) 10,3. OROOl PROSTE, ■KmUlMAt.Nt W SIECIACH CYKLICZNYCH 10.3.1. Algorytm wyznaczania makALG!3 8.2. Nowe algorytmy poszukiwań 213 Analogiczny przykład znajduje się na rysunku 8-5. 8.2. NoweALG!5 8.2. Nowe algorytmy poszukiwań 215 l int i=-1 ; start: i++; etO: if (t: i]! = ■ i + + ; aALG!9 8,2. Nowe algorytmy poszukiwań 219 słowa wejściowego o długości M wydaje się tak samo kosztownALG 1 8.2. Nowe algorytmy poszukiwań 221 Kolejne uwagi należą się parametrom p i b. Zaleca się, abyALG(7 12.3. Algorytm mini-max 287 Załóżmy również, że wartości liczbowe węzłów z ostatniego poziomu,ALG(9 12.3. Algorytm inini-max 289 ( if (gracz==komputer) return człowiek; else returnwięcej podobnych podstron