关键路径

1.基本概念

1.AOV网:顶点活动网,是指用顶点表示活动,而用边集表示活动优先关系的有向无环图。
2.AOE网:边活动网,是指用带权的边集表示活动,而用顶点表示事件的有向无环图。
AOV网和AOE网都不能存在环,否则会出现逻辑错误。3.一般而言,AOV网(AOE网)只有一个源点和一个汇点,即便存在多个源点或汇点,也可以通过添加超级源点和超级汇点来将它变成只含有一个源点和一个汇点的AOV网(AOE网)4.AOV转换为AOE:
(1)将AOV的每个顶点都拆成两个顶点,分别表示活动的起点和终点,用有向边连接,有向边表示原顶点的活动,边权给定。
(2)原AOV网中的边全部视为空活动,边权为0。5.解决的问题:a.工程起始到终止至少需要多少时间b.哪条(些)路径上的活动是影响整个工程的进度的关键

2.关键路径求法

在AOE网中求解。(1)变量说明:
1.e[]:e数组用来表示活动a的最早开始时间
2.l[]:l数组用来表示活动a的最迟开始时间
3.ve[]:表示事件i的最早发生时间
4.vl[]:表示事件i的最迟发生时间关键活动:关键路径上的活动。e[r]==l[r]表示活动a[r]是关键活动。
关系:e[r] = ve[i]     l[r] = vl[j]-length[r](2)求解每个结点的 ve 和 vl
ve[j] = max{ ve[i1]+length[r1] ~ ve[ik]+length[rk] }:拓扑序
vl[i] = min{ vl[j1]-lenght[r1] ~ vl[jk]-length[rk] }:逆拓扑序(3)代码实现://拓扑序列stack<int> topOrder;//拓扑排序,顺便求ve数组bool topologicalSort(){queue<int> q;for(int i=0;i<n;i++){if(inDegree[i]==0){q.push(i);}}while(!q.empty()){int u = q.front();q.pop();topOrder.push(u);for(int i=0;i<G[u].size();i++){int v = G[u][i].v;inDegree[v]--;if(inDegree[v]==0){q.push(v);}//用ve[u]更新u的所有后继结点v的ve[v]if(ve[u]+G[u][i].w>ve[v]){ve[v] = ve[u]+G[u][i].w;} }}if(topOrder.size()==n) return true;else return false;} //关键路径int CriticalPath(){memset(ve,0,sizeof(ve));if(topologicalSort()==false){return -1;//不是有向无环图,返回-1 } fill(vl,vl+n,ve[n-1]);//假设n-1为汇点,vl数组初始化//直接使用topOrder出栈即为逆拓扑序列,求解vl数组while(!topOrder.empty()){int u = topOrder.top();topOrder.pop();for(int i=0;i<G[u].size();i++){int v = G[u][i].v;//用u的所有后继结点v的vl[v]来更新vl[u]if(vl[v]-G[u][i].w<vl[u]){vl[u] = vl[v]-G[u][i].w;} }} //遍历邻接表的所有边,计算活动的最早开始事件e和最迟开始时间lfor(int u=0;u<n;u++){for(int i=0;i<G[u].size();i++){int v = G[u][i].v;int w = G[u][i].w;int e = ve[u];int l = vl[v]-w;if(e==l){printf("%d->%d",u,v);//输出关键活动 }}} return ve[n-1];}
如果不确定哪个是汇点,那就取ve数组的最大值,汇点的ve最大。
将以下代码加到上述代码的fill前面。int maxlength = 0;for(int i=0;i<n;i++){if(ve[i]>maxlength){maxlength = ve[i];}}fill(vl,vl+n;maxlength);
如果图中有多条关键路径,并且要完整输出所有关键路径,可以将关键活动存下来。方法就是建立一个邻接表,
当确定u->v是关键活动时,将边u->v加入邻接表。最后在用DFS遍历这个图就可以获取所有关键路径。

