我知道Dijkstra的算法是如何工作的,并且它可以在时间O(m + n log n)时间内运行。我们怎么知道单源最短路径没有比这更好的算法呢?
答案 0 :(得分:1)
Dijkstra的算法实际上不一定是计算图中单源最短路径的最快算法。例如,如果您知道所有边都具有整数权重并假设机器字足够大以容纳任何这些整数,那么您可以使用由Thorup开发的算法,该算法在时间O(m + n)中运行,渐渐地比Dijkstra算法快。如果边缘未加权,或者它们都具有相同的权重,那么简单的BFS会在时间O(m + n)内完成此任务。