如何从Java中的迷宫矩阵开始制作最短路径迷宫求解器?

时间:2011-07-24 21:07:34

标签: java dijkstra

所以我想创建一个解决迷宫的最短路径迷宫求解器。迷宫与此类似:

我的迷宫周围总会有一堵墙。此外,如果你不知道,@是墙壁。

@@@@@@@@
@   S@ @
@@@ @@E@
@   @  @
@@@   @@
@@@@@@@@

其中S是开始,E是结束。

我想申请Dijkstra的算法,但我不明白如何实际实现它。就像:

  1. 检查当前位置(从头开始)。如果是E,则返回“path”< - 这是......?否则,将当前位置标记为已访问并以某种方式标记它来自哪个位置......
  2. 将所有当前位置排队,这些邻居不是墙,而且尚未访问过。
  3. 为所有邻居重复1号,并将所有邻居排队。
  4. ......我很困惑,请帮忙。我有一个类,它包含开始和结束的x和y坐标,以及实际迷宫的char [] []。此外,我正在尝试打印出迷宫的解决版本。也就是说,用类似句点的东西替换最短路径位置。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

大约7年前,当我在大学时,我使用java和A-star算法做到了这一点。我记得,在我的研究期间,this文章非常方便。您可以下载代码并查看是否有任何可以从中学习的内容。对不起,我的帮助不多,我还没有真正使用过一段时间

答案 1 :(得分:0)

最广泛使用和最有效的寻路算法之一是A* Pathfinding Algorithm虽然这可能是您的需求过剩,但它经常用于游戏和其他形式的计算机科学,并且可以根据您的需求进行扩展。

答案 2 :(得分:0)

您可以先查看at this implementation,这与您的实际问题定义非常相似。你应该首先定义一个"解释" char [] []迷宫的信息。你应该实现的方法(至少)是:getStartPosition(),getGoalPosition(),getValidMovementsFrom(position)。这些方法允许您在地图中导航,从具体位置获取所有空的邻居切片。然后你可以使用任何合适的算法(BFS,DFS,Dijkstra,A *)来使用第三方库或你自己的实现来解决它。

您可能对此full example of the problem感兴趣使用A {Hipster library for Java