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

操纵负加权有向图的边代价以允许使用Dijkstra算法

陈富
2023-03-14

假设我们有一个有向图,它同时包含正加权边和负加权边。

我知道最短路径解决方案是Bellman-Ford算法。

我的问题是:为什么我们不能只是在所有的边成本上增加一些大的值N,这样就不再有负边了,然后使用效率高得多的Dijkstra算法?

共有1个答案

仲孙夕
2023-03-14

向每个边长度添加常量在路径长度上不是单调的,即使对于相同两个节点之间的路径也是如此(因为路径的边数可能不同)。考虑边值<代码> AB <代码>,<代码> BC/<代码>和<代码> Ac/<代码>重量<代码> -1 < /C>。添加N=2将最短路径从a切换到cab、bc切换到ac

 类似资料:
  • 我有一个有向图,边上的权值是非负的。 我的算法应该做到以下几点: 获取从顶点u到顶点V的所有路径 计算从u到v的每条路径上的最小加权边 计算我从上面计算的最小加权边的最大值。

  • 我说的只是边缘,而不是负权重循环。

  • 我知道Bellman-Ford算法可以很好地处理负权重图,但我开发了一个Dijkstra算法代码,它工作得非常好。但当我插入负加权边时,它失败了。有解决办法吗?

  • 我正在学习最小生成树。我研究了Prim的加权有向图算法。 算法简单 您有两组顶点:已访问和未访问 将所有边的距离设置为无穷远 从未访问集合中的任意顶点开始并探索其边 在所有边中,如果目标顶点没有被访问,并且如果边的权重小于目标顶点的距离,则用该边的权重更新目标顶点的距离 选择距离最小的未访问顶点,然后再进行一次,直到所有顶点都访问完 相信通过以上算法,能够在所有的生成树中找到代价最小的生成树,即最

  • 如果给定图中所有边的权重相同,Dijkstra的算法还能找到两个顶点之间的最短路径吗?谢谢!

  • 假设我们有一个加权无向图,其中,对于任意两个顶点,都有一条唯一的路径连接它们。有n个顶点和1个边,每条路的成本是c\u i。 现在,如果连接两个给定顶点的每条路径都有一定的成本,这取决于它所经过的道路,那么我们如何有效地计算所有城市对之间的总成本? 例如,每条道路的成本可以是它经过的第一条道路和最后一条道路的总和,或者是它经过的每条道路的成本的某些幂的总和,或者是成本的最大值减去它经过的道路的最小