BFS解题框架
Table of Contents
一、BFS 概念
摘自:BFS (图论)
BFS 全称是 Breadth First Search,中文名是宽度优先搜索,也叫广度优先搜索,是图上最基础、最重要的搜索算法之一。
所谓宽度优先。就是每次都尝试访问同一层的节点。 如果同一层都访问完了,再访问下一层。
这样做的结果是,BFS 算法找到的路径是从起点开始的 最短 合法路径。换言之,这条路径所包含的边数最小。
在 BFS 结束时,每个节点都是通过从起点到该点的最短路径访问的。
算法过程可以看做是图上火苗传播的过程:最开始只有起点着火了,在每一时刻,有火的节点都向它相邻的所有节点传播火苗。
对于一般的BFS 问题,BFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。
二、BFS 算法框架
要说框架的话,我们先举例一下 BFS 出现的常见场景好吧,问题的本质就是让你在一幅「图」中找到从起点 start
到终点 target
的最近距离。
框架如下:
|
|
三、例题
752. 打开转盘锁
|
|
双向BFS
|
|
1091. 二进制矩阵中的最短路径
|
|
上面的写法很low
|
|
Read other posts