Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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



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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: