我正在阅读《算法导论》第三版。书中提供了3种解决问题的方法,但我想询问其中两种方法。
无名算法:
该算法从DAG(详见22.4节)开始进行拓扑排序,以在顶点上施加线性排序。如果DAG包含从顶点u到顶点v的路径,则在拓扑排序中u位于v之前。我们在拓扑排序顺序上对顶点只进行一次遍历。在处理每个顶点时,我们松弛离开该顶点的每条边。
Dijkstra算法:
这个相当有名。
就本书所示而言,无名算法的时间复杂度为O(V+E),而Dijkstra算法的时间复杂度为O(ElogV)。我们不能在负权重上使用Dijkstra算法,但我们可以使用另一种方法。除了可以用于循环算法外,使用Dijkstra算法的优点是什么?
无名算法:
该算法从DAG(详见22.4节)开始进行拓扑排序,以在顶点上施加线性排序。如果DAG包含从顶点u到顶点v的路径,则在拓扑排序中u位于v之前。我们在拓扑排序顺序上对顶点只进行一次遍历。在处理每个顶点时,我们松弛离开该顶点的每条边。
Dijkstra算法:
这个相当有名。
就本书所示而言,无名算法的时间复杂度为O(V+E),而Dijkstra算法的时间复杂度为O(ElogV)。我们不能在负权重上使用Dijkstra算法,但我们可以使用另一种方法。除了可以用于循环算法外,使用Dijkstra算法的优点是什么?