王朝百科
分享
 
 
 

关键路径

王朝百科·作者佚名  2009-12-07  
宽屏版  字体: |||超大  

关键路径

1、 AOE网

用顶点表示事件,弧表示活动,弧上的权值表示活动持续的时间的有向图叫AOE(Activity On Edge Network)网 。AOE网常用于估算工程完成时间。

2、 AOE网研究的问题

(1) 完成整个工程至少需要多少时间;

(2) 哪些活动是影响工程的关键。

1956年,美国杜邦公司提出关键路径法,并于1957年首先用于1000万美元化工厂建设,工期比原计划缩短了4个月。杜邦公司在采用关键路径法的一年中,节省了100万美元。

3、 关键路径的几个术语

(1) 关键路径 从源点到汇点的路径长度最长的路径叫关键路径。

(2) 活动开始的最早时间e(i)

(3) 活动开始的最晚时间l(i) 定义e(i)=l(i)的活动叫关键活动。

(4) 事件开始的最早时间ve(i)

(5) 事件开始的最晚时间vl(i)

设活动ai由弧<j,k>(即从顶点j到k)表示,其持续时间记为dut(<j,k>),则

e(i)=ve(j)

l(i)=vl(k)-dut(<j,k>) (6_6_1)

求ve(i)和vl(j)分两步:

· 从ve(1)=0开始向前递推

ve(j)=Max{ ve(i)+dut(<i,j>) } (6_6_2)

<i,j>T, 2<=j<=n

其中,T是所有以j为弧头的弧的集合。

· 从vl(n)=ve(n)开始向后递推

vl(i)=Min{ vl(j)-dut(<i,j>) } (6_6_3)

<i,j>S, 1<=i<=n-1

其中,S是所有以i为弧尾的弧的集合。

两个递推公式是在拓扑有序和逆拓扑有序的前提下进行。

4、 求关键路径的算法

(1) 输入e条弧<j,k>,建立AOE网的存储结构。

(2) 从源点v1出发,令ve(1)=0,求 ve(j) 2<=j<=n。

(3) 从汇点vn出发,令vl(n)=ve(n),求 vl(i) 1<=i<=n-1。

(4) 根据各顶点的ve和vl值,求每条弧s(活动)的最早开始时间e(s)和最晚开始时间l(s),其中e(s)=l(s)的为关键活动。

求关键路径是在拓扑排序的前提下进行的,不能进行拓扑排序,自然也不能求关键路径。

Status ToplogicalSort(ALGraph G,stack &T){

FindInDegree(G,indegree);

InitStack(S);count=0; ve[0..G.vexnum-1]=0;

while(!StackEmpty(S))

{ Pop(S,j);Push(T,j); ++count;

for(p=G.vertices[j].firstarc;p;p=p->nextarc)

{k=p>adjvex;

if(--indegree[k]==0) Push(S,k);

if(ve[j]+*(p->info)>ve[k]) ve[k]=ve[j]+*(p->info);

}

}

if(count<G.vexnum) return ERROR;

else return OK;

}

status CriticalPath(ALGraph G){

if(!ToplogicalOrder(G,T)) return ERROR;

vl[0..G.vexnum-1]=ve[0..G.vexnum-1];

while(!StackEmpty(T))

for(Pop(T,j),p=G.vertices[j].firstarc;p;p=p->nextarc)

{k=p>adjvex; dut=*(p->info);

if(vl[k]-dut<vl[j]) vl[j]=vl[k]-dut;

}

for(j=0;j<G.vexnum;++j)

for(p=G.vertices[j].firstarc;p;p=p->nextarc)

{k=p>adjvex; dut=*(p->info);

ee=ve[j]; el=vl[k];

tag=(ee==el)?’*’:’’;

printf(j,kdut,ee,el,tag);

}

}

6、 求关键路径的算法分析

(1) 求关键路径必须在拓扑排序的前提下进行,有环图不能求关键路径;

(2) 只有缩短关键活动的工期才有可能缩短工期;

(3) 若一个关键活动不在所有的关键路径上,减少它并不能减少工期;

(4) 只有在不改变关键路径的前提下,缩短关键活动才能缩短整个工期。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有