具有动态边缘成本的最短路径(算法)

时间:2014-04-06 18:33:29

标签: algorithm graph

我正在寻找一种算法,该算法可以在无向图中找到两个节点之间的最短路径,其成本是动态的。 通过动态,我的意思是边缘成本取决于下一个(未来)步骤。 例如,在这样的图表中:

dynamic edge cost in shortest path problem

我正在寻找从“a”到“e”的最短路径,但“a”到“b”的成本取决于下一步。如果我去c,那就是7,如果我去d,那就是9。

我的问题是:是否有解决该问题的算法?

2 个答案:

答案 0 :(得分:7)

将问题减少到常规'最短路径问题

创建虚拟顶点b1,b2(而不是b)和边缘:

(a,b1,7), (b1,c,6), (a,b2,9), (b2,d,5)

其余的边和顶点保持原样。

现在,从源到目标运行常规最短路径算法(Dijkstra / Bellman Ford)。

(对任何'条件'权重边缘重复此过程。)

答案 1 :(得分:0)

如上一个答案中所提到的,由于边权重仅取决于路径中的下一个顶点,因此您可以复制每个顶点最多| V |跟踪下一个行进的顶点的重复项,其中每个重复顶点只有一个外出邻居,输出成本取决于下一个访问哪个邻居。在这个修改过的图上运行Dijkstra算法的总复杂度并不比O(V(V log v + E))差,如果你在每个顶点都有边界度k,那么复杂度就是O(k( V log V + E)),其中V是顶点数,E是边数。