FAV-ZCU/KMA DMA/Otázky ke zkoušce/26. Úloha minimální cesty.md

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}, 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ě.