dfs拓扑排序原理详解--------还不明白请来砍我

算法道路第三版pdf:https://blog.youkuaiyun.com/qq_34384524/article/details/82834519

我们不创造算法,我们只是算法的搬运工
依赖:穿鞋子之前需要穿袜子,则箭头是由鞋子指向袜子,称袜子依赖于鞋子
个人笔记之核心点:
@1:dfs在实现时不仅访问了顶点,最关键的是我们还给每个顶点加上了时间戳(一个开始时间和一个结束时间)。
@2:dfs拓扑排序时,如果顶点B的完成依赖于A的完成,那么A的结束时间必定晚于B,那么只要找到一个结束时间最晚的点S,那么就没有任何其他的点依赖于点S的完成,那么点S就可以顺利完成。

先讲带时间戳的DFS再讲基于DFS的拓扑排序

以下内容主要搬运自算法导论,重要的地方我会在图片开头做出注释,用粗体字标记。
注释:
u.π:u的前驱
u.d:开始时间
u.f:完成时间
time为全局变量
在这里插入图片描述
在这里插入图片描述

关键点:
DFS_VISIT:
第2行和第10行:u.d必定小于u.f
第4~7行:由递归的特性可以知道,在第10行即设置u的完成时间u.f之前,其全部子节点的开始时间和结束时间已经全部知道了了
第9~10行:从这里我们可以得到前文@2:u的子结点依赖于u,那么u的结束时间u.f必定晚于其任一子节点的完成时间

(下面是一次简单的演示)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值