正加权有向无环图中的k边最短路径

时间:2013-03-14 01:21:03

标签: algorithm shortest-path directed-acyclic-graphs

我得到一个图表,G =(V,E),即正加权,有向和非循环。我将设计一个在O(k(m + n))中运行的算法,用于报告从s到t的k边缘最短路径。 k边缘最短路径被定义为从s到t的具有k个边缘的路径,并且对于从s到t的所有路径,路径的总权重也必须是最小的。

由于BFS不能单独用于查找最短路径(除非权重相等),我认为运行时间意味着使用BFS来查找具有k个边缘的路径。什么让我失望的是k,因为我认为它意味着执行BFS k次。

我可能的想法是从源运行BFS以找到所有可能的k-link路径。通过跟踪沿途的水平并将每个节点的总路径权重存储到我的队列中,我可以找到所有可能的k-link路径及其权重。显然,如果我在较低级别遇到具有较低路径权重的目的地,则根据定义没有k边缘最短路径。如果有超过k个边的路径总重量减少的情况怎么办?它也不是O(k(m + n))。任何有用的提示将不胜感激。

1 个答案:

答案 0 :(得分:3)

f[i][j]成为从sj的i-link最短路径,最初我们有

f[1][x] = e(s, x);

然后迭代K - 1次,我们每轮使用f[i][]来计算f[i + 1][],这可以通过

完成
for each node v:
    f[i + 1][v] = INF;
for each edge e[u][v]:
    f[i + 1][v] = min(f[i + 1][v], f[i][u] + e[u][v]);

因此需要O(k(n + m))