哪种算法最好遍历加权,有向图提供了起点和终点?

时间:2013-12-06 11:11:39

标签: data-structures graph

您好我正在寻找最佳算法来找出遍历有向和加权图的最佳路径。

[大家好,我正在编辑完全解释我的要求的问题]

例如:如果在5个节点的图形中(让我们分别为所有5个节点分配编号1,2,3,4,5),如果我希望从节点2开始遍历并以4结束,覆盖所有节点节点,那么哪个是解决问题的最佳算法?

我们可以有两个假设:

a)任何两个节点之间总有一条边。 (对于两个节点(A和B)的意思是从A到B以及从B到A的边缘。

b)我们可以遍历一个节点两次(如果需要遍历完整的图形)。

2 个答案:

答案 0 :(得分:5)

这是计算机科学中的一个经典问题,有一个众所周知的解决方案。

图表是否仅具有非负边缘权重?然后使用Dijkstra’s algorithmA*。否则使用Bellman–Ford algorithm。如果要在所有节点之间找到所有对最短路径,请使用algorithm of Floyd & Warshall

答案 1 :(得分:2)

使用Dijkstra是可行的方法,但您可以将算法(默认情况下是单一来源 - 多接收器算法)调整为单源单接收器实现。

基本上,不是从一个节点(源节点)开始,而是同时从开始节点和结束节点开始。对于汇聚节点,反向遍历边缘。 您可以使用两个优先级队列,并为每个步骤峰值队列从中删除下一个条目。每当您尝试将新元素排入队列时,请检查它是否已包含在其他队列中。在这种情况下,您已找到从源到接收器的路径。