# Úloha minimální cesty **Algoritmus**: Minimální cesta z vrcholu $x$ do vrcholu $y$ - **E. W. Dijkstra**. - Vstup: ohodnocený orientovaný graf $\vec{G}$, vrcholy $x$ a $y$. 1. Vrcholu $x$ přiřaď trvalou hodnotu $t(x) = 0$, ostatním vrcholům dočasnou hodnotu $\infty$ - horní hranice délky. 2. Je-li $u$ poslední vrchol. jemuž byla přiřazena trvalá hodnota $t(u)$, pak všem vrcholům $v$, pro něž $(u, v) \in E(\vec{G})$ a které ještě nemají trvalou hodnotu, přiřaď novou dočasnou hodnotu $d(v) = min\{ d(v), t(u) + w(u, v) \}$ 3. Pro vrchol $w$ s nejmenší dočasnou hodnotou polož $t(w) = d(w)$. 4. Má vrchol $y$ trvalou hodnotu? Pokud ne, jdi na krok 2. Pokud ano, $t(y)$ je délka minimální cesty z $x$ do $y$, 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é matice $D_{0}(\vec{G})$. - Vstup: matice $D_{0}(\vec{G})$ ohodnoceného orientovaného grafu $\vec{G}$. 1. Potřebujeme se zbavit míst s nekonečnem a to provedeme tak, že hledáme minimální cestu z vrcholu $i$ do $j$ přes libovolný třetí vrchol $k$. 2. Vybereme si jedno z těchto míst a matici čteme takto: potřebujeme se dostat z vrcholu $i$ (určen řádky) do vrcholu $j$ (určen sloupci). 3. Najdeme tedy vrchol $k$, do kterého se dostaneme z $i$ a ze kterého se dostaneme do $j$. Na místo v matici poté zapíšeme součet těchto ohodnocení, pokud je menší než současná hodnota. 4. 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ě.