Minimální cesty
Minimální cesta (nejkratší cesta) mezi dvěma vrcholy a v ohodnoceném grafu je taková posloupnost hran, která:
- začíná ve zdrojovém vrcholu ,
- končí v cílovém vrcholu ,
- a její celková váha (součet vah hran) je minimální mezi všemi možnými cestami z do .
Ve speciálním případě, kdy všechny hrany mají jednotkovou váhu (například neohodnocený graf), je minimální cesta tou, která obsahuje nejmenší počet hran.
Význam algoritmů pro hledání nejkratších cest
Hledání minimálních cest má zásadní význam v celé řadě oblastí:
- Síťové směrování – výběr nejefektivnější trasy v počítačových nebo dopravních sítích.
- Logistika a navigace – výpočet tras s minimálními náklady nebo časy.
- Plánování úloh – například optimalizace v grafu závislostí.
Pro tyto úlohy existuje několik algoritmů, z nichž nejznámější je Dijkstrův algoritmus.
Dijkstrův algoritmus
Dijkstrův algoritmus řeší problém nalezení nejkratší cesty ze zdrojového vrcholu do všech ostatních vrcholů v grafu s nezáporným ohodnocením hran.
Princip
- Postupně rozšiřuje množinu vrcholů, pro které je známa jejich nejkratší vzdálenost od zdroje.
- V každém kroku vybere uzel s aktuálně nejmenší známou vzdáleností, a aktualizuje vzdálenosti do sousedů (tzv. relaxace hran).
Pseudokód
funkce Dijkstra(G, s):
pro každý vrchol v v G:
vzdálenost[v] := ∞
předchůdce[v] := nedefinován
vzdálenost[s] := 0
Q := prioritní fronta všech vrcholů v G s klíčem vzdálenost
dokud není Q prázdná:
u := vrchol v Q s nejmenší hodnotou vzdálenost[u]
odeber u z Q
pro každého souseda v vrcholu u:
alternativa := vzdálenost[u] + váha(u, v)
pokud alternativa < vzdálenost[v]:
vzdálenost[v] := alternativa
předchůdce[v] := u
aktualizuj prioritu vrcholu v v Q
Výstup
Po skončení algoritmu:
dist[v]obsahuje minimální vzdálenost zsdov,prev[v]umožňuje zpětně rekonstruovat cestu.
Časová složitost
Závisí na použité datové struktuře:
- Bez haldy:
- Binární halda:
Omezení
Algoritmus nefunguje korektně pro grafy s negativními vahami hran. Pro takové případy je vhodné použít například Bellman-Fordův algoritmus.