2

我在这里询问了最短路径算法: 2D waypoint pathfinding:combinations of WPs to go from curLocation to targetLocation

(要了解我的情况,请阅读该问题以及此问题。)

看来 Dijkstra 最短路径算法能够满足我的需要。但是,我的路线图中大约有 500 到 1000 个节点。

到目前为止,我看到的实现将节点的数量限制在 50 以下。我的问题是:我应该仍然使用 Dijkstra 最短路径算法,还是替代方案?Java中是否有任何实现?

4

3 回答 3

5

你不知道,直到你尝试过。

1000 个节点并没有那么多。Dijkstra 算法在边数上具有线性复杂度,边数在最坏的情况下是节点数的二次方。根据您对图表的描述,很难判断有多少条边,但即使是完整的 1.000.000 也不是很大。

主要关注的是您使用优先级队列正确实现它。

编辑Russell & Norvig,第 2 版,在第 3 章和第 4 章中描述了一组通用搜索算法。他们所谓的统一成本图搜索本质上是 Dijkstra 算法。如果您按照他们的说明进行操作,如果需要,您可以很容易地将算法扩展到 A* 搜索。

于 2011-03-08T15:51:44.970 回答
2

度量 2D 世界中的最短路径查找是 A* 算法的教科书示例。您的启发式函数应该是从每个航路点到目标的直线距离。

于 2011-03-08T15:35:27.117 回答
0

dijkestra 算法不是 prim 或 kruskal,当后者仅使用边缘时,它正在整体计算 mst。你还有什么其他算法?

于 2011-03-08T15:35:47.290 回答