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

如何从Java中的迷宫矩阵开始制作最短路径迷宫解算器?,java,dijkstra,Java,Dijkstra,所以我想创建一个最短路径迷宫解算器来解迷宫。迷宫与此类似: 我的迷宫周围总是有一堵墙。此外,如果你不知道,@s是墙 @@@@@@@@ @ S@ @ @@@ @@E@ @ @ @ @@@ @@ @@@@@@@@ 其中S是起点,E是终点 我想应用Dijkstra的算法,但我不知道如何实际实现它。就像: 检查当前位置(从开头开始)。如果是E,则返回“path”大约7年前,当我在uni时,我使用java和A-star算法实现了这一点。我记得,这篇文章在我的研究中很有用。你可以下载代码,看

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

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

@@@@@@@@
@   S@ @
@@@ @@E@
@   @  @
@@@   @@
@@@@@@@@
其中S是起点,E是终点

我想应用Dijkstra的算法,但我不知道如何实际实现它。就像:


  • 检查当前位置(从开头开始)。如果是E,则返回“path”大约7年前,当我在uni时,我使用java和A-star算法实现了这一点。我记得,这篇文章在我的研究中很有用。你可以下载代码,看看你能从中学到什么。很抱歉,我帮不了你什么忙,我已经有一段时间没有真正使用java了。

    使用最广泛、最有效的寻路算法之一是,虽然这可能超出了你的需要,但它是一种常用于游戏和其他形式的计算机科学,并且可以根据你的需要进行扩展。

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


    您可能会对此感兴趣,可以使用*和。

    一些提示:“路径”可能是您到目前为止所做的所有动作(N、S、E或W)的列表。而且。。。想想递归。那么问题是什么呢?你已经知道该怎么做了(1.2.3。)顺便说一句,根本不需要递归,特别是如果你已经知道使用队列的话。好吧,我想我知道了。我做了一些简单的事情,我也发现这个网站很有用。这是我应该问的,“关于如何解决这个问题,我可以了解更多哪些好的资源?”非常感谢大家!我刚刚完成测试,我只想再次感谢Jeffrey。您链接到的网站非常有用!