顶点活动网AOV、
AOV;Activity On Vertex Network
AOV用顶点表示一个活动,用有向边表示各项活动之间的先后顺序
在一项工程中,不同工作之间存在先后制约关系,这里需要解决的一个问题就是做出满足制约关系的工作安排,可以通过AOV网来处理这种工程计划问题
常见的AOV网实例是大学课程的先修关系,学生在选一门课之前,要先看是否已经修过所有先修课程。
一些实际的问题中,AOV网的顶点或边还可能带有权值
可以把AOV网络里的有向边看做一种顺序关系,拓扑排序问题就是问,在一个AOV网里的活动能否排成一种全序(顶点按执行的先后排成序列)。在实际情况中,一个拓扑序列就是工程的以顺利完成的一个可行方案
一些性质:
- AOV网未必有拓扑序列。当且仅当没有回路的时候才存在拓扑序列
- 存在拓扑序列的AOV网,其拓扑序列未必唯一
- AOV网的任何一个拓扑序列的反向得到的序列,都是AOV网的逆网的拓扑序列
- 拓扑排序隐含的假设是一次只能执行一个任务,即单线程的。但实际情况中也存在多线程的情况
- 从AOV网N中选出一个入度为0的顶点作为序列的下一个顶点
- 从N中删除所选顶点及其所有的出边
- 重复执行1、2两步,直到没有入度为0的顶点
算法的复杂度问题:基于图和顶点的操作需要拷贝整个图,空间代价大,不断查找入度为0的点时间代价也大。解决方法;用一个表来