图的深度优先遍历和广度优先遍历概念

转载 2018年04月17日 11:11:53

1.深度优先遍历(DFS)

(1)从某个顶点V出发,访问顶点并标记为已访问

(2)访问V的邻接点,如果没有访问过,访问该顶点并标记为已访问,然后再访问该顶点的邻接点,递归执行

     如果该顶点已访问过,退回上一个顶点,再检查该顶点的邻接点是否都被访问过,如果有没有访问过的继续向下访问,如果全部都访问过继续退回到上一个顶点,继续同样的步骤。


深度优先遍历类似于树的先序遍历,深度优先遍历算法结果不唯一。


选择V1为出发点,访问V1,然后访问V1的邻接点,邻接点有V2 V3和V4,假设都从左边的邻接点开始访问

访问V1的最左边的邻接点V2,访问V2的邻接点V5

访问V5的邻接点V3,V3的左边邻接点是V1,V1已经访问过,所以访问V4

V4的左边邻接点V6,访问V6,V6的所有邻接点都已访问过,退回V4,V4的所有邻接点也都访问过退回V3,V3的邻接点全部访问过退回V5,

V5的邻接点全部访问过退回V2,V2的邻接点全部访问过退回到出发点V1,V1的全部邻接点访问过,遍历结束。

遍历序列为V1→V2→V5→V3→V4→V6



2.广度优先遍历(BFS)

(1)从某个顶点V出发,访问该顶点的所有邻接点V1,V2..VN

(2)从邻接点V1,V2...VN出发,再访问他们各自的所有邻接点

(3)重复上述步骤,直到所有的顶点都被访问过


(1)从顶点V1出发,v1入队,访问V1,V1的邻接点有V2     V3     V4,将它们入队,v1出队

队列:V2   V3  V4

(2)访问队头V2,V2的邻接点为V1(已访问过,忽略)和V5,将V5入队,V2出队

队列:V3  V4  V5

(3)访问V3,V3的邻接点为V1(访问过忽略)   V4(已在队列忽略)  V6   V5(已在队列,忽略),V6入队,V3出队

队列:V4 V5  V6

......

Python-继承的概念

-
  • 1970年01月01日 08:00

图的基本概念表示方法以及两种搜索方式——深度优先遍历和广度优先遍历

原先的知识没好好学,导致现在很多都忘了,或者说以前就没弄懂过。现在重新看一遍,收获良多,不管怎样先写这篇基础的,当做笔记。 图的定义:是由顶点的有穷非空集合和顶点之间的边的集合组成的,通常表示为 G(...
  • qq_34528297
  • qq_34528297
  • 2017-06-10 22:19:31
  • 907

数据结构之图的深度优先遍历和广度优先遍历

1.图的简单介绍 上图就是一个图(无线图),由顶点和连线组成 图可以分为无向图和有向图(这个又有出度、入度的概念)、网,一般来说图有两种常用的表示方式,邻接矩阵(用二维数组的形式表示)和邻接表(主要...
  • sinat_30186009
  • sinat_30186009
  • 2016-07-23 10:21:53
  • 1989

图的深度优先遍历和广度优先遍历代码实现

#include #include #include #include #include using namespace std; typedef char TypeData; /* 数...
  • u010889616
  • u010889616
  • 2015-11-04 17:07:32
  • 3910

数据结构:图的遍历--深度优先、广度优先

图的遍历是指从图中的某一顶点出发,按照一定的策略访问图中的每一个顶点。当然,每个顶点有且只能被访问一次。 在图的遍历中,深度优先和广度优先是最常使用的两种遍历方式。这两种遍历方式对无向图和有向图都是适...
  • zhangxiangDavaid
  • zhangxiangDavaid
  • 2014-08-02 11:20:15
  • 37595

【数据结构】图的遍历方法 深度优先遍历和广度优先遍历

图的遍历方法 深度优先遍历和广度优先遍历 接着上次的文章“图的构建(邻接链表法)”,邻接链表法构建图相对来说比较简单,并且遍历起来也相对简单,但是要是动态添加图的节点和图的边,则是实在不方便,不过现在...
  • sundong_d
  • sundong_d
  • 2015-04-11 09:45:48
  • 15318

用java语言实现图的广度优先遍历和深度优先遍历

import java.util.*; /** * 这个例子是图的遍历的两种方式 * 通过它,使我来理解图的遍历 * Created on 2013-11-18 * @ve...
  • sinat_26935081
  • sinat_26935081
  • 2015-10-27 15:30:43
  • 389

c语言实现图的深度优先遍历和广度优先遍历

c语言实现图的深度优先遍历和广度优先遍历
  • Kangyucheng
  • Kangyucheng
  • 2016-06-11 20:55:42
  • 6233

无向图的深度优先遍历和广度优先遍历(递归)

无向图的深度优先遍历和广度优先遍历(递归)     queue.h源代码 注释:包括队列数据类型的定义和相关操作    (出队,入队,判断队空,判断队列中是否存在某元素)     ...
  • Heated_Youth
  • Heated_Youth
  • 2016-05-23 20:43:01
  • 3340

数据结构——深度优先遍历和广度优先遍历

图的遍历  图的遍历(Traversing Graph):从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。   图的遍历有两种方法:深度优先搜索和广度优先搜索。深度优先遍历   ...
  • qq_35080659
  • qq_35080659
  • 2017-02-16 19:24:21
  • 171
收藏助手
不良信息举报
您举报文章:图的深度优先遍历和广度优先遍历概念
举报原因:
原因补充:

(最多只允许输入30个字)