给定有向图G =(V,E)和权重函数w:E - > R +(图中边缘只有正权重),我需要找到从V中每个顶点v到给定顶点k的所有最短路径。
我考虑过反转图中的边,然后从顶点k运行Dijkstra's algorithm。我想知道从k到v1的最短路径p是否实际上是原始图形中从v1到k的最短路径(在反转边缘之前)。
如果有人能解释是否以及为什么会这样做,我将不胜感激。
提前致谢。
答案 0 :(得分:2)
(这不是世界上最正式的证据,但希望它足以说服自己)。
假设对于顶点 v ,在图 G 中,从 v 到 k 的最短路径是长度 m 。
你想知道的两件事是:
1.在反转图G *中,从 k 到 v 的路径长度为 m 。
2.在反转图G *中,没有 k 到 v 的路径比 m 短。
在我开始之前,我们可以对信仰采取一件事:
引理1 :如果你有一个从顶点 v 到顶点 w 的有向路径,并且你反转了路径上的每一条边,那么你有一个从顶点 w 到顶点 v 的路径。这是可以证明的,但我认为这是相当常识。如果你想要我,我会证明这一点。
对于第1点:考虑 G 中从 v 到 k 的路径,包括 m 边缘。如果你反转这些边缘,你将有一条从 k 到 v 的长度为 m 的路径(由引理1 )。
对于第2点:假设在反转图G *中存在一条路径,从 k 到 v 长度 n < 米。如果您反转此路径,那么从 v 到 k (引理1 )的路径长度 n 。这意味着原始图形中存在从 v 到 k 的路径,该路径比 m 短,与长度路径的语句相矛盾 m 是最短的。