繁体   English   中英

有没有比python中的networkx更有效的计算最短路径问题的方法?

[英]Is there a more efficient way to calculate the shortest path problem than networkx in python?

我正在使用 networkx 和 single_source_dijkstra 在加权图上计算从一个源到一个目标的最短路径。

但是,我遇到了内存问题。

有没有更有效的方法来计算这个? Networkx 的替代品? 看我的代码:

   cost, shortestpath = nx.single_source_dijkstra(graph, startpointcoords, secondptcoords,cutoff=10000000)

双向 dijkstra 算法应该会产生显着的改进。 这是文档

一个很好的类比是在 3D 中:在 x 点放置一个气球,然后将其膨胀直到到达 y 点。 您放入的空气量与它们之间距离的立方成正比。 现在在每个点放一个气球,然后给它们充气直到它们接触。 合并的空气体积只有原来的1/4。 在更高的维度(更接近于大多数网络),还有更多的减少。

显然 networkx 的 A* 算法效率更高。 然后我使用我发布的 dijkstra 算法计算结果路径的长度。

也许尝试使用另一种算法? 您的图形可能有太多顶点但很少有边,在这种情况下,您可以在 networkX 中使用 Bellman-Ford bellman_ford_path() 链接

另一种解决方案是使用另一个 python 包,例如这个问题的答案有不同的可能库。

最后一个解决方案是实现你自己的算法! 也许是 Gabow 的算法,但您必须非常高效,例如将 numpy 与 numba 一起使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM