修改最短路径以获得最低成本路径

时间:2011-11-01 20:24:29

标签: algorithm graph theory graph-algorithm

如果我们修改最短路径问题,使得两个顶点之间的路径的成本是其上边缘的成本的最大值,那么对于任何一对顶点u和v, 它们之间的路径遵循最小成本生成树是最低成本路径。

我如何证明这种方法是正确的?这很有意义,但我不确定。有谁知道这个算法是否存在于文献中?它有名字吗?

2 个答案:

答案 0 :(得分:1)

你提到的方法在讨论Prim算法和Dijkstra算法之间关系的文献中有详细讨论,通常维基百科是开始研究的好地方:

  

Dijkstra's algorithm的基础流程类似于Prim's algorithm中使用的贪婪流程。 Prim的目的是找到连接图中所有节点的最小生成树; Dijkstra只关注两个节点的最低成本路径。

答案 1 :(得分:0)

您可以使用MST的一些基本事实(通常在Prim& Kruskal算法的正确性证明中讨论)。现在重要的是

Lema 1:

  

给定图形切割(将顶点分割成两个   不相交的集合)MST中连接两个部分的边缘将是   连接这两个部分的边缘最便宜。

(证据是直截了当的,如果有更便宜的边缘,我们将能够轻松地构建更便宜的生成树)

我们现在可以证明,如果考虑最大成本,MST中的路径都是最低成本路径:

s中取任意两个顶点tG以及在GST中连接它们的路径p。现在让uv成为这条路上最昂贵的边缘。我们可以描述在这条边上切割的图形,其中一个分区的顶点位于MST的u侧,另一个分区的顶点位于v侧。我们知道连接st的任何路径都必须通过此剪切,因此我们可以确定从st的任何路径的费用必须至少为成本这个切口最便宜的边缘。但是引理1告诉我们uv是这个削减最便宜的边缘,因此p必须是最低成本路径。

相关问题