开放式迷宫 - 深度优先搜索

时间:2013-09-26 18:52:22

标签: c depth-first-search maze

我有一个带有起点和终点的开放式迷宫。我写了一个BFS和一个DFS搜索算法来解决迷宫问题。我的BFS找到了最短的解决方案,但是我的DFS(向下,向左,向上,向右)创建了一个Z字形作为解决方案。它是否正确? DFS应该如何在开放的迷宫中表现?

编辑: http://postimg.org/image/n049oua8n/这里是路径,从P开始。端点位于底部,但中路看起来不对我= /我认为算法正在跳过一列,对吧?它应该完全填满中间部分?

2 个答案:

答案 0 :(得分:2)

是的,它是正确的,因为DFS深入探索图形(并且没有找到最短路径)。鉴于访问来源s,DFS会访问其中一个邻居u,然后访问u其中一个深度的邻居。当访问给定节点的所有邻居时,访问父节点的另一个邻居,依此类推。

DFS

在BFS期间,鉴于访问来源s首先访问所有邻居,然后开始深化。

BFS

答案 1 :(得分:1)

这听起来是正确的:DFS会在迷宫中尽可能地向第一个方向(向下)移动,当它无法再进一步时,它将回溯到最后的十字路口并向左转,然后向下试。

有一种名为"flood fill"的绘画算法,它通过制作像素的DFS或BFS来填充颜色空间。其工作动画为两种图搜索算法之间的差异提供了很好的图形表示。

这是BFS的食物填充,你可以看到它在各个方向搜索空间:

Flood fill with BFS

这是DFS的泛滥填充,因为你可以看到它首先在一个方向上搜索空间,然后回溯以填充空洞:

enter image description here