【问题标题】:Is there a more efficient way to calculate the shortest path problem than networkx in python?有没有比python中的networkx更有效的方法来计算最短路径问题?
【发布时间】:2021-01-21 10:33:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python networkx shortest-path dijkstra


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        双向 dijkstra 算法应该会产生显着的改进。这里是the documentation

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

        【讨论】:

          猜你喜欢
          • 2014-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-23
          • 2016-04-10
          • 1970-01-01
          相关资源
          最近更新 更多