首页 > 其他 > 详细

AOV网络与拓扑(一)

时间:2014-04-05 23:03:02      阅读:687      评论:0      收藏:0      [点我收藏+]

一、活动网络之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网络的拓扑排序~

AOV网络与拓扑(一),布布扣,bubuko.com

AOV网络与拓扑(一)

原文:http://blog.csdn.net/zenail501129/article/details/22986911

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!