Obsah

Dijkstrův algoritmus

Dijkstrův algoritmus řeší problém hledání nejkratší cesty v grafu s nezápornými vahami hran. Je to základní stavební kámen moderních navigačních systémů (GPS) a směrovacích protokolů v počítačových sítích.

1. Jak algoritmus funguje?

Algoritmus využívá strategii „hladového vyhledávání“ (greedy algorithm). Postupuje následovně:

1. **Inicializace:** Startovnímu uzlu přiřadí vzdálenost 0, všem ostatním uzlům nekonečno ($\infty$). Všechny uzly jsou označeny jako "nenavštívené".
2. **Výběr:** Vybere nenavštívený uzel s aktuálně nejmenší vzdáleností od startu (na začátku je to startovní uzel).
3. **Relaxace hran:** U všech sousedů tohoto uzlu spočítá novou potenciální vzdálenost: //"Pokud půjdu přes tento uzel, bude cesta ke sousedovi kratší než ta, kterou znám doteď?"//
4. **Aktualizace:** Pokud je nová cesta kratší, přepíše původní hodnotu u souseda na tuto novou, nižší hodnotu.
5. **Ukončení:** Jakmile jsou prozkoumáni všichni sousedi vybraného uzlu, uzel se označí jako "navštívený" a algoritmus se vrací ke kroku 2, dokud neprojde celý graf.

2. Vlastnosti a omezení

3. Praktické využití

4. Srovnání: Dijkstra vs. Ostatní

Algoritmus Typ grafu Výsledek
BFS Neohodnocený (váhy jsou 1) Nejkratší cesta v počtu kroků.
Dijkstra Ohodnocený (kladné váhy) Nejkratší cesta v součtu vah.
A* Ohodnocený + heuristika Rychlejší hledání směrem k cíli (používá se ve hrách).

[Image comparing Dijkstra (expanding in circles) and A* (expanding towards target)]

Zajímavost: Edsger Dijkstra prý vymyslel tento algoritmus během 20 minut, když seděl se svou snoubenkou v kavárně. Chtěl ukázat schopnosti nového počítače ARMAC a hledal problém, kterému by rozuměli i lidé mimo obor informatiky – vybral si tedy mapu nizozemských měst.

Zpět na Algoritmy