【发布时间】:2014-07-12 21:31:12
【问题描述】:
我正在尝试实现 Dijkstra 算法,以找到网格 (x,y) 中 2 点之间的最短路径,但问题是我只能向上、向下、向右和向左移动。
我有一个 ArrayList 包含我需要传递的点的 x 和 ys 以及另一个 ArrayList 的点是网格上的障碍物,我正在尝试编写一个函数,该函数返回一个 ArrayList 所需的运动为了完成所有的路径。
例如:1,1,1,2,3,4,1.. 1 右 2 左 3 上 4 下。
能否请您提供一些提示和/或示例。
【问题讨论】:
-
对于具有单位长度边的网格子图,您不应该使用 dijkstra;改用 BFS。原因是优先队列会给你与简单队列完全相同的边界。
-
@G.Bach 我同意。 A* 搜索是一种 BFS(最佳优先搜索)算法。
-
@Daniel 实际上 A* 是一个有根据的 dijkstra(当使用 A* 且所有 v 的 h(v)=0 时,你会得到 dijkstra)
-
你知道你应该使用 Dijkstra's - 好的,那么问题出在哪里?这是 Dijkstra 的一个非常简单的应用程序,将任何通用伪代码转换为 Java 代码来解决您的问题应该非常简单,如果您要寻找它,您可能会找到解决这个确切问题的 Java 代码。请尝试就您面临的问题提出更具体的问题。