AOE 网络
1、定义
如果在无向环的带权有向图中
- 用有向边表示一个工程中的活动
- 用边上的权值表示活动的持续时间
- 用顶点表示事件
则这样的有向图叫做用边表示活动的网络,简称AOE网络
AOE在工程方面非常有用:
例如:
(1)完成整个工程至少需要多少时间(假设没有环);
(2)为缩短完成工程所需时间,应当加快那些活动?
从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同,完成不同路径的活动所需时间不同,但只有各条路径上所有活动都完成了,整个工程才完成。
Hence, 完成整个工程所需时间取决于从源点到汇点的最长路径长度,即在该路径上所有活动的持续时间之和,给路径称为关键路径。
为了找出关键路径,必须找出关键活动,即不按期完成就会影响整个工程完成的活动。
关键路径上的所有活动都是关键活动。
修改后的拓扑排序:
void TopologicalSort(AdjGraph G)
{
Stack S;
StackEmpty(S);
int j; for(int i=0;i<n;i++) //入度为0的顶点进栈
if(count[i]==0)
Push(S,i); while(!StackEmpty(S))
{
Pop(S,j); //退栈
cout << j << endl; //输出栈顶元素
Push(T,j); //j号顶点入栈
EdgeNode * p=data[j].firstarc;
while(p!=NULL) //扫描出边表
{
int k=p->adjvex; //另一顶点
if(--count[k]==0) //顶点入度减一
Psuh(S,k); //顶点入度减至0,进栈
if(ve[j]+p->info>ve[k])ve[k]=ve[j]+p->info;
p=p->nextarc;
}
}
} CristicalPath(G)
{
vl[0..vexnum-1]=ve[vexnum-1];
while(!StackEmpty(T))
{
Pop(T,j);
p=G.data[j].firstarc;
while(p!=NULL)
{
k=p->adjvex;
dut=p->info;
if(vl[k]-dut<vl[j]) vl[j]=vl[k]-dut;
}
for(j=0;j<vexnum;j++)
for(p=G.data[j].firstarc;p;p=p->next)
{
k=p->adjvex;
dut=p->info;
ee=ve[j];
el=vl[k]-dut;
if(ee=el)printf("j,k");
}
}
}
算法分析:
在拓扑排序求Ve[i],与逆拓扑排序求Vl[i]时需要的时间复杂度为O(n+e),求各个活动e(k)与l(k)需要的时间复杂度为O(e),
则总的时间复杂度为O(n+e)
注意到并不是改变任何一个关键活动的时间都可以改变总时间
AOE 网络的更多相关文章
- AOE网络的关键路径问题
关于AOE网络的基本概念可以参考<数据结构>或者search一下就能找到,这里不做赘述. 寻找AOE网络的关键路径目的是:发现该活动网络中能够缩短工程时长的活动,缩短这些活动的时长,就可以 ...
- AOE网络——求关键路径
1.计算每个活动的最早发生时间(正序) earliest[1]=0; earlest[k]=max{earliest[j],+dut[j][k]} 2.计算每个活动的最晚发生时间(逆序) lastes ...
- 算法-图(4)用边表示活动的网络(AOE网络)Activity On Edge Network
有向边表示活动,权值表示活动的持续时间,顶点表示事件. 只有一个开始点和完成点,称为源点.汇点,完成工程时间取决于从源点到汇点的最长路径长度,即在这条路径(关键路径)上所有活动的持续时间之和.关键路径 ...
- ACM/ICPC 之 数据结构-邻接表+DP+队列+拓扑排序(TSH OJ-旅行商TSP)
做这道题感觉异常激动,因为在下第一次接触拓扑排序啊= =,而且看了看解释,猛然发现此题可以用DP优化,然后一次A掉所有样例,整个人激动坏了,哇咔咔咔咔咔咔咔~ 咔咔~哎呀,笑岔了- -|| 旅行商(T ...
- NetworkX系列教程(10)-算法之三:关键路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- VirtualBox Ubuntu Server 16.04 手动设置 网络(IP, DNS, 路由)
1. VirtualBox 设置全局网络 在virtualBox点击菜单管理->全局管理 配置NAT网络 参考下图配置, 依次点击相应的按钮并设置网络(其中DHCP任意, 将来我们都会使用固定I ...
- 教你轻松计算AOE网关键路径(转)
原文链接:http://blog.csdn.net/wang379275614/article/details/13990163 本次结合系统分析师-运筹方法-网络规划技术-关键路径章节,对原文链接描 ...
- 05.Python网络爬虫之三种数据解析方式
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- 教你轻松计算AOE网关键路径
认识AOE网 有向图中,用顶点表示活动,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV网络:AOV网络可以反应任务完成的先后顺序(拓扑排序). 在AOV网的边上加上权值表示完成该活动所需的 ...
随机推荐
- html css jquery 回到顶部按钮
今天做了个回到顶部的功能,在这里记录一下,有需要可以拿去试试! CSS部分,很简单就一个class /*回到顶部*/ .back-top { position: fixed; right: 15px; ...
- c#的as关键字
类型a as 类型b ,把类型a强制变为类型b
- CodeForces 670F Restore a Number
模拟. 首先暴力找到答案的位数,然后就是分类讨论输出答案. #pragma comment(linker, "/STACK:1024000000,1024000000") #inc ...
- 【3】Chrome 的一些常用操作
记录一些 Chrome 的常用操作 1. 让页面可以编辑 1). 在 控制台 输入 document.designMode = 'on'; 链接地址>>
- old linkedin profile
employments: software engineer intern: Karl Storz Imaging, 2015-06 to 2015-09. software engineer int ...
- xcode常见错误
------------------------------------------错误列表---------------------------------------------- 1.Ter ...
- python2与python3
一.print python2 print "hello world !" python3 print("hello world!") 二.字符编码 pyth ...
- oc 导航栏跳转指定界面
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIn ...
- ORACLE ORDER BY用法总结
order by后面的形式却比较新颖(对于我来说哦),以前从来没看过这种用法,就想记下来,正好总结一下ORDER BY的知识. 1.ORDER BY 中关于NULL的处理 缺省处理,Oracle在Or ...
- iPhone doesn’t support any of GongShangJ.app’s architectures. You can add iPhone’s armv7s architectu
iPhone doesn't support any of GongShangJ.app's architectures. You can add iPhone's armv7s architectu