### 一、概念 **基于有向无环图(DAG)**:图中没有回路的有向图 ![[微信截图_20221221112416.png]] **AOV网**(拓扑排序) 用一个有向图表示一个工程的各子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为**顶点表示活动的网**,简称AOV网。 **特点:1. 若从i到j有一条路径,则i是j的前驱,j是i的后继 2. 若是网中有向边,则i是j的直接前驱,j是i的直接后继 3. AOV网中不允许有回路,因为如果有回路存在,则表明某项活动以自己为先决条件,这是不允许的** **问题**: 1. 如何用程序判断AOV网中是否存在回路(个人理解为死循环)? 2. 有了AOV网,怎么排序? **AOE网**(关键路径) 用一个有向图表示一个工程的各子工程及其相互制约的关系,其中以弧表示活动,以顶点表示活动的开始或者结束事件,称这种有向图为边表示活动的网,简称AOV网。 **拓扑排序** 在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV网中有弧存在,则在这个序列中,i一定排在j的前面,具有这种性质的线性序列成为**拓扑有序序列**,相应的拓扑有序排列的算法成为拓扑排序。 步骤:1. 找到一个没有前驱的顶点,以顶点为弧尾的弧删除,并将顶点作为排序节点例如C1(找顶点可以遵循从小到大原则) 例: ![[微信截图_20221221130828.png]] ![[微信截图_20221221130542.png]] ### 二、拓扑排序例子 #### 1.排课表 ![[微信截图_20221221113754.png]] ### 三、检测AOV网中是否存在环 对DAG构造其顶点的拓扑有序序列,若网中所有顶点都在它的拓扑有序序列中,则该AOV网必定不存在环。如图所示,C3,C6,C8就构成了环,所以不在拓扑序列中。 ![[微信截图_20221221131248.png]]