部分所有对最短路径

时间:2017-06-13 02:38:15

标签: algorithm graph

给定一个包含许多节点的无向​​加权图,如何计算所有对最短路径的子集?

子集是指图中的一些节点,而不是所有节点(图的顶点子集,可以手动指定,或者从某些聚类算法指定。所选顶点的计数可以是1%~5%总顶点)。

Dijkstra或Floyd-Warshall可能会计算额外的节点,这可能对我的应用程序来说效率不高。

是否存在计算特定节点之间所有对最短路径并获得良好性能的算法?

1 个答案:

答案 0 :(得分:0)

基本上,我认为您不能只考虑某些节点,因为子图中的最短路径可能不是全局最短的。因此,您必须考虑所有节点。

也许您可以像这样实现Dijkstra的算法:在每次迭代中设置一个check子例程。如果所有需要的节点都已固定(找到了最小路径),则终止算法。这样可以节省其余节点的时间。

为了提高效率,如果没有负边长,建议使用n倍Dijkstra算法。如果有的话,请使用Johnson算法,该算法提供了一种特殊的加权技术,可以将负边缘长度转换为非负边缘长度。

也许您只需要一个更快的服务器。

希望有帮助。

相关问题