【发布时间】:2015-03-06 06:56:31
【问题描述】:
图的一个子集基本上是蓝色的
所以我知道如何在 O(n^3) 中找到所有具有 DP 的最短路径对,但我如何考虑颜色和问题所需边数的准确性?
【问题讨论】:
-
不确定,但您需要的复杂性可能高于 n^3,因为约束“恰好 k”
标签: graph-algorithm
图的一个子集基本上是蓝色的
所以我知道如何在 O(n^3) 中找到所有具有 DP 的最短路径对,但我如何考虑颜色和问题所需边数的准确性?
【问题讨论】:
标签: graph-algorithm
这可以使用 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, 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)。
【讨论】: