图的深度优先遍历

申明

       本文的目地是对算法导论中深度优先的内容做一笔记,整体更像该章节的剪辑以及总结。

简介

  与图的广度优先遍历比较:

   广度优先遍历更多的是能够反应图中点的距离,而深度优先遍历则主要是反映图的形状。

代码以及图示

181726_YiCv_572632.jpg

181735_zR97_572632.jpg

性质

括号定理

在一个(有向或无向)图G=(V,E)的任何深度优先搜索中,任意两顶点u, v 满足下列性质

  1. 区间[d[u], f[u]]和区间[d[v], f[v]]完全不相交,且都不是对方的后裔

  2. 区间[d[u], f[u]] 完全包含于区间d[[v], f[v]]中,且 u是 v的后裔

  3. 区间[d[v], f[v]] 完全包含于区间d[[u], f[u]]中,且 v是 u的后裔


后裔区间嵌套

在一个(有向或无向)图G=(V,E)的任何深度优先搜索中,任意两顶点u, v ,若v是u的后裔则

d[u] < d[v] < f[v] < f[u]


白色路径定理

在一个(有向或无向)图G=(V,E)的任何深度优先搜索中,任意两顶点u, v ,若v是u的后裔则当且仅当于时刻的d[u]发现u时,可以从顶点u出发经过一条白色路径到达v

边的分类

定义

  1. 树边:在深度优先森林Gπ总共的边,如果顶点v是探寻边(u,v)时首次被发现的,那么(u,v)就是一条树边

  2. 反向边:深度优先树中,连接顶点u到它的某一祖先的那些边。有向图出现的自环也是反向边

  3. 正向边:在深度优先搜索中,连接u和某个后裔的非树边(u,v)

  4. 交叉边:同一棵深度优先搜索树的两个顶点之间,条件是其中一个顶点不是另一个顶点的祖先。也可以在不同度优先搜索树之间的顶点之间

性质

  1. 树边或前向边,当且仅当d[u]<d[v]<f[v]<f[u]

  2. 反向边,当且仅当d[v]<=d[u]<f[u]<=f[v]

  3. 交叉边,当且仅当d[v]<f[v]<d[u]<f[u]

结合伪代码颜色变化分析

对于每条边 (u,v),当该边第一次被搜索到时,根据点v的颜色进行区分

  1. 白色:  树边

  2. 灰色:  反向边

  3. 黑色:  正向边或交叉边


转载于:https://my.oschina.net/u/572632/blog/276823

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值