当前位置: 首页 > 知识库问答 >
问题:

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

齐迪
2023-03-14

给出了一个图G=(V,E),它是正加权的,有向的,无圈的。我设计了一个在O(k(m+n))中运行的算法,用于报告从s到T的k-边最短路径。k-边最短路径定义为从s到t的具有k条边的路径,并且对于从s到t的所有路径,该路径的总权也必须是最小的。

由于BFS不能单独用于寻找最短路径(除非权重相等),我认为运行时间意味着使用BFS寻找具有k条边的路径。让我感到困惑的是k,因为我认为它意味着表演BFS k次。

我可能的想法是从源代码运行一个BFS,以找到所有可能的k链路路径。通过跟踪沿途的级别,并在将每个节点添加到队列中时将总路径权重存储到每个节点,我可以找到所有可能的k链路路径及其权重。显然,如果我遇到路径权重较低的较低级别的目的地,根据定义就没有k边最短路径。如果有超过k条边的路径总权重较小,那么该如何处理呢?它也不是O(k(m+n))。任何有用的提示都将不胜感激。

共有1个答案

何涵衍
2023-03-14

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))

 类似资料:
  • 给出了一个边上具有任意权的有向无环图和两个特定结点s和t,其中s的内度和t的外度为0。如何确定成本为正的s到t的最短路径?

  • 在一个加权有向图中,我需要找到两个结点s,t之间的最短路径。以下是限制: 权重可以为负值。 路径必须经过一个特定的边,让我们从节点u到V调用her e和shes。 输出路径必须简单,即我们只通过一个节点一次。 因为我希望它最短,所以我将检查在从s到u之前从v到t运行bellman ford是否比相反的方式更快(如果有节点,两个节点都使用where是放置它的最佳位置)。 谢谢你的帮助!

  • 我试图将这个问题概念化,然后为它编写Java代码。我知道这里有一些讨论,但我没有看到很多回答者,所以我想通过写下我的想法来重申这个问题,我希望从你们那里得到一些反馈。谢谢 我的想法:对于每个叶节点,找到从根节点到它的最长路径。对于所有路径,找到最大路径长度 然而,这不就是蛮力吗,对此还有更优雅的解决方案吗? 我听说过使用Djikstra的负权重算法,但在某些地方它说这只适用于特定情况?我也看到了关

  • 给定一个无权无向图的邻接矩阵,是否有一种有效的方法(多项式算法)来扩展或增加任意给定的两个结点s和T之间的最短路径长度? 示例: 在下面的例子中,从顶点S=1到顶点T=5有5条不同的“最短路径”,每个路径的长度为3。我想去除最少的边数,这样最短的路径长度被迫变成4或更多。(断开图形连接是可以的。) 表示此图形: 强制最短路径长度从3增加到4的最小代价是去除两条边(1,2)和(5,9) 目标:

  • 我有一个有圈的有向图。所有边都是加权的,权重可以是负值。可能会有负循环。