【知识强化】第五章 图 5.3 图的遍历

上一节课我们介绍了有关图的基本操作,那么除了上节课我们介绍的那些相关基本操作之外,还有一种非常重要的操作就是有关图的遍历。那么图的遍历分为两种,有广度优先搜索,也就是广度优先遍历。还有深度优先搜索。本节课我们就来学习图的广度优先搜索。

那么首先我们先来了解介绍一下,图的遍历是什么呢?什么是图的遍历。其实它图的遍历与树的遍历以及线性表的遍历是类似的。它是从图中某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次,并且只访问一次。这就是图的遍历。那么提到图的遍历,提到广度优先搜索,其实它与我们之前学习过树的层次遍历的顺序是类似的。

那么首先我们先来复习一下,树的层次遍历。那么这样编号的顺序是不是就是树的层次遍历的顺序啊。

我们按照编号的顺序依次地访问树中的每一个结点,并且每个结点只访问1次。这就是树的层次遍历的过程。那么其实,如果我们把该树看作成一个图的话,树的层次遍历的过程就是图的广度优先搜索的这样一个顺序。

那么接下来我们就来介绍一下图的广度优先搜索。首先我们要访问起始的一个顶点,顶点V。接着我们由该顶点出发,依次访问V的各个未被访问过的的邻接顶点w1,w2,...wi。w1-wi都是V的各个未被访问过的邻接顶点。好,接着应该如何访问呢?我们要访问它们的所有未被访问过的邻接顶点。那么接着我们只要重复该过程,从这些访问过的顶点出发,再访问它们未被访问过的一些顶点,然后依此类推就可以访问该图中的所有顶点了。这就是广度优先搜索的过程。我们发现在广度优先搜索当中,其实我们是优先先访问靠近起始顶点的那些顶点的,这一点与树的层次遍历是一致的。那么广度优先搜索和树的层次遍历是完全一样的吗?我们可以直接把树的层次遍历算法直接搬到广度优先搜索上吗?答案是不是的。

我们发现在广度优先搜索的描述过程当中,我们强调了一定是未被访问过的各个邻接顶点。好,为什么要强调的是未被访问的邻接顶点呢?我们来看这样一个例子。这是我们刚刚举的那一个图的例子。我们对它进行广度优先搜索。这与它对应树的层次遍历的顺序是一致的。

那么此时我们在顶点4、

猜你喜欢

转载自www.cnblogs.com/ZHONGZHENHUA/p/11407786.html
今日推荐