返回顶部
首页 > 资讯 > 后端开发 > Python >Python|一文简单看懂 深度&广度
  • 955
分享到

Python|一文简单看懂 深度&广度

广度一文看懂 2023-01-30 23:01:09 955人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

以后尽量每天更新一篇,也是自己的一个学习打卡!加油!今天给大家分享的是,python里深度/广度优先算法介绍及实现。   1. 深度优先搜索(DepthFirstSearch) 深度优先搜索的主要特征就是,假设一个顶点有不少相邻

以后尽量每天更新一篇,也是自己的一个学习打卡!加油!今天给大家分享的是,python里深度/广度优先算法介绍及实现。


 

1. 深度优先搜索(DepthFirstSearch)

深度优先搜索的主要特征就是,假设一个顶点有不少相邻顶点,当我们搜索到该顶点,我们对于它的相邻顶点并不是现在就对所有都进行搜索,而是对一个顶点继续往后搜索,直到某个顶点,他周围的相邻顶点都已经被访问过了,这时他就可以返回,对它来的那个顶点的其余顶点进行搜索。

深度优先搜索的实现可以利用递归很简单地实现。

2. 广度优先搜索(BreadthFirstSearch)

广度优先搜索相对于深度优先搜索侧重点不一样,深度优先好比是一个人走迷宫,一次只能选定一条路走下去,而广度优先搜索好比是一次能够有任意多个人,一次就走到和一个顶点相连的所有未访问过的顶点,然后再从这些顶点出发,继续这个过程。

具体实现的时候我们使用先进先出队列来实现这个过程:

1. 首先将起点加入队列,然后将其出队,把和起点相连的顶点加入队列

2. 将队首元素v出队并标记他

3. 将和v相连的未标记的元素加入队列,然后继续执行步骤2直到队列为空

广度优先搜索的一个重要作用就是它能够找出最短路径,这个很好理解,因为广度优先搜索相当于每次从一个起点开始向所有可能的方向走一步,那么第一次到达目的地的这个路径一定是最短的,而到达了之后由于这个点已经被访问过而不会再被访问,这个路径就不会被更改了。

1. 遍历二叉树图形

Python|一文简单看懂 深度&广度 优先算法

遍历二叉树图形

2. 深度优先、广度优先遍历模型

Python|一文简单看懂 深度&广度 优先算法

 

3. 数据结构设计、遍历代码

方法一:列表法

Python|一文简单看懂 深度&广度 优先算法

 

方法二:构造类节点法

Python|一文简单看懂 深度&广度 优先算法

 

可能大家会好奇,深度优先算法、广度优先算法对爬虫有什么用,不用好奇,慢慢后面就会懂得了。

提前透露:几乎所有网站都有首页、XXX、XXX、XXX…在每个分页下,又有很多分页,这样所有url之间的联系实际上就可以比喻成一棵树,当我们想要系统爬取时,为了不重复爬取,对这颗树的遍历就尤为重要了。

这里说到的深度优先、广度优先为最常用的遍历算法。

--结束END--

本文标题: Python|一文简单看懂 深度&广度

本文链接: https://lsjlt.com/news/180718.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作