分享

Python | 手绘图说DFS与BFS

 算法与编程之美 2021-06-25

引言

深度优先遍历简称DFSDepth First Search),广度优先遍历简称BFSBreadth First Search),它们是遍历图当中所有顶点的两种方式。

本次以图解的形式来对图的深度遍历及广度遍历来进行阐述。

问题描述

在百度百科上关于图遍历的解释是:深度优先搜索法是树的先根遍历的推广。它的基本思想为,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则退回到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点w,从w出发按同样的方法向前遍历,直到图中所有顶点都被访问。 

图的广度优先搜索是树的按层次遍历的推广。它的基本思想是:首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点vi1,vi2,, vi t,并均标记已访问过,然后再按照vi1,vi2,, vi t的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。

是不是有点抽象难懂?没关系,就让我们以图解的形式逐个介绍。

首先是图的深度优先遍历DFS

然后是图的广度优先遍历BFS

结语

上述为图的深度优先遍历与广度优先遍历,图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。因此想要深入理解图的操作,首先就需要了解图的两个重要的遍历。

作者:文裕龙

实习编辑:李欣容

稿件来源:深度学习与文旅应用实验室(DLETA)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多