图论-拓扑排序(学习数据结构与算法分析 C++第三版—clifford A.Shaffer著)有感

”将一个DAG(有向无环图)中所有顶点在不违反前置依赖条件规定的基础上排成线性序列的过程称为拓扑排序。”

在书上给了两个算法,一个是基于DFS,一个是基于队列统计入度来做。

其实我觉得这两个算法的根源,其实就在于一个顶点(当然啦,在实际应用中可能是任务、工程等等等等。。。。。。)它的前置条件条件有多少?

DFS的末端,其实就是一些前置条件尽可能多,注意,是尽可能多的点,因为你不断的深入,也就是说你DFS的末端是要经历了很多任务的完成才可以到达的,按照我们的原则,前置条件越多的任务应该最后完成,当然了,DFS的机制会让我们得到一个倒序的序列,我们只需要倒一下就好了。


而基于队列来统计入度,然后进行输出入度为0的点,再依次循环处理其余点的入度,其实也是这样的一种思想,依赖条件越多,越后完成、输出,依赖条件越少,就应该越先完成。


我觉得学习算法如果能够明白一个问题的背景、算法里面的思想、这才是精髓,这才是能够历久弥新的东西,才能让我们不断创新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值