为什么我们运行 Dijkstra算法在Johnson算法中只有V次?
Why do we run Dijkstra's algorithm only V times in Johnson's algorithm?
在 运行宁 Bellman-Ford 并重新加权图表后,我们可以获得正边。但是要找到每对之间的最短路径,这是否意味着我们必须 运行 Dijkstra 的 V^2 次?因为对于V个顶点,V选择2 = V(V-1)/2!所以 O(V^2) 时间。为什么只有我们 运行 Dijkstra 的 V 次?
给定任意两个点,每次我们 运行 Bellman-Ford 我们都正确地将我们对最短路径的理解至少扩展了一条边。然后停止改进。
最长可能的最短路径访问图中的每个顶点一次。该路径有 V
个顶点和 V-1
个边。因此,一旦我们 运行 V-1
次,我们必须找到所有可能的最短路径。
在 运行宁 Bellman-Ford 并重新加权图表后,我们可以获得正边。但是要找到每对之间的最短路径,这是否意味着我们必须 运行 Dijkstra 的 V^2 次?因为对于V个顶点,V选择2 = V(V-1)/2!所以 O(V^2) 时间。为什么只有我们 运行 Dijkstra 的 V 次?
给定任意两个点,每次我们 运行 Bellman-Ford 我们都正确地将我们对最短路径的理解至少扩展了一条边。然后停止改进。
最长可能的最短路径访问图中的每个顶点一次。该路径有 V
个顶点和 V-1
个边。因此,一旦我们 运行 V-1
次,我们必须找到所有可能的最短路径。