深度优先算法&广度优先算法

深度优先算法
为了解释什么是深度优先算法和广度优先算法,我们举一个例子。

大家都打过RPG游戏吧,在游戏里面我们会找NPC来接任务。有的同学喜欢一次只领取一个任务,把这个任务做完,再去领下一个任务,这就叫做深度优先算法。另外一些同学他们喜欢先把所有的任务一次性接玩,然后再去慢慢完成,最后再一次性的把任务奖励都领取了。这就叫做广度优先算法。

深度优先算法

假设上图是IT培训的网站,我们需要爬取上面的课程信息。从首页开始,课程有几个大的分类,比如根据语言分为Python,Node.js和Go语言。在每个大分类下面又有很多的课程,比如Python下面有爬虫,Django和机器学习。在每个课程又分为很多的课时。

在深度优先算法的情况下,我们的爬取路线如下图所示:

深度优先算法

首先要走完红色线,把爬虫的所有课时都爬取完成,再走绿色线爬取Django的所有课时,最后再走黄色线爬取机器学习的的所有课时。然后再去爬取Node.js的所有信息……

广度优先算法
在广度优先的算法情况下,我们的爬取路线如下图所示:

广度优先算法

首先走红色,绿色,肉色线爬取每个大分类的信息。然后再走橙色,蓝色,灰色线从第一个大分类中,爬取所有的课程信息,爬完了第一个大分类,再爬第二个大分类。直到所有大分类下面的课程信息都搞定了,再爬第一个课程的所有课时信息……

Leave a Comment