前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫进阶-2-广度优先算法和深度优先算法

爬虫进阶-2-广度优先算法和深度优先算法

作者头像
皮大大
发布2021-03-30 09:44:50
1.2K0
发布2021-03-30 09:44:50
举报

爬虫进阶-2-广度优先搜索和深度优先搜索

本文中介绍的是爬虫的两种常见算法,当然它们不仅仅是运用在爬虫中:

  • 广度优先搜索
  • 深度优先搜索

它们是图的基本搜索算法,主要区别在于搜索顺序不同,解决的是图的最短路径问题。

下面的圆圈称之为结点或者顶点,连接顶点的线叫做边。

顶点和连接顶点的边构成的图形就是图

图的各种应用:

  • 各种社交网络关系
  • 交通网络图,比如地铁运营图
  • 计算机网络图

加权图

如果我们给不同的边加上一个值,这个值称为边的“权重”或者“权”,这样的图就称为“加权图”。

有向图

当我们给各个顶点之间加上箭头,表示方向,这样的图就称为“有向图”。

有向图也可以有权重;

广度优先搜索

1、从顶点开始

2、选择最早成为候补的那个顶点,如果有多个,随机选择一个

整个搜索的顺序:A、B、C、D、E、F、H、I、J、K、G、L

深度优先搜索

深度优先搜索会沿着一条路径搜索到不能再继续为止,然后再折返,开始搜索下一条候补路径。

整个的搜索顺序为:A、B、E、K、F、C、H、G、D、I、J、L

二者区别

区别

广度优先搜索选择的是最早成为候补的顶点,因为顶点离起点越近就越早成为候补,所以会从离起点近的地方开始按顺序搜索;

而深度优先搜索选择的则是最新成为候补的顶点,所以会一路往下,沿着新发现的路径不断深入搜索。

举例

比如某个在线网站的课程有如下的介绍,用户可以学习不同的语言:Python、Node.js、Golang。一般都是两种学习方式

(1)、先把一门语言学完

比如学习Python,Python到爬虫到课时1、课时2、课时N,再学习Django,再学习机器学习;学完Python,再学Node.js,从基础知识到Express;再学习Golang的基础知识,再学习并行计算。

这种方式就是深度优先搜索

(2)、同时学习多门语言

如果用户是按照Python---Node.js---Golang---爬虫---Django---机器学习---基础知识---Express---基础知识---并行计算---课时1(爬虫)---课时2(爬虫)的学习路线:

这种方式就称为广度优先搜索。比如我们爬取某个贴吧中的内容,爬取某个帖子的最近的内容,爬取它的每个楼层

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-3-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 爬虫进阶-2-广度优先搜索和深度优先搜索
    • 加权图
      • 有向图
      • 广度优先搜索
      • 深度优先搜索
      • 二者区别
        • 区别
          • 举例
          相关产品与服务
          GPU 云服务器
          GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档