考研之数据结构024_图的拓扑排序
一、有向无环图(DAG)
有向无环图:有向图中不存在环,则成为有向无环图,
二、拓扑排序(AOV网)
AOV网:用顶点表示活动的网:
用DAG图(有向无环图)表示一个工程。
顶点表示活动,有向边<vi,vj> 表示活动vi必须先与活动vj进行。
1、代码
用代码解释一下例子:
- indegree【】数组:01234的入度分别是:01022
- print【】数组:纪录拓扑序列,初始化为-1
- 第一个for循环:检查当前所有入度为0 的顶点,也就是遍历数组indegree数组值为0的顶点。将下标入栈保存。
- 栈为不空,则出栈
- 由于第一个出栈的是2号节点,那么将count指向的位置,记为2,表示在这个序列中第一个结点的序号是2.并进行++操作。
- 这个for循环:将刚才弹出的结点,相连的结点他们的入度进行-1,操作(将indegree数组中信息进行–)。逻辑上是把刚才2号连接其他的边,进行删除(并不是真正删除,邻接表信息没有改变)
- 一直重复,最后判断count是否大于小于g.vexnum。如果是等于结点数量就是成功的,如果小于则拓扑失败,优先图有回路。
三、逆拓扑排序
四、关键路径(AOE网)
每个活动的最早发生时间, 这个活动的弧尾连接这个时间的最早发生时间
时间余量为0的,是不能拖延的。因此找到了关键路径