与树类似,遍历也是图的一种重要的操作,图的遍历是访问图中每个顶点仅被访问一次的操作。图的遍历方式主要有两种:深度优先遍历和广度优先遍历。本节的主要学习内容包括图的深度优先遍历、图的广度优先遍历。

 

1. 图的深度优先遍历

 

深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则已w为心的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点为新的源点重复上述过程,直至图中所有的顶点均已被访问为止。

深度优先遍历采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-first Search)。相应的,用次方法遍历图就很自然地称之为图的深度优先遍历。

 

2. 图的广度优先遍历

广度优先遍历可定义如下:首先访问出发点v,接着依次访问v的所有邻接点w1、w2......wt,然后依次访问w1、w2......wt邻接的所有未曾访问过的顶点。以此类推,直至图中所有和源点v有路径相通的顶点都已访问到为止。此时从v开始的搜索过程结束。

广度优先采用的搜索方法的特点是尽可能先对横向进行搜索,故称其为广度优先搜索(Breadth-first Search)。相应的遍历也自然称为广度优先遍历。