我在这里询问了最短路径算法: 2D waypoint pathfinding: combinations of WPs to go from curLocation to targetLocation
(要了解我的情况,请阅读该问题以及此问题。)
似乎Dijkstra最短路径算法能够满足我的需要。但是,我的路线图中有大约500到1000个节点。
到目前为止,我所看到的实现将节点数量限制在50以下。我的问题是:我还应该使用Dijkstra最短路径算法,还是替代? Java中是否有任何实现?
答案 0 :(得分:5)
在您尝试之前,您不知道。
1000个节点并不是那么多。 Dijkstra的算法在边缘数量上具有线性复杂度,并且边缘数量在节点数量上最差二次方。根据您对图表的描述,很难说出有多少边缘,但即使是完整的1.000.000也不是很大。
主要关注点是您使用priority queue正确实施。
编辑:Russell & Norvig,第2版,在第3章和第4章中描述了一组通用搜索算法。他们称之为统一成本图搜索本质上是Dijkstra的算法。如果您按照他们的指示操作,可以在需要时将算法扩展到A *搜索。
答案 1 :(得分:2)
度量2D世界中的最短路径查找是A *算法的教科书示例。您的启发函数应该是从每个航点到目标的直线距离。
答案 2 :(得分:0)
dijkestra算法不是prim或kruskal,当后者仅使用边缘时,它正在计算整个mst。你有其他算法吗?