问题是这样的: 给出有向图G =(V,E),两个顶点s,t和两个权重函数w1,w2。 G中没有负加权周期(通过w1和w2)。 我需要描述一个算法,该算法在给定的从s到t的给定最短路径 s 中找到从s到t的最短路径w2。
我发现了这个: FInding All Shortest Paths Between Two Vertices 但答案似乎对我很不利。
我不知道如何解决这个问题(即使是蹩脚的问题)。 任何帮助将不胜感激。
答案 0 :(得分:1)
我们的想法是让w2
变得重要 - 但不足以影响w1
的结果。
让SUM2
为所有边缘w2
的总和:SUM2 = Sum { w2(e) | e in E }
和min{w1} = min { w1(e) | e in E }
(根据w1
的最小值)
基于此,创建新的权重函数:
w(e) = w1(e) + w2(e)/min{w1}*(SUM2+1)
现在,根据w1
给出所有最短路径 - 很明显为什么根据w2
的最短路径会受到青睐。
另一方面,w2
并不强大'足以克服w1
和支配的重要性,因为请注意,根据w2
的所有边的总和现在小于w1
使用上述w
和任何最短路径算法来获得所需的最短路径。