Dijkstra vs Duan 2025 — opravdu „mind-blowingly faster"?

Interaktivní srovnání asymptotické složitosti. STOC 2025 Best Paper prolomil hranici O(m + n log n) pro řízené SSSP — ale co to znamená v praxi?

Zrychlení Dijkstra / Duan vs velikost grafu

Duan rychlejší (zrychlení > 1) Dijkstra rychlejší (zrychlení < 1) Teoretické zrychlení (konst. = 1)

Parametry grafu

Duan má větší overhead (rekurzivní partitioning, multi-source Bellman-Ford). Realistický odhad: 5–15×.
Dijkstra ops
Duan ops (s konst.)
Praktické zrychlení

Realistický kontext: kde to skutečně pomáhá a kde ne

Google Maps / Waze

Nepoužívají plain Dijkstra už 15+ let. Provoz jede přes Contraction Hierarchies + A* — preprocessing zaplatí 1000×. Tady nový algoritmus nepomůže.

BGP / OSPF routing

Internetové routery počítají offline a inkrementálně. SSSP runtime není bottleneck.

Game AI pathfinding

Dominuje A* s heuristikami. Pro statické mapy se preprocessuje, pro dynamické grafy je n typicky moc malé na to, aby asymptotika hrála roli.

Teoretická CS

Zde je skutečný dopad. Bariéra padla → otevírá dveře pro APSP, min-cost flow, dynamic shortest paths. Proto Best Paper STOC 2025.

Network science / data mining

Pro web grafy s n ≥ 10⁸ může pomoct, pokud někdo napíše dobrou implementaci. Skryté konstanty rozhodnou.

Tvůj networkx.dijkstra

Pokud nepracuješ s grafem 10⁸+ uzlů, optimalizovaný heap Dijkstra dá lepší wall-clock než ručně psaný Duan. Zatím.

Jak Duan algoritmus funguje (intuice)

Klíčový vhled: Dijkstra musí udržovat plně setříděnou frontu — každý extract-min stojí log n. Tahle „sorting barrier" je důvod, proč šedesát let nikdo nepřekonal O(n log n) pro řízené grafy s reálnými vahami.

Trik Duana et al.: Plné setřídění není potřeba. Stačí přibližné uspořádání přes „kbelíky" (buckets) podle vzdálenosti. V každém kbelíku se vybere malý počet pivotů, z nich se spustí omezený multi-source Bellman-Ford relax, a rekurzivně se zužuje hranice.

Důsledek: Vyhneme se faktoru log n z heapu, ale platíme za bookkeeping. Výsledek: O(m · log^(2/3) n) deterministicky, pro řídké grafy s nezápornými reálnými vahami.

Omezení: Asymptotika je horší pro husté grafy (m ≈ n²). Konstanty jsou výrazně větší. Pro většinu praktických velikostí (n < 10⁸) optimalizovaný d-ary heap Dijkstra stále vyhrává wall-clock.