我在这里询问了一个最短路径算法:2D 航点路径规划:从当前位置到目标位置的航点组合
(为了理解我的情况,请阅读该问题以及这个问题。)
看起来 Dijkstra 最短路径算法能够满足我的需求。但是,我的路线图中大约有 500 到 1000 个节点。
到目前为止,我所见过的实现将节点数量限制在 50 个以下。我的问题是:我是否应该继续使用 Dijkstra 最短路径算法,还是选择其他算法?是否有任何 Java 实现?
回答:
尝试了才知道。
1000 个节点实际上并不算多。Dijkstra 算法的复杂度与边的数量呈线性关系,而边的数量最多是节点数量的二次方。从你对图的描述来看,很难说有多少条边,但即使是完整的 1,000,000 条边也不是很大。
主要问题是你是否正确地实现了它,使用了优先级队列。
编辑: Russell & Norvig,第二版,在第 3 章和第 4 章中描述了一组通用搜索算法。他们所说的统一代价图搜索本质上就是 Dijkstra 算法。如果你按照他们的指示,如果需要,你可以很容易地将该算法扩展到 A* 搜索。