java - 带循环的深度优先搜索

标签 java arrays depth-first-search maze stack

我正在用java制作一个机器人迷宫,其中机器人使用深度优先搜索算法遍历迷宫并到达目标。这在没有循环的迷宫中工作正常,但当引入这些时算法失败。有什么方法可以使深度优先搜索与循环迷宫一起工作?如果是这样,人们该怎么做呢?

我有这个迷宫的两个独立实现 - 一个记录每个连接点并将其存储在一个数组中,而另一个使用堆栈来推送一个新连接点并在完成探索该连接点时将其弹出。使用这些实现中的任何一个的解决方案都是可以接受的。

最佳答案

您需要标记访问过的节点将它们视为“附加”墙

这样,您就可以避免搜索循环。不过,它将不再找到最短路径。

有关详细信息,请参阅 Dijkstra 算法。要获得更高级的定向版本,请查看 A* 搜索。不过,在困难的迷宫中,它不会给你带来太多好处。 A* 对于开放区域更有趣。

关于java - 带循环的深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680167/

相关文章:

arrays - Swift 中的 ArraySlice 内部是如何工作的?

algorithm - 计算节点数 - 有向图中任意两个节点之间的不相交路径,使得距离 <= K

java - n-puzzle DFS 解决方案适用于 2X2,但适用于 3X3 StackOverflowError

java - Java Parrot 程序简介

JavaFX ListView setItems() 无法解析符号

arrays - 如何在 Perl 中将相同大小的数组合并为一个数组?

javascript - 如何收集按深度级别分组的树结构的所有节点?

java - Hibernate @事务 session

java - 匹配数字模式

javascript - 解析字符串以创建子字符串数组