BFS和DFS算法原理(通俗易懂)

DFS 算法

思想:一直往深处走,直到找到解或者走不下去为止

1
2
3
4
5
6
7
8
DFS(dep,...) //dep代表目前DFS的深度
{
if (找到解||走不下去了){
...
return;
}
枚举下一种情况,DFS(dep+1..)
}

BFS 算法
通常用队列(先进先出FIFO)实现

1
2
3
4
5
6
7
8
9
初始化队列Q.
Q={起点s};标记s为己访问;
while (Q非空) {
取Q队首元素u; u出队;
if (u==目标状态)
{...}
所有与u相邻且未被访问的点进入队列;
标记u为已访问;
}

DFS :使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,并以相反的次序出栈进行新的检测。

  • 似于树的先根遍历
  • 深搜例子:走迷宫,你没有办法用分身术来站在每
    个走过的位置。不撞南山不回头。

BFS :使用队列保存未被检测的结点。结点按照宽度优先的次序被访问和进出队列。

  • 类似于树的按层次遍历的过程
  • 广搜例子:你的眼镜掉在地上以后,你趴在地板上找。
    你总是先摸最接近你的地方,如果没有,再摸远一-
    点的地方….
北月 wechat
欢迎您扫一扫上面的微信公众号( 或者搜索:WK_wwxk )订阅吾空的微信公众号
┭┮﹏┭┮学业繁忙,暂未运营,没时间,先挂着瞅瞅,嘿嘿
可以对我进行打赏了哦!!!
如果觉得本文对您有启发,可以随意打赏一点鼓励我继续更新!
显示 Gitment 评论
0%