今天大概讲一下拓扑排序和基于此的AOV网关键路径
拓扑排序:
大概流程:
- 选择一个入度为0的顶点并输出
- 然后从AOV网中删除此顶点及以此顶点为起点的所有关联边;
- 重复上述两步,直到不存在入度为0的顶点为止。
- 若输出的顶点数小于AOV网中的顶点数,则说明“有回路”,否则输出的顶点序列就是一种拓扑序列
具体实现拟采用栈的先进后出结构,进出依据的是是否有子节点,若没有子节点则入栈,删除所有与其关联的边,即其所有的父亲节点中不再包含此子节点。输出具体看题目要求,结合数组简单操作即可。
注意拓扑排序中不能存在环,不然任何节点都无法入栈。
AOE网与其关键路径:
AOE网我们使用点表示事(活动开始与结束),使用边表示活动,权值表示活动的性质(时间)
注意性质:
有以下性质:
① 只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始。
① 只有在进入某点的各有向边所代表的活动都已结束,该顶点所代表的时事件才能发生。
所以,某一活动完成的最短时间等于最长路径(最大权值和)
每一个活动都有其最早完成时间和最晚完成时间,每一个事件都有其最早开始时间和最晚开始时间。
计算
Ve(j)=max{ve(i) + dut(<i,j>