6.8 数据结构——拓扑排序

6.8.1 有向无环图

有向无环图:无环的有向图,简称DAG图(Directed Acycline Graph)。

有向无环图常用来描述一个工程或系统的进行过程。通常把计划、施工、生产、程序流程等当成是一个工程。

一个工程可以分为若干个子工程,只要完成了这些子工程(活动),就可以使得整个工程完成。

6.8.2 AOV网

        用一个有向图表示一个工程的个子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表活动的网,简称AOV网(Activity on Vextex network)。

AOV网的特点:

  • 若从 i 到 j 有一条有向路径,则 i 是 j 的前驱,j 是 i 的后继;
  • 若<i,j>是网中有向边,则 i 是 j 的直接前驱,j 是 i 的直接后继;
  • AOV网中不允许有回路,因为如果回路存在,则表明某项活动以自己为先决条件,显然是不成立的。

6.8.3 拓扑排序

        在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV网中有弧<i,j>存在,则在这个序列中,i 一定排在 j 的前面,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。

拓扑排序案例:

课程代号课程名称先修课
C1程序设计基础
C2离散数学C1
C3数据结构C1,C2
C4汇编语言C1
C5语言的设计与分析C3,C4
C6计算机原理C11
C7编译原理C3,C5
C8操作系统C3,C6
C9高等数学
C10线性代数C9
C11大学物理C9
C12数值分析C1,C9,C10

拓扑排序的方法:

 (1)在有向图中选取一个没有前驱的顶点输出;

(2)在图中删除该顶点和所有以它为尾的弧;

(3)重复上述两步,直至全部顶点均已输出,或者当图中不存在无前驱的顶点为止。

上图的拓扑序列:C1,C2,C3,C4,C5,C7,C9,C10,C11,C6,C12,C8

一个AOV网的拓扑序列不是唯一的。

如何检测AOV网是否存在环?

        对有向图构造其顶点的拓扑有序序列,若网中所有顶点都在它的拓扑有序序列中,则该AOV网必定不存在环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值