1、定义

如果在无向环的带权有向图中

- 用有向边表示一个工程中的活动

- 用边上的权值表示活动的持续时间

- 用顶点表示事件

则这样的有向图叫做用边表示活动的网络,简称AOE网络

AOE在工程方面非常有用:

例如:

(1)完成整个工程至少需要多少时间(假设没有环);

(2)为缩短完成工程所需时间,应当加快那些活动?

从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同,完成不同路径的活动所需时间不同,但只有各条路径上所有活动都完成了,整个工程才完成。

Hence, 完成整个工程所需时间取决于从源点到汇点的最长路径长度,即在该路径上所有活动的持续时间之和,给路径称为关键路径。

为了找出关键路径,必须找出关键活动,即不按期完成就会影响整个工程完成的活动。

关键路径上的所有活动都是关键活动。

修改后的拓扑排序:

  1. void TopologicalSort(AdjGraph G)
  2. {
  3. Stack S;
  4. StackEmpty(S);
  5. int j;
  6.  
  7. for(int i=0;i<n;i++) //入度为0的顶点进栈
  8. if(count[i]==0)
  9. Push(S,i);
  10.  
  11. while(!StackEmpty(S))
  12. {
  13. Pop(S,j); //退栈
  14. cout << j << endl; //输出栈顶元素
  15. Push(T,j); //j号顶点入栈
  16. EdgeNode * p=data[j].firstarc;
  17. while(p!=NULL) //扫描出边表
  18. {
  19. int k=p->adjvex; //另一顶点
  20. if(--count[k]==0) //顶点入度减一
  21. Psuh(S,k); //顶点入度减至0,进栈
  22. if(ve[j]+p->info>ve[k])ve[k]=ve[j]+p->info;
  23. p=p->nextarc;
  24. }
  25. }
  26. }
  27.  
  28. CristicalPath(G)
  29. {
  30. vl[0..vexnum-1]=ve[vexnum-1];
  31. while(!StackEmpty(T))
  32. {
  33. Pop(T,j);
  34. p=G.data[j].firstarc;
  35. while(p!=NULL)
  36. {
  37. k=p->adjvex;
  38. dut=p->info;
  39. if(vl[k]-dut<vl[j]) vl[j]=vl[k]-dut;
  40. }
  41. for(j=0;j<vexnum;j++)
  42. for(p=G.data[j].firstarc;p;p=p->next)
  43. {
  44. k=p->adjvex;
  45. dut=p->info;
  46. ee=ve[j];
  47. el=vl[k]-dut;
  48. if(ee=el)printf("j,k");
  49. }
  50. }
  51. }

  

算法分析:

在拓扑排序求Ve[i],与逆拓扑排序求Vl[i]时需要的时间复杂度为O(n+e),求各个活动e(k)与l(k)需要的时间复杂度为O(e),

则总的时间复杂度为O(n+e)

注意到并不是改变任何一个关键活动的时间都可以改变总时间

AOE 网络的更多相关文章

  1. AOE网络的关键路径问题

    关于AOE网络的基本概念可以参考<数据结构>或者search一下就能找到,这里不做赘述. 寻找AOE网络的关键路径目的是:发现该活动网络中能够缩短工程时长的活动,缩短这些活动的时长,就可以 ...

  2. AOE网络——求关键路径

    1.计算每个活动的最早发生时间(正序) earliest[1]=0; earlest[k]=max{earliest[j],+dut[j][k]} 2.计算每个活动的最晚发生时间(逆序) lastes ...

  3. 算法-图(4)用边表示活动的网络(AOE网络)Activity On Edge Network

    有向边表示活动,权值表示活动的持续时间,顶点表示事件. 只有一个开始点和完成点,称为源点.汇点,完成工程时间取决于从源点到汇点的最长路径长度,即在这条路径(关键路径)上所有活动的持续时间之和.关键路径 ...

  4. ACM/ICPC 之 数据结构-邻接表+DP+队列+拓扑排序(TSH OJ-旅行商TSP)

    做这道题感觉异常激动,因为在下第一次接触拓扑排序啊= =,而且看了看解释,猛然发现此题可以用DP优化,然后一次A掉所有样例,整个人激动坏了,哇咔咔咔咔咔咔咔~ 咔咔~哎呀,笑岔了- -|| 旅行商(T ...

  5. NetworkX系列教程(10)-算法之三:关键路径问题

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  6. VirtualBox Ubuntu Server 16.04 手动设置 网络(IP, DNS, 路由)

    1. VirtualBox 设置全局网络 在virtualBox点击菜单管理->全局管理 配置NAT网络 参考下图配置, 依次点击相应的按钮并设置网络(其中DHCP任意, 将来我们都会使用固定I ...

  7. 教你轻松计算AOE网关键路径(转)

    原文链接:http://blog.csdn.net/wang379275614/article/details/13990163 本次结合系统分析师-运筹方法-网络规划技术-关键路径章节,对原文链接描 ...

  8. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  9. 教你轻松计算AOE网关键路径

    认识AOE网 有向图中,用顶点表示活动,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV网络:AOV网络可以反应任务完成的先后顺序(拓扑排序). 在AOV网的边上加上权值表示完成该活动所需的 ...

随机推荐

  1. action中list传到JSP中取不到值的问题

    今天遇到了这个问题 action中list传到JSP中取不到值 搞了半天是因为我在JSP中取值的的时候 <s:iterator  value="shlist" var=&qu ...

  2. __builtin_expect

    今天在看内核代码中看到: #define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), ...

  3. VS2010下调试.NET源码

    微软走向开源,是时候用vs去单步调试进入源码了.参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182 可供参考的文章:https:// ...

  4. java 访问后台方法顺序混乱

    今天遇到后台接值顺序混乱的问题. 环境:前台ajax请求后台方法.前台页面会频繁访问这个ajax. 现象:访问后台方法的顺序混乱. 怎么发现的问题:数量小访问没有问题,今天压力测试发现的问题. 解决办 ...

  5. leetcode & lintcode for bug-free

    刷题备忘录,for bug-free leetcode 396. Rotate Function 题意: Given an array of integers A and let n to be it ...

  6. (转载)js 快捷键大全,并有简单使用说明

    摘要: (转载)原文链接: http://www.cnblogs.com/fire-phoenix/archive/2010/09/28/1837295.html Code highlighting ...

  7. 浏览器的云加速可能导致IP统计异常

    前段时间弄个流量统计相关的东西,请求展示图片时根据请求的IP进行 md5 签名生成点击链接的验证参数,结果发现一个莫名其妙的问题 发现点击日志中有一小部分点击的IP居然不一致,如果是开放给别人用可能存 ...

  8. cos距离与欧式距离

    1. 欧氏距离(EuclideanDistance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式. (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离: ( ...

  9. [Q]AdobePDF虚拟打印机自动保存PDF

    使用打图精灵打印时,选择“Adobe PDF”虚拟打印机打印(注意不选择“打印到文件”),每张图纸都会弹出一个保存对话框,如何避免? 从 操作系统->控制面板->硬件和声音->设备和 ...

  10. DEBUG 调试

    1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method,然后return跳出此met ...