是一种盲目搜索方法,特点是盲目地展开并检查图中的所有节点。目的是找出两个节点之间的最短距离。
求最短距离
(1)选中第一个被访问的顶点;
(2)对顶点作已访问过的标志;
(3)依次访问已访问顶点的第1,2,……个未被访问过的邻接顶点,并进行标记;转向(3);
(4)如果还有顶点未被访问,则选中一个起始顶点,转向(2);
(5)所有顶点都被访问到,则结束。
广度优先搜索一般是用队列实现的。同前面一样,也需要方法来表示某个顶点有没有被访问过。广度优先搜索的伪代码如下:·
void BFS(图)
{
for(所有顶点)
{
若该顶点未被访问
{
bfs(该顶点);
}
}
}
bfs(某个顶点)指的是从某个顶点开始进行广度优先搜索遍历。
bfs(某个顶点)
{
初始化一个队列queue并将这个顶点放入队列;
while(queue不为空)
{
访问队头顶点s;//可以cout打印,也可以储存在一个vector中
标记s为已遍历;
出队pop_front();
遍历p的所有邻接顶点
{
若该顶点没被访问过,入队;
}
}
}
原文:https://www.cnblogs.com/wichellc/p/14946452.html