图 - 图的遍历 - 深度优先遍历(一)

 我来答
天罗网17
2022-11-14 · TA获得超过6200个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:73.9万
展开全部

  图的遍历概念

   图的遍历

  和树的遍历类似 图的遍历也是从某个顶点出发 沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问 它是许多图的算

  法的基础

  深度优先遍历和广度优先遍历是最为重要的两种遍历图的方法 它们对无向图和有向图均适用

  注意

  以下假定遍历过程中访问顶点的操作是简单地输出顶点

   布尔向量visited[ n ]的设置

  图中任一顶点都可能和其它顶点相邻接 在访问了某顶点之后 又可能顺着某条回路又回到了该顶点 为了避免重复访问同一个

  顶点 必须记住每个已访问的顶点 为此 可设一布尔向量visited[ n ] 其初值为假 一旦访问了顶点V i 之后 便将

  visited[i]置为真

  深度优先遍历(Depth First Traversal)

   图的深度优先遍历的递归定义

  假设给定图G的初态是所有顶点均未曾访问过 在G中任选一顶点v为初始出发点(源点) 则深度优先遍历可定义如下 首先访问出

  发点v 并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w 若w未曾访问过 则以w为新的出发点继续进行深度优先遍历

   直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止 若此时图中仍有未访问的顶点 则另选一个

  尚未访问的顶点作为新的源点重复上述过程 直至图中所有顶点均已被访问为止

  图的深度优先遍历类似于树的前序遍历 采用的搜索方法的特点是尽可能先对纵深方向进行搜索 这种搜索方法称为深度优先搜

  索(Depth First Search) 相应地 用此方法遍历图就很自然地称之为图的深度优先遍历

   深度优先搜索的过程

  设x是当前被访问顶点 在对x做过访问标记后 选择一条从x出发的未检测过的边(x y) 若发现顶点y已访问过 则重新选择另

  一条从x出发的未检测过的边 否则沿边(x y)到达未曾访问过的y 对y访问并将其标记为已访问过;然后从y开始搜索 直到搜索

  完从y出发的所有路径 即访问完所有从y出发可达的顶点之后 才回溯到顶点x 并且再选择一条从x出发的未检测过的边 上述过程

  直至从x出发的所有边都已检测过为止 此时 若x不是源点 则回溯到在x之前被访问过的顶点;否则图中所有和源点有路径相通的

  顶点(即从源点可达的所有顶点)都已被访问过 若图G是连通图 则遍历过程结束 否则继续选择一个尚未被访问的顶点作为新源点

lishixinzhi/Article/program/sjjg/201311/23840

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式