图中的单个目标最短路径

时间:2011-04-25 21:21:41

标签: algorithm graph

给定图形和目标节点,如何找到从所有其他顶点到目标顶点的所有最短路径。

4 个答案:

答案 0 :(得分:17)

Dijkstra的算法。您可以向后工作,就像您的目的地是您的起始顶点一样。这将为您提供到任何其他节点的距离和路径。

* PS:要记住一件事。在将Dijkstra作为起始顶点应用Dijkstra之前,您需要反转边缘,以使其起作用。

答案 1 :(得分:1)

假设它是双向的,你可以从目的地开始向外工作。这通常称为广度优先搜索(BFS)。

链接到dest的任何内容的距离都是1.链接到任何节点(尚未计算)的任何内容的距离都为2.重复直到您没有节点。

即使它不是bidrectional,你仍然可以很容易地做到这一点,通过一次通过节点“假装”其双向性开始。

无论如何,这是这样做的顺序(V + E),其中V是你的节点数,E是你的边数。

答案 2 :(得分:0)

如果您有加权边并且想要最小化路径上权重的总成本,那么Dijkstra的算法是好的,但是在未加权的图中(所有边具有相同的成本),简单的广度优先搜索将做到这一点

答案 3 :(得分:0)

只是为了完成上面最有用的答案。

为了使该解决方案有效,您需要在将目的地作为起始顶点应用Dijkstra之前反转图形的边缘。