Python | 手绘图说DFS与BFS

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python | 手绘图说DFS与BFS相关的知识,希望对你有一定的参考价值。

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

引言

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

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

问题描述

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

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

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

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

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

结语

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

作者:文裕龙

实习编辑:李欣容

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

以上是关于Python | 手绘图说DFS与BFS的主要内容,如果未能解决你的问题,请参考以下文章

真香,Python “手绘风格”数据可视化方法汇总

python手绘

Python——图像手绘效果

Python+scrapy爬虫:手绘验证码识别

python:成绩雷达图和手绘图片

python:成绩雷达图和手绘图片