BFS--广度优先搜索详解
什么是广度优先搜索?
关于广度优先搜索,我们首先要了解一种数据结构,那就是队列。
队列
队列,一种数据结构,与栈不同,栈是一种先进后出的单向结构,而队列则是一种先进先出的双向结构。
**在BFS算法之中,队列的利用一般是用于遍历多叉树,或其他图表等
具体如下:
1、从顶点v出发遍历图G的算法买描述如下:
①访问v
②假设最近一层的访问顶点依次为v1,v2,v3…vn,则依次访问v1,v2,v3…vn等未被访问的邻接点
③重复②直到没有未被访问的邻接点为止
2、一点心得:bfs算法其实就是一种层次遍历算法。该算法由于不是递归算法,所以程序流程是清晰的。 **
示例图:
广度优先搜索的C++代码实现
在这里插一句,广度优先搜索有一个炒鸡棒的优点,就是在寻找最短路径时特别好用,即下图:
但有一点要说的是,这种方法仅在边上无权值或权值相等时有效
代码部分:
#include <iostream>
using namespace std;
int q[101