图的遍历



         
深度优先搜索遍历类似于树的先根遍历;广度优先搜索遍历类似于树的按层次遍历的过程。

 

图的广度优先遍历

 

图的广度优先遍历BFS算法是一个分层搜索的过程,和树的层序遍历算法类同,它也需要一个队列以保持遍历过的顶点顺序,以便按出队的顺序再去访问这些顶点的邻接顶点。

1.连通图的广度优先遍历算法思想。

1)顶点v入队列。

2)当队列非空时则继续执行,否则算法结束。

3)出队列取得队头顶点v;访问顶点v并标记顶点v已被访问。

4)查找顶点v的第一个邻接顶点col

5)若v的邻接顶点col未被访问过的,则col入队列。

6)继续查找顶点v的另一个新的邻接顶点col,转到步骤(5)。直到顶点v的所有未被访问过的邻接点处理完。转到步骤(2)。

【例】下面以图( a )为例说明广度优先搜索的过程。首先从起点 v 1 出发访问 v 1 v 1 有两个未曾访问的邻接点 v 2 v 3 。先访问 v 2 ,再访问 v 3 。然后再先访问 v 2 的未曾访问过的邻接点 v 4 v 5 v 3 的未曾访问过的邻接 v 6 v 7 ,最后访问 v 4 的未曾访问过的邻接点 v 8 。至此图中所有顶点均已被访问过。得到的顶点访问序列为:

 


图的遍历
 

 

 

 

图的深度优先遍历

图的深度优先遍历DFS算法是每次在访问完当前顶点后,首先访问当前顶点的一个未被访问过的邻接顶点,然后去访问这个邻接点的一个未被访问过的邻接点,这样的算法是一个递归算法。

 


图的遍历
 

 

你可能感兴趣的:(算法)