最短路径,一条边变为零

时间:2012-12-31 18:02:52

标签: algorithm shortest-path

给出无向加权图G和两个顶点:起始顶点和结束顶点

什么是最有效的算法,能够将正好一条边的权重转为零,从头到尾找到最短路径?

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

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

谢谢

2 个答案:

答案 0 :(得分:7)

你可以通过在两倍大小的增强图上使用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的能力。

答案 1 :(得分:-1)

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