您好我正在寻找最佳算法来找出遍历有向和加权图的最佳路径。
[大家好,我正在编辑完全解释我的要求的问题]
例如:如果在5个节点的图形中(让我们分别为所有5个节点分配编号1,2,3,4,5),如果我希望从节点2开始遍历并以4结束,覆盖所有节点节点,那么哪个是解决问题的最佳算法?
我们可以有两个假设:
a)任何两个节点之间总有一条边。 (对于两个节点(A和B)的意思是从A到B以及从B到A的边缘。
b)我们可以遍历一个节点两次(如果需要遍历完整的图形)。
答案 0 :(得分:5)
这是计算机科学中的一个经典问题,有一个众所周知的解决方案。
图表是否仅具有非负边缘权重?然后使用Dijkstra’s algorithm或A*。否则使用Bellman–Ford algorithm。如果要在所有节点之间找到所有对最短路径,请使用algorithm of Floyd & Warshall。
答案 1 :(得分:2)
使用Dijkstra是可行的方法,但您可以将算法(默认情况下是单一来源 - 多接收器算法)调整为单源单接收器实现。
基本上,不是从一个节点(源节点)开始,而是同时从开始节点和结束节点开始。对于汇聚节点,反向遍历边缘。 您可以使用两个优先级队列,并为每个步骤峰值队列从中删除下一个条目。每当您尝试将新元素排入队列时,请检查它是否已包含在其他队列中。在这种情况下,您已找到从源到接收器的路径。