有向无环图的应用之拓扑排序(C语言)

有向无环图(DAG)与拓扑排序
本文介绍了有向无环图(DAG)的概念,以及它在工程流程和活动制约中的应用。AOV网和AOE网分别用于表示活动的顶点和边,拓扑排序用于确定活动的顺序。拓扑排序算法通过寻找无前驱顶点并输出,直至所有顶点输出或发现环。文中还给出了拓扑排序的C语言实现示例。

有向无环图:无环的有向图,简称DAG图(Directed Acycline Gragh),不存在回路

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

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

AOV网:

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

AOE网:

用一个有向图表示一个工程的各子工程及其相互制约的关系,以弧表示活动,以顶点表示活动的开始或结束事件,称这种有向图为边表示活动的网,简称为AOE网(Activity On Edge)

AOV网用来解决拓扑排序问题,AOE网用来解决关键路径问题

拓扑排序:

AOV网的特点:1,若从i到j有一条有向路径,则i是j的前驱;j是i的后继

2,若<i,j>是网中有向边,则i是j的直接前驱,j是i的直接后继.

拓扑排序定义

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

拓扑排序的方法

1,在有向图中选一个没有前驱的顶点且输出之.

2,从图中删除该顶点和所有以它为尾的弧.

3,重复

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值