【问题标题】:shortest path with one edge turn to zero一条边最短路径归零
【发布时间】:2012-12-15 19:07:50
【问题描述】:

给定一个无向加权图 G 和两个顶点:开始顶点和结束顶点

找到从开始到结束的最短路径的最有效算法是什么,并且能够将恰好一条边的权重为零?

编辑: 我知道dijkstra算法,但正如我所说, 这个问题的情况有所不同:我们可以将一个边变为零,

我想知道如何有效地解决这个问题, 实际上,一种方法是迭代地将边缘权重设为零!并在每一步应用dijkstra算法, 但是,我正在寻找更有效的方法

谢谢

【问题讨论】:

  • 你在问如何find the shortest path?或者如何有效地recalculate the shortest path after removing an edge?无论哪种方式,这个问题都是重复的。
  • 不,我知道 dijkstra 算法,但是,正如我所说,我们可以将一个边权重设为零(不删除边!),我想知道如何有效地解决这个问题,使用 dijkstra或其他方式!
  • Djikstra 应该可以毫无问题地处理 0 的边权重。
  • 我知道,但是原始图没有权重为 0 的边,我必须确定将哪条边转为零会导致从开始到结束的最小路径,

标签: algorithm shortest-path


【解决方案1】:

您可以通过在两倍大小的增强图上使用 Djikstra 算法来解决此问题。

假设你有顶点 1...n。

定义一个新图,使得对于原始图中每个权重为 w 的边 a->b,定义权重为 w 的边 a->b,权重为 0 的 a->b+n 和 a+n->b +n 权重为 w。

这个想法是顶点 n+1..n+n 是包含原始图副本的副本。从原始图移动到副本表示使用您将边缘变为 0 的特殊能力。请注意,一旦您处于副本中,就无法返回原始图形,因此该特殊能力只能使用一次。

因此,您只需要解决从头到尾+n 的增强图上的问题,以找到最短路径,包括您将单个权重设置为 0 的能力。

【讨论】:

    【解决方案2】:

    Dijkstra's algorithm 通常用于解决这些类型的问题。另外,这听起来有点像TSP 问题,不过我可能在这方面错了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      相关资源
      最近更新 更多