广度优先搜索(BFS)算法类似于树中的层次搜索:
从任意点s出发,先遍历与s相邻的点,然后再遍历于相邻的点相邻的点。注意有向图必须是顺方向的邻接点。
为什么说广度优先搜索可以用来求无权最短路径呢?因为,广度优先搜索每次都会先发现距离s为k的所有顶点,然后才会 发现距离s为k+1的所有顶点。 s为起始点。
void BFS(Graph& g, Vertex& s)
{
queue<vertex> q;
for each vertex v in g
{
v.distance = INFINITY;
}
s.distance = 0;
q.enqueue(s);
while (!q.Empty())
{
v = dequeue(q);
for each w adjenct to v
if (v.distance == INFINITY)
{
w.distance = v. distance + 1;
w.path = v;
q.enqueue(w);
}
} &