美文网首页
深度和广度优先究竟是什么?

深度和广度优先究竟是什么?

作者: 进击的猫 | 来源:发表于2016-12-29 21:31 被阅读0次

我们收可以看下面这幅图,用深度和广度两种方法来遍历这个图形的点。

题目.png

使用深度优先搜索来遍历这个图的过程具体是:首先从一个未走到过得顶点作为起始顶点,比如以1号作为起点,沿1号顶点的边去尝试访问其它未走到过得顶点,首先发现2号顶点还没有走到过,于是来到2号顶点。再以2号顶点作为出发点继续尝试访问其它未走到过得顶点,这样又来到了4号顶点。再以4号顶点作为出发点继续尝试访问其它未走到过得顶点。但是,此时沿4号顶点的边,已经不能访问到其它未走到过得顶点了,所以需要返回2号顶点。返回到2号顶点后,发现沿2号顶点的边也不能在访问到其它未走到过得顶点。因此还需要继续返回到1号顶点。在继续沿1号顶点的边看看还能否访问到其它未走到过的顶点。此时又会来到3号顶点,再以3号顶点作为出发点继续访问其它未走到过的顶点,于是又来到5号顶点。到此,所有顶点都已经走到过了,遍历结束。如下图显示路径:

深度广义搜索.png

现在来总结一下深度优先搜索的主要思想就是:首先以一个未被访问过得顶点作为起始顶点,沿当前顶点的边走到未访问过得顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有顶点都被访问过。显然,深度优先遍历是沿着图的某一条分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止。

接下来就来说说广度优先搜索怎么来遍历这个图,首先以一个未被访问过得顶点作为起始顶点,比如以1号顶点作为起点。将1号顶点放入到队列中,然后将与1号顶点相邻的未被访问过的顶点即2号、3号和5号顶点依次再放入队列中。接下来再将2号顶点相邻的未访问过的顶点4号顶点4号放入到队列中。到此所有顶点都被访问过,遍历结束。

广度优先搜索.png

广度优先遍历的主要思想就是:首先以一个未被访问过的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问过的顶点,直到所有顶点都被访问过,遍历结束。

以上就深度优先和广度优先的主要思想。

相关文章

  • Python爬虫:关于 广度优先 和 深度优先

    广度优先和深度优先 关于广度优先和深度优先,首先,不管是广度还是深度,都需要定义一个爬取的深度 crawl_dee...

  • 爬虫(3-5)

    深度优先和广度优先1 网站的树结构2 深度优先算法和实现3 广度优先算法和实现 深度优先输出A,B,D,E,I,C...

  • 深度优先和广度优先查找以及拓扑排序

    深度和广度优先查找 归属:蛮力法 简称:DFS(深度优先查找)、BFS(广度优先查找) 思想:DFS: 深度优先查...

  • 5. 深度优先、广度优先

    1. 二叉树的深度优先遍历和广度优先遍历2. 深度优先搜索递归和非递归实现 深度优先(DFS):前序遍历 广度优先...

  • python分布式爬虫搜索引擎实战-2-深度优先和广度优先

    深度优先和广度优先 目录: 网站的树结构 深度优先算法和实现 广度优先算法和实现 网站url树结构:分层设计 子域...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

  • 前端常见面试题目(六)

    一、介绍下深度优先遍历和广度优先遍历,如何实现 通过用深度优先遍历和广度优先遍历对这个dom树进行查找来理解1、 ...

  • 深度和广度优先究竟是什么?

    我们收可以看下面这幅图,用深度和广度两种方法来遍历这个图形的点。 使用深度优先搜索来遍历这个图的过程具体是:首先从...

  • js-树的遍历

    数据 广度优先遍历 深度优先遍历 深度优先不递归

  • 递归、迭代、回溯、广度和深度优先

    在学习算法的时候,经常碰到递归、迭代、回溯、广度优先和深度优先算法,可是回溯使用了递归,深度优先也使用了递归,广度...

网友评论

      本文标题:深度和广度优先究竟是什么?

      本文链接:https://www.haomeiwen.com/subject/qqmpvttx.html