文章目录
参考视频: 数据结构与算法基础–第11周09–6.6图的应用9–6.6.3拓扑排序
一,有向无环图
1.1 什么是有向无环图
有向无环图:无环的有向图,简称:DAG图(Directed Acycline Graph)
1.2 有向无环图的应用
- 有向无环图常用来描述一个工程或系统的进行过程。(通常把计划、施工、生产、程序流程等当成是一个工程)
- 一个工程可以分为若干个子工程,只要完成了这些子工程(活动),就可以导致整个工程的完成。
1.3 如何表示子工程(活动)
AOV 网(拓扑排序)
- 用一个有向图表示一个工程的各子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网,简称 AOV网(Activity On Vertex network)。
AOE 网(关键路径)
- 用一个有向图表示一个工程的各子工程及其相互制约的关系,以弧(边)表示活动,以顶点表示活动的开始或结束事件,称这种有向图为边表示活动的网,简称为 AOE网(Activity On Edge)。
二,拓扑排序
拓扑排序引例:排课表
- 使用定点来表示课程
- 可以直观的表现出该课程有哪些先修课程
2.1 AOV 网的特点
- 若从 i 到 j 有一条有向路径,则 i 是 j 的前驱;j 是 i 的后继。
- 若 < i, j > 是网中有向边,则 i 是 j 的直接前驱;j 是 i 的直接后继。
- AOV 网中不允许有回路,因为如果有回路存在,则表明某项活动以自己为先决条件,显然这是不合理的。
2.2 拓扑排序
2.2.1 定义与方法
定义
- 在 AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若 AOV网中有弧 < i, j > 存在,则在这个序列中,i 一定排在 j 的前边,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。
拓扑排序的方法
- 在