给定图形和目标节点,如何找到从所有其他顶点到目标顶点的所有最短路径。
答案 0 :(得分:17)
Dijkstra的算法。您可以向后工作,就像您的目的地是您的起始顶点一样。这将为您提供到任何其他节点的距离和路径。
* PS:要记住一件事。在将Dijkstra作为起始顶点应用Dijkstra之前,您需要反转边缘,以使其起作用。
答案 1 :(得分:1)
假设它是双向的,你可以从目的地开始向外工作。这通常称为广度优先搜索(BFS)。
链接到dest的任何内容的距离都是1.链接到任何节点(尚未计算)的任何内容的距离都为2.重复直到您没有节点。
即使它不是bidrectional,你仍然可以很容易地做到这一点,通过一次通过节点“假装”其双向性开始。
无论如何,这是这样做的顺序(V + E),其中V是你的节点数,E是你的边数。
答案 2 :(得分:0)
如果您有加权边并且想要最小化路径上权重的总成本,那么Dijkstra的算法是好的,但是在未加权的图中(所有边具有相同的成本),简单的广度优先搜索将做到这一点
答案 3 :(得分:0)
只是为了完成上面最有用的答案。
为了使该解决方案有效,您需要在将目的地作为起始顶点应用Dijkstra之前反转图形的边缘。