首页 > 头条 > > 内容页

拓扑排序

2023-07-09 20:57:43 来源:哔哩哔哩 分享到 :


(资料图)

今天,发了最小生成树的两个算法,实在不想说话了,还剩最后一章《拓扑排序》,就用这篇文章结束吧!

一.AOV网

简单来说,就是一个有向无环图,无回路。

在原神中,你要完成某个任务,但会有一些前面的任务一直干扰着你,此时,你不得完成前面任务,才开始这个任务,用图表示出来,之后,你会想,我应该怎么设计一个路线,完成所有任务呢?

其实,任务表示出来的图,就是AOV网, 描述出来的的路线就是拓扑排序的结果序列。

二.拓扑排序

每次将入度为0的点加入序列中,并修改后面的入度与出度可有深搜或广搜来完成,(注:广搜时应用栈来实现)

代码如下:

简单,高效,使用的算法,复杂度为O(V+E)

三.AOE关键路径

AOE关键路径主要讨论的完成一个工程至少需要多少天,在AOV网上完成,用拓扑排序实现

1.最早发生与最早开始时间

活动k需要前面的事情完成,设前面的事情为earliest[j],现在的事情为earliest[k] 则earliest[k]=earliest[j]+完成earliest[j]的时间

2.最晚发生时间

考虑实际生活中,某些问题需要在最迟时间之前或现在完成,不然会影响工程的完成天数,

设前面的事情为lastest[j],现在的事情为lastest[k]

lastest[n]=earliest[n]  

lastest[j]=min(lastest[k]-完成lastest[j]的时间)由于前面的任务不是单一的,所以要取最小值

3.计算最早和最晚发生时间

actearliest[i]=earliest[j]

actlastest[i]=lastest[j]-完成j的时间

4.代码实现    有一点长,请分块理解

都看到了这,三连再走吧!求求了!

想要观看更多内容,关注数学哪里出来!

推荐阅读