AOV网络与拓扑(一)

一、活动网络之AOV:

1、活动网络可以用来描述生产计划、施工过程、生产流程、程序流程等工程中各子工程的安排问题。活动网络可分为两种:AOV网络和AOE网络;

2、实际上,可以用有向图来表示一个工程,在这种有向图中,用顶点表示活动,用有向边<u,v>来表示活动u必须先于活动v进行。这种有向图叫做顶点表示活动的网络(Activity On Vertices),记作AOV网络;

3、在AOV网络中,由于具有传递性和反自反性,所以AOV网络不能出现有向环(即有向无环图DAG)。

综上,对于给定的AOV网络,必须先判断它是否是DAG~

二、拓扑排序:

1、判断有向无环图的方法是对AOV网络构造它的拓扑有序序列(Topological Order Sequence);

2、构造这种AOV网络全部顶点的拓扑有序序列的运算称为拓扑排序;

3、一个AOV网络的拓扑有序序列可能不是唯一的;

4、拓扑排序实现方法:

(1)从AOV网络中选择一个入度为0(即没有直接前驱)的顶点并输出;

(2)从AOV网络中删除该顶点及该顶点发出的所有边;

(3)重复步骤(1)和(2),直至找不到入度为0的顶点。

经过上述步骤后,有两种结果:(1)所有的顶点都被输出,也就是整个拓扑排序完成了;(2)仍有顶点没有被输出,只剩下入度不为0的顶点,即存在有环图。

5、拓扑排序在实现时需要建立一个count数组,记录各个顶点的入度:入度为0的顶点就是无前驱的顶点;还需建立一个存放入度为0的顶点的栈,供选择和输出无前驱的顶点:只要出现入度为0的顶点,就将它压入栈中;

6、在算法实现时,为了建立入度为0的顶点栈,可以不另外分配存储空间,直接利用存储顶点入度的count[]数组;

(1)当顶点i入栈时,将执行栈顶指针的修改:count[i] = top; top = i;

(2)当弹出栈顶顶点时,执行如下操作:j = top; top = count[top];

如上操作,是把count当作一个链式栈来看,当count[]中入度为0时,即为top下一个指向的位置,并将当前指针存入count[]中;

Ps:下一篇来具体实现AOV网络的拓扑排序~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值