0 引言
深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。
本次以图解的形式来对图的深度遍历及广度遍历来进行阐述。
1 问题
在百度百科上关于图遍历的解释是:深度优先搜索法是树的先根遍历的推广。它的基本思想为,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则退回到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点w,从w出发按同样的方法向前遍历,直到图中所有顶点都被访问。
图的广度优先搜索是树的按层次遍历的推广。它的基本思想是:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点vi1,vi2,…, vi t,并均标记已访问过,然后再按照vi1,vi2,…, vi t的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。
是不是有点抽象难懂?没关系,就让我们以图解的形式逐个介绍。
首先是图的深度优先遍历DFS:
然后是图的广度优先遍历BFS:
2 结语
上述为图的深度优先遍历与广度优先遍历,图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。因此想要深入理解图的操作,首先就需要了解图的两个重要的遍历。