什么是BFS
广度优先搜索,又称宽度优先搜索,简称bfs
,我们以后都会用bfs来表示广度优先搜索。与深度优先搜索不同的是,广度优先搜索会先将与起始点距离较近的点搜索完毕,再继续搜索较远的点,而深搜却是沿着一个分支搜到最后。
bfs
从起点开始,优先搜索离起点最近的点,然后由这个最近的点扩展其他稍近的点,这样- -层一 层的扩 展,就像水波扩散一
样。
如图所示:
上图用DFS得到的序列为:A B E F C D G
上图用BFS得到的序列为:A B C D E F G
可见,再BFS中,搜索主要是按照分层的,分别从第一层,第二层,第三层往下搜索。
BFS如何实现
bfs借助队列来实现:
- 初始时把起点放在队列中,并标记起点访问
- 如果队列不为空,从队列中取出一个元素x,否则算法结束
- 访问和x相连的所有点v,如果v没有被访问过,把v入队,并标记已经访问
- 重复步骤2