对 Dijkstra 的最短路径和 MST 感到困惑
Confused about Dijkstras shortest path and MST
Dijkstra 的最短路径算法是否应该 return 一棵树,就像我教科书中的算法介绍一样?在我在网上看到的示例中,它只显示了 2 个顶点之间的最短路径。在我的教科书中,它 return 是一棵边连接到每个顶点的树。我很困惑。
这取决于您使用的教科书:Dijkstra 算法解决了单源最短路径问题,并且如果您正在计算这些路径,则将每个顶点的前导存储在最短路径中并不是很多额外的工作或者它们的长度。因此,根据来源和应用程序,您可能会阅读如下内容:
- DijkstraParents(G, s),其中 returns 从 s 到图 G 中任何其他顶点的最短路径中每个顶点的父节点;
- DijkstraTree(G, s),可以利用DijkstraParents(G, s)的结果return实际的最短路径树;
- DijkstraPath(G, s, t),可以使用DijkstraParents(G, s)或DijkstraTree(G, s)的结果显式return一条从s到t的最短路径;
- ...等等,包括使用上述方法计算纯路径长度。
最后,所有这些版本都是主要算法的微小变化,所以请使用适合您需要的那个。
Dijkstra 的最短路径算法是否应该 return 一棵树,就像我教科书中的算法介绍一样?在我在网上看到的示例中,它只显示了 2 个顶点之间的最短路径。在我的教科书中,它 return 是一棵边连接到每个顶点的树。我很困惑。
这取决于您使用的教科书:Dijkstra 算法解决了单源最短路径问题,并且如果您正在计算这些路径,则将每个顶点的前导存储在最短路径中并不是很多额外的工作或者它们的长度。因此,根据来源和应用程序,您可能会阅读如下内容:
- DijkstraParents(G, s),其中 returns 从 s 到图 G 中任何其他顶点的最短路径中每个顶点的父节点;
- DijkstraTree(G, s),可以利用DijkstraParents(G, s)的结果return实际的最短路径树;
- DijkstraPath(G, s, t),可以使用DijkstraParents(G, s)或DijkstraTree(G, s)的结果显式return一条从s到t的最短路径;
- ...等等,包括使用上述方法计算纯路径长度。
最后,所有这些版本都是主要算法的微小变化,所以请使用适合您需要的那个。