java - 从点列表中查找最短路径

标签 java path-finding

如果我有一个通过 Java 中的 2D 数组迷宫类型的广度优先搜索返回的点列表,我如何才能找到该点列表中的最短路径?

例如,如果我的潜在目标点是 [2, 4] 和 [6, 0],并且我有一个通往每个目标点的点列表,我如何找出哪条路线最短?

我想我可能必须使用 Djikstra 算法或其他算法,但我不确定。

非常感谢

最佳答案

您可以在此处使用 Dijkstra 算法。给定您提到的数组迷宫,第一步是获取迷宫中 2 个相邻节点之间的所有边以及边成本。对于节点,您需要知道每个节点是否已被访问,以及访问该节点的当前成本。

现在,如果您不关心获得最短路径,则可能不需要 Dijkstra。相反,您可以使用 DP/递归方法来获取从源坐标到目标坐标的可能路径。如果您想查看 Dijkstra 的实现,this是我写的。为了获得最短路径,您显然需要节点之间的距离。

为了找到两点之间的路径,我建议类似 this执行。它包括 DP 和递归实现,并比较两者的运行时间(对于大型数据集,递归可能需要很长时间才能运行)。

我觉得这些应该足以让你开始了。如果您需要其他信息,请告诉我。

关于java - 从点列表中查找最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443077/

相关文章:

java - Android sdk 26 及以上 - 调用 JNI GetObjectField 并出现自定义数组对象的未决异常 java.lang.NoSuchFieldError

java - 为什么 String.replaceAll (".*", "REPLACEMENT") 在 Java 8 中会出现意外行为?

algorithm - 3维跳跃点搜索算法

partial - 只有部分图知识的寻路算法

java - 在jsp页面中调用Java类

Java棋盘边框?

algorithm - 无限期地随机移动物体而不会发生碰撞

networking - IRC中的最短路径是如何保证的?

c++ - DFS图记录路径(Pathfinding)

java - 如何使用构造函数注入(inject)为 Spring Data 存储库创建 JavaConfig 工厂方法?