Hacker News new | ask | show | jobs
by lambo4bkfast 1236 days ago
From the paper:

"Two textbook algorithms for SSSP are Bellman-Ford and Dijkstra’s algorithm. Dijkstra’s algorithm is near-linear time (O(m + n log n) time)"

This is incorrect; Dijkstra's Algorithm using a binary priority queue has: O((m + n)log n) time

1 comments

I recall that the quoted time complexity is correct, assuming the queue is a Fibonacci heap.

https://en.m.wikipedia.org/wiki/Dijkstra%27s_algorithm#CITER...

Ah yes you're correct. Fibonacci heap's aren't usually used in most applications of dijkstra's algorithm (such as road networks) though because trading an O(logn) heap.decrease_key operation for an O(1) heap.decrease_key operation, but getting a slower heap.delete_min operation (by a constant factor) isn't worth it.

This is because there are much fewer heap.decrease_key operations on average than Dijkstra's worst case analysis suggests. The expected number of heap.decrease_key operations is not large enough to offset the loss in average runtime for the heap.delete_min operation.

I didn't know that! Thank you for elaborating.