具有正好k个蓝色边缘的所有顶点对的最小权重最短路径

时间:2015-03-06 06:56:32

标签: graph-algorithm

基本上,图表的一个子集具有蓝色的边

所以我知道如何用O(n ^ 3)中的DP找到所有对最短路径,但是如何解释问题所需的颜色和边缘数的准确性?

1 个答案:

答案 0 :(得分:1)

这可以使用Floydd-Warshall的变体在O(k ^ 2.n ^ 3)中完成。

不是跟踪两个节点 i j 之间的最小路径权重 d(i,j),而是跟踪 i j 之间路径的最小路径权重 d(i,j,r),其中 r 蓝色边,对于0≤ r k

检查通过节点 m 的路径时的更新步骤,其中通常 d(i,j)将使用 d(i,i)的总和进行更新m) d(m,j)如果它更小,变为:

for u: 0 .. k
    for v: 0 .. (k-u)
        s = d(i,m,u) + d(m,j,v)
        d(i,j,u+v) = min( s, d(i,j,u+v) )

最后,你读了 d(i,j,k)