1.7 KiB
1.7 KiB
Úloha minimální cesty
Algoritmus: Minimální cesta z vrcholu x
do vrcholu y
- E. W. Dijkstra.
- Vstup: ohodnocený orientovaný graf
\vec{G}
, vrcholyx
ay
.
- Vrcholu
x
přiřaď trvalou hodnotut(x) = 0
, ostatním vrcholům dočasnou hodnotu\infty
- horní hranice délky. - Je-li
u
poslední vrchol. jemuž byla přiřazena trvalá hodnotat(u)
, pak všem vrcholůmv
, pro něž(u, v) \in E(\vec{G})
a které ještě nemají trvalou hodnotu, přiřaď novou dočasnou hodnotud(v) = min\{ d(v), t(u) + w(u, v) \}
- Pro vrchol
w
s nejmenší dočasnou hodnotou položt(w) = d(w)
. - Má vrchol
y
trvalou hodnotu? Pokud ne, jdi na krok 2. Pokud ano,t(y)
je délka minimální cesty zx
doy
, konec.
Poznámka: Hrany, na nichž w(x, y) = t(y) - t(x)
určují minimální cestu.
Úloha APSP - all pairs shortest paths
Algoritmus: Floydův-Warshallův
- Slouží k získání $w$-distanční matice grafu
\vec{G}
, začíná se ze stejné maticeD_{0}(\vec{G})
. - Vstup: matice
D_{0}(\vec{G})
ohodnoceného orientovaného grafu\vec{G}
.
- Potřebujeme se zbavit míst s nekonečnem a to provedeme tak, že hledáme minimální cestu z vrcholu
i
doj
přes libovolný třetí vrcholk
. - Vybereme si jedno z těchto míst a matici čteme takto: potřebujeme se dostat z vrcholu
i
(určen řádky) do vrcholuj
(určen sloupci). - Najdeme tedy vrchol
k
, do kterého se dostaneme zi
a ze kterého se dostaneme doj
. Na místo v matici poté zapíšeme součet těchto ohodnocení, pokud je menší než současná hodnota. - Pokračujeme u všech prázných míst a poté postupně u všech míst, dokud po zpracování celé matice nedojde k žádné změně.