我知道我们可以使用DFS进行迷宫探索。但我认为我们也可以使用BFS进行迷宫探索。我有些困惑,因为我阅读过的大部分书籍和文章都使用DFS解决这个问题。
我的想法是,DFS的最佳情况时间复杂度会比BFS更好。但平均情况和最坏情况下,BFS和DFS的时间复杂度将是相同的,这就是为什么我们喜欢DFS而不是BFS的原因。
我的理解是正确的吗?
我很惊讶到目前为止没有人提到DFS
和BFS
给出结果的差异。
这两个算法的主要区别在于BFS返回最短路径,而DFS只返回一条路径。
因此,如果你想获得最短路径,请使用BFS
,否则考虑其他优缺点(内存等)。
然而,如果你想要找到普通网格中某个给定单元格的最短路径,请使用BFS(或A*),因为它保证可以找到最短路径,而DFS则不行(在只有一条路径通向任何给定单元格的迷宫中仍可使用其中任意一种算法)。
两者应该是等效的。DFS被使用更多,因为它实现起来稍微容易一些。
stack
,而 BFS 使用 queue
。 - artur grzesiakBFS占用太多内存,对于巨大的迷宫不是很好。