java - 适用于 500 多个航路点/节点的最短路径算法(例如 Dijkstra 算法)?

标签 java artificial-intelligence path-finding dijkstra graph-algorithm

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

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

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

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

最佳答案

只有尝试过才知道。

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

主要问题是您是否使用 priority queue 正确实现它.

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

关于java - 适用于 500 多个航路点/节点的最短路径算法(例如 Dijkstra 算法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234557/

相关文章:

java - ServiceLoader 查找接口(interface)的实现

java - 将 2 个 Controller 方法映射到具有不同查询参数的同一端点

machine-learning - 如何让 pytorch 读取 numpy 格式?

algorithm - 人工智能 : Fastest algorithm to find if path exists?

c# - 在游戏中使用 C# 基于气味的寻路

java - 过滤脏话 | java 'replace'

java - 如何使用 Selenium WebDriver 处理身份验证窗口时在 URL 中传递域名

artificial-intelligence - FANN中位失败的目的是什么?

algorithm - 寻找 ANN 的最佳学习规则

c# - 使用 NavMesh (Unity) 寻找路径点