AOV网络
来源:互联网 发布:岛风go软件打不开 编辑:程序博客网 时间:2024/04/28 06:25
在现代化管理中,人们常用有向图来描述和分析一项工程的计划和实施过程,一个工程常被分为多个小的子工程,这些子工程被称为活动(Activity),在有向图中若以顶点表示活动,有向边表示活动之间的先后关系,这样的图简称为AOV网。如下图是计算机专业课程之间的先后关系:
图片注释:基础知识课程应先于其它所有课程,pascal语言课程应先于数据结构。 用顶点表示活动,用弧表示活动间的优先关系的有向图称为顶点表示活动的网(Activity On Vertex Network),简称AOV网。 在网中,若从顶点i到顶点j有一条有向路径,则i是j 的前驱AOV网是一种有向无环图。
算法如下:
1:stack S //用来存储入度为0的顶点
2:count //用于输出的顶点计数器
3:扫描所有的顶点,如果入度为0,则进栈
4:取出栈顶顶点,输出,计数器加1,然后查找该顶点的所有邻接顶点,将这些顶点的入度减1,如果入度减至0,则进栈
5:如果栈为空则停止循环,如果不为空继续执行第三步。
6:循环退出后,检测计数器与顶点数目是否相等,如果计数器<顶点数目,则存在回路,不能拓扑排序成一个序列;如果计数器=定点数目,则AOV网络可行。
下面代码:
#include<iostream>#include<fstream>#include<stack>#include<vector>#include"F:\QQPCmgr\documents\visual studio 2010\Projects\Graph\Graph_matrix\GraphAdjMatrix.h"using namespace std;template<class T, class E>void TopologicalSort(GraphAdjMatrix<T,E> &targetG){int verticesNum = targetG.GetVerticesNum(); //获取图的顶点数目int *in = new int[verticesNum]; //临时存储顶点的入度信息targetG.GetInFormation(in); //调用图的接口,返回各个顶点的入度信息stack<int> stk; //栈 用来实现排序的中转vector<int> veci; //容器 顺序存储每一个顶点for(int i = 0; i < verticesNum; i++){if(in[i] == 0){stk.push(i); //扫描入度数组,把初始化状态入度为0的顶点进栈}}int count = 0; //顶点计数器int temp;int adj;int nullIdx = targetG.GetNullIdx();while(stk.empty() == false){temp = stk.top();stk.pop();veci.push_back(temp);count++;adj = targetG.GetVerticesPos(targetG.GetFirstNeighbor(temp)); //获取当前顶点的邻接点while(adj != nullIdx){in[adj]--;if(in[adj] == 0){stk.push(adj);}adj = targetG.GetVerticesPos(targetG.GetNextNeighbor(temp, adj));}// end of 小while}// end of 大whileif(count < verticesNum){cout<<"count = "<<count<<endl;cout<<"图中有回路,不能形成拓扑排序序列"<<endl;}else{cout<<"拓扑排序序列:"<<endl;for(vector<int>::size_type idx = 0; idx < veci.size(); idx++){cout<<"#"<<idx<<":"<<veci[idx]<<" ";}cout<<endl;}}
- AOV网络
- AOV网络与AOE网络
- AOV网络及拓扑排序
- 拓扑排序,AOV网络,AOE网络
- 活动网络——AOV网络
- AOV网络与拓扑(一)
- 图的小算法 二 (AOE/AOV网络)
- poj 1093 Sorting It All Out AOV网络+拓扑
- AOV网络与拓扑(二)——实现
- Aov网络与拓补排序的实现
- AOV拓扑排序
- AOV 拓扑排序
- AOV 拓扑排序
- 拓扑排序与AOV
- 拓扑排序---AOV图
- AOV图-AOE图
- AOV和AOE概念
- AOV网拓扑排序算法
- HTML中id、name、class 区别
- YC创始人保罗·格雷厄姆:如何获得创业点子?
- keil c编译器报warning: #870-D: invalid multibyte character sequence解决办法
- IPVS实现分析
- 异常(收藏)
- AOV网络
- Android:Gson通过借助TypeToken获取泛型参数的类型的方法
- Spring Extension (4) — AOP based Interceptor for Controller
- fpga的配置
- 宏定义与枚举
- 查看MySQL引擎支持类型及查看表当前引擎类型
- php基础学习
- 谈Window Vista/7如何调整硬盘分区,如何扩充系统盘
- hello_world-2.3之简单设备驱动模型(三)---添加设备属性文件