在无向无权图中缓存 BFS 遍历

问题描述 投票:0回答:0

我有一个无向且未加权的图,其节点为 ~10^6 个节点 - 以矩阵格式可视化。 下图的示例表示。

红色格子被挡住了。

我的问题是找到最短距离 b/w 任何两个网格 - t源和目标网格将即时出现,在最坏的情况下 - 一个接一个 - 将询问所有对最短路径。

我试过 Floyd-warshall - 占用太多内存,所有节点的 dijkstra - 太慢了。

还有其他方法吗? 由于它只是一个统一矩阵,我认为可能存在一些我不知道的模式。 这是否可以以某种方式缓存,以便已经遍历的 bfs 可以从中间点开始,而不是再次从头开始?

A* 可以工作但仍然很慢 - 如果需要找到所有对最短路径。

任何图书馆也会有帮助

algorithm c++11 graph shortest-path graph-traversal
© www.soinside.com 2019 - 2024. All rights reserved.