5.3.1图的遍历

图的遍历是指从图中的某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。注意到树是一种特殊的图,所以树的遍历实际上也可以看作是一种特殊图的遍历。图的遍历是图的一种最基本的操作,其他许多操作都建立在图的遍历操作基础之上。

5.3.1广度优先搜索(Breadth-First-Search,BFS)

广度优先搜索(BFS)类似于二叉树的层序遍历算法,它的基本思想是:首先访问其实顶点v,接着由v出发,依次访问v的各个未访问过得邻接顶点w1,w2,……,wi,然后再依次访问w1,w2,……,wi的所有未访问过的邻接顶点;再从这些访问过的顶点出发,再访问它们所有未访问过得邻接顶点……依次类推,直到所有顶点都被访问过为止。类似的思想还将应用于Dijstra单源最短路径算法和Prim最小生成树算法。

广度优先搜索是一种分层的查找过程,每向前走一步可能访问一批顶点,不像深度优先搜索那样有往回退的情况,因此它不是一个递归的算法。为了实现逐层的访问,算法必须借助一个辅助队列,以记忆正在访问的顶点的一层顶点。

bool visited[MAX_VERTEX_NUM];//访问标记数组
void BFSTraverse(Grap G){
//对图G进行广度优先遍历,设访问函数为visit()
    for(i=0;i

你可能感兴趣的:(#,数据结构)