想要找到从节点a到任何节点的最短加权路径。未给出目标节点。人们可以多次访问任何顶点。
如果路径权重应小于Integer.MAX
要进行什么算法.. ??无法检测算法本身。
我确实尝试过旅行推销员问题,但它并不匹配;它不适合Dijkstra ......
如何在内存中保留所有路径是这里的主要挑战..
编辑:图表没有指向一个,没有负面的威胁。
参考:http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare http://en.wikipedia.org/wiki/Travelling_salesman_problem
答案 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行。
要构建路径,只需从目标节点向后移动,直到到达源节点。