算法笔记_图算法专题_关键路径 AOV网和AOE网相关推荐

  1. 【算法】 AOV网与AOE网

    AOV网 我们把施工过程.生产流程.软件开发.教学安排等都当成一个项目工程来对待,所有的工程都可以分为若干个"活动"的子工程.有很多场景对顺序有严格的要求,比如说建造一栋大楼必须先 ...

  2. 图的应用(AOV网、AOE网、图连通性)

    图的应用(AOV网.AOE网.图连通性): AOV网: 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网. AOV网特点: 1.AO ...

  3. 数据结构:图:AOV网和AOE网

    AOV网(顶点表示活动的网):以有向图中的顶点来表示活动,以有向边来表示活动之间的先后次序关系. AOV网的拓扑序列:AOV网的拓扑序列就是将AOV网中的所有顶点排成一个线性序列:拓扑序列实际上就是要 ...

  4. 什么是AOV网与AOE网?——以及AOV网与AOE网区别和运用

    文章目录: 一:AOV网(Activity On Vertex Network)[顶点--表示活动] 二:AOE网(Activity On Edge)[边--表示活动] 一:AOV网(Activity ...

  5. 拓扑排序与关键路径(AOV网和AOE网)

    一.AOV网(Activity On Vertex Network) 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,称为AOV网. 不能存在回路 ...

  6. 图5——AOV网和AOE网

    AOV网: 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网. 特点: 1.AOV网中的弧表示活动之间存在的某种制约关系. 2.AO ...

  7. 算法笔记4.1习题_排序

    问题 A: 排序 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 32 MB 题目描述 对输入的n个数进行排序并输出. 输入 输入的第一行包括一个整数n(1<=n< ...

  8. 【数据结构笔记30】拓扑排序、AOV网络、AOE网络、关键工序

    本次笔记内容: 8.2.1 拓扑排序 8.2.2 关键路径 文章目录 拓扑排序 引例:计算机专业排课(AOV网络) 拓扑排序的概念与AOV网络 拓扑排序的算法 更加聪明的算法 关键路径问题 AOE(A ...

  9. 网和aoe网的区别_欧哲门窗的金刚网和其他品牌的有什么区别?

    金刚网一体窗的优势: 1.安全防护:拒绝不安全因素,防止破坏或鼠.蛇.蝇.蚊等动物的入侵. 2 预防高空坠物:不会因为门窗的开启,而使居室中的老人或玩耍的孩子处于不安全状态中. 3 易于开启便于逃生: ...

最新文章

  1. Python3.6 和 Pycharm 详细安装教程
  2. myeclipse html选取包含元素的标签_HTML基础2019-1-21
  3. 系统间通信2:通信管理与远程方法调用RMI
  4. 一篇文章教你如何使用python爬虫
  5. 35个Java代码性能优化总结
  6. 【HDU】2795 Billboard
  7. linux下GPRS模块ppp拨号上网
  8. ndarray对象的建立
  9. java查询数据库数据放到Excel下载
  10. 重启sql server 服务
  11. PDF在线预览 (flexpaper+swftools+saveaspdfandxps)
  12. Axure 9怎么导入阿里巴巴矢量图标的Iconfont图标
  13. JAVA网络编程实战(笔记)
  14. 应急响应的基本流程(建议收藏)
  15. ssm java当前项目路径_SSM项目中动态获取路径
  16. 蓝湖及PS测量设计稿的使用
  17. cf#644 div2 B. Boboniu Plays Chess
  18. HTML CSS JavaScript学习心得
  19. js移动手机号码验证
  20. netty开发tcp服务器最好不要用分隔符DelimiterBasedFrameDecoder这种分包方式

热门文章

  1. Excel列宽像素值计算方法详解
  2. 关于retina视网膜显示的知识总结
  3. ESP32分区表,flash大小修改
  4. Google Earth Engine OEEL——Open Earth Engine extension 插件,事半功倍的GEE辅助神器(附链接)
  5. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...
  6. 百度贴吧 v9.9.8.42
  7. INFORMIX如何确定extent size 和next size
  8. Python函数 — 位置参数和关键字参数
  9. 曾国藩《挺经》卷十六荷道
  10. Spring2.5+Struts2+Hibernate3整合之三