我正在java中制作一个机器人迷宫,其中机器人使用深度优先搜索算法来遍历迷宫并到达目标。这在没有循环的迷宫中工作正常,但是当引入这些时,算法失败。有没有办法使用loopy迷宫进行深度优先搜索?如果是这样,那怎么办呢?
我有两个单独的迷宫实现 - 一个记录每个连接并将其存储在一个数组中,而另一个使用一个堆栈来推动一个新的连接并在它完成探索该连接时将其弹出。使用这些实现中的任何一个的解决方案是可接受的
答案 0 :(得分:4)
您需要标记受访节点并将其视为“额外”墙。
这样,你可以避免搜索循环。它将不再找到最短的路径。
有关详细信息,请参阅Dijkstra的算法。对于更高级的定向版本,请查看A *搜索。在困难的迷宫中,它不应该让你获得很多。开放区域的A *更有趣。