需要在最小化权重的情况下检测图中的结束路径

时间:2015-04-05 06:07:25

标签: algorithm

想要找到从节点a到任何节点的最短加权路径。未给出目标节点。人们可以多次访问任何顶点。

如果路径权重应小于Integer.MAX

要进行什么算法.. ??无法检测算法本身。

我确实尝试过旅行推销员问题,但它并不匹配;它不适合Dijkstra ......

如何在内存中保留所有路径是这里的主要挑战..

编辑:图表没有指向一个,没有负面的威胁。

参考:http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare http://en.wikipedia.org/wiki/Travelling_salesman_problem

2 个答案:

答案 0 :(得分:1)

对于没有负权重的无向图,可以使用Floyd-Warshall算法查找时间复杂度为O(V ^ 3)的所有对最短路径,其中V是顶点数。该算法还允许轻松地reconstruct the all computed shortest paths。它使用O(V ^ 2)存储器来存储距离和用于重建路径的附加信息。

还有一些other algorithms用于解决这个问题,时间复杂度更高,但Floyd-Warshall非常容易编码并开始使用。

答案 1 :(得分:0)

  

想要找到从节点a到任意节点的最短加权路径   节点

我立刻想到Dijkstra's algorithm,因为那正是它的作用。

  

如何在内存中保留所有路径是这里的主要挑战..

对于图表中的每个节点,跟踪它将导致最短路径的前一个节点。请查看pseudocode第20行。

要构建路径,只需从目标节点向后移动,直到到达源节点。