我有一个带有起点和终点的开放式迷宫。我写了一个BFS和一个DFS搜索算法来解决迷宫问题。我的BFS找到了最短的解决方案,但是我的DFS(向下,向左,向上,向右)创建了一个Z字形作为解决方案。它是否正确? DFS应该如何在开放的迷宫中表现?
编辑: http://postimg.org/image/n049oua8n/这里是路径,从P开始。端点位于底部,但中路看起来不对我= /我认为算法正在跳过一列,对吧?它应该完全填满中间部分?
答案 0 :(得分:2)
是的,它是正确的,因为DFS深入探索图形(并且没有找到最短路径)。鉴于访问来源s
,DFS会访问其中一个邻居u
,然后访问u
其中一个深度的邻居。当访问给定节点的所有邻居时,访问父节点的另一个邻居,依此类推。
在BFS期间,鉴于访问来源s
首先访问所有邻居,然后开始深化。
答案 1 :(得分:1)
这听起来是正确的:DFS会在迷宫中尽可能地向第一个方向(向下)移动,当它无法再进一步时,它将回溯到最后的十字路口并向左转,然后向下试。
有一种名为"flood fill"的绘画算法,它通过制作像素的DFS或BFS来填充颜色空间。其工作动画为两种图搜索算法之间的差异提供了很好的图形表示。
这是BFS的食物填充,你可以看到它在各个方向搜索空间:
这是DFS的泛滥填充,因为你可以看到它首先在一个方向上搜索空间,然后回溯以填充空洞: