一个aoe网 求活动最早文字资料纲最晚的问题

数据结构拓扑排序和关键路径的求解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
30页免费17页免费49页免费3页¥3.0028页免费17页免费28页1下载券58页免费6页免费
喜欢此文档的还喜欢28页1下载券15页免费24页免费30页免费19页2下载券
数据结构拓扑排序和关键路径的求解|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢关键路径(CPM)
AOE网(Activity On Edge network),.._IT教育论坛
&>&&>&&>&&>&关键路径详解
关键路径详解
关键路径(CPM)
AOE网(Activity On Edge network),即边表示活动的网络,与AOV网相对应的是。它通常表示一个工程的计划或进度。
AOE网是一个有向带权图,图1中的:
边:表示活动(子工程),
边上的权:表示该活动的持续时间,即完成该活动所需要的时间;
顶点:表示事件,每个事件是活动之间的转接点,即表示它的所有入边活动到此完成,所有出边活动从此开始。
其中有两个特殊的顶点(事件),一个称做源点,它表示整个工程的开始,亦即最早活动的起点,显然它只有出边,没有入边;另一个称做汇点,它表示整个工程的结束,亦即最后活动的终点,显然它只有入边,没有出边。除这两个顶点外,其余顶点都既有人边,也有出边,是入边活动和出边活动的转接点。
在一个AOE网中,若包含有n个事件,通常令源点为第0个事件,汇点为第n-1个事件,其余事件的编号(即顶点序号)分别为1~n-2。
一个AOE网如图,该网中包含有10项活动和7个事件。
例如,边表示活动al,持续时间(即权值)为3,假定以天为单位,即a1需要3天完成,它以V1事件为起点,以V2事件为终点;边和分别表示活动a4和a5,它们的持续时间分别为4天和2天,它们均以V2事件为起点,以V5和V4事件为终点。该网中的源点和汇点分别为第1个事件V1和最后一个事件V7,它们分别表示整个工程的开始和结束。
对于一个AOE网,待研究的问题是:
(1)整个工程至少需要多长时间完成?
(2)哪些活动是影响工程进度的关键? 图1 AOE网1.事件的最早发生时间与活动的最早开始时间的关系
在AOE网中,一个顶点事件的发生或出现必须在它的所有入边活动(或称前驱活动)都完成之后,即只要有一个入边活动没有完成,该事件就不可能发生。所以:
一个事件的最早发生时间是它的所有入边活动,或者说最后一个入边活动刚完成的时间。
一个活动的开始必须在它的起点事件发生之后,也就是说,一个顶点事件没有发生时,它的所有出边活动(或称后继活动)都不可能开始,所以:
一个活动的最早开始时间是它的起点事件的最早发生时间。若用Ve[j]表示顶点Vj事件的最早发生时间,用e[i]表示Vj一条出边活动ai的最早开始时间,则有e[i]=Ve[j]。2.求事件的最早发生时间
对于源点事件来说,因为它没有入边,所以随时都可以发生,整个工程的开始时间就是它的发生时间,亦即最早发生时间,通常把此时间定义为0,从此开始推出其他事件的最早发生时间。
例如,如图所示的AOE网中,
V5事件的发生必须在a4和a8活动都完成之后,而a4和a8活动的开始又必须分别在V2和V4事件的发生之后,V2和V4事件的发生又必须分别在a1和a2活动的完成之后,因a1和a2的活动都起于源点,其最早开始时间均为0,所以a1和a2的完成时间分别为3和6,这也分别是V2和V4的最早发生时间,以及a4和a8的最早开始时间,故a4和a8的完成时间分别为7和7,由此可知V5事件的最早发生时间为7,即所有入边活动中最后一个完成的时间。
从以上分析可知,一个事件的发生有待于它的所有入边活动的完成,而每个入边活动的开始和完成又有待于前驱事件的发生,而每个前驱事件的发生又有待于它们的所有入边活动的完成,……总之,一个事件发生在从源点到该顶点的所有路径上的活动都完成之后,显然,其最早发生时间应等于从源点到该顶点的所有路径上的最长路径长度。这里所说的路径长度是指带权路径长度,即等于路径上所有活动的持续时间之和。
如从源点V1到顶点V4共有三条路径,长度分别为5、6和3,所以V4的最早发生时间为6。
从源点V1到汇点V7有多条路径,通过分析可知,其最长路径长度为10,所以汇点V7的最早发生时间为10。汇点事件的发生,表明整个工程中的所有活动都已完成,所以完成图所对应的工程至少需要10天。
如何从源点V1的最早发生时间1出发,求出其余各事件的最早发生时间。
求一个事件Vk的最早发生时间(即从源点V1~Vk的最长路径长度)的常用方法是:
由它的每个前驱事件Vi的最早发生时间(即从源点V1~Vi的最长路径长度)分别加上相应入边上的权,其值最大者就是Vk的最早发生时间。由此可知,必须按照拓扑序列中的顶点次序(即拓扑有序)求出各个事件的最早发生时间,这样才能保证在求一个事件的最早发生时间时,它的所有前驱事件的最早发生时间都已求出。
设Ve[k]表示vk事件的最早发生时间,Ve[j]表示vk的一个前驱事件vj的最早发生时间,dut()表示边上的权,p表示vk顶点所有入边的集合,则网中每个事件vk(0≤k≤n-1)的最早发生时间Ve可由下式,按照拓扑有序计算出来。
Ve(k) = 0 (k = 0)
max{Ve[j] +dut()} (l≤k≤n- 1, ∈p)按照此公式和拓扑有序计算出图所示的AOE网中每个事件的最早发生时间为:Ve(1) = 0Ve(2) = Ve(1) +dut(
) =0+3=3Ve(3) = Ve(1) + dut(
) =0+2 = 2Ve(4) = max{Ve(1) + dut(
), Ve(2) + dut(
), Ve(3) + dut(
) }= max{0 +6,3+ 2,2+1} =6Ve(5) = max{Ve(2) + dut(
),Ve(4) +dut(
)} = max{3+4,6 + 1}= 7Ve(6) = Ve(3) +dut(
) =2+3= 5Ve(7) = max{Ve(5) +dut(
), Ve(6) +dut(
)} = max{7 + 3,5 + 4} = 10最后得到的Ve(7)就是汇点的最早发生时间,从而可知整个工程至少需要10天完成。
3.事件的最迟发生时间与活动的最迟开始时间的关系
事件的最迟发生时间:在不影响整个工程按时完成的前提下,一些事件可以不在最早发生时间发生,而允许向后推迟一些时间发生,我们把最晚必须发生的时间叫做该事件的最迟发生时间。
同样,在不影响整个工程按时完成的前提下,一些活动可以不在最早开始时间开始,而允许向后推迟一些时间开始,我们把最晚必须开始的时间叫做该活动的最迟开始时间。AOE网中的任一个事件若在最迟发生时间仍没有发生或任一项活动在最迟开始时间仍没有开始,则必将影响整个工程的按时完成,使工期拖延。
若用Vl[k]表示顶点Vk事件的最迟发生时间,用l[i]表示Vk的一条入边上活动ai的最迟开始时间,用dut()表示ai的持续时间,则有 l[i]= Vl [k]-dut()
因ai活动的最迟完成时间也就是它的终点事件Vk的最迟发生时间,所以ai的最迟开始时间应等于Vk的最迟发生时间减去ai的持续时间,或者说,要比Vk的最迟发生时间提前ai所需要的时间。4.求事件的最迟发生时间
为了保证整个工程的按时完成,把汇点的最迟发生时间定义为它的最早发生时间,即Vl [n]= Ve [n] Vl。其他每个事件的最迟发生时间应等于汇点的最迟发生时间减去从该事件的顶点到汇点的最长路径长度,或者说,每个事件的最迟发生时间比汇点的最迟发生时间所提前的时间应等于从该事件的顶点到汇点的最长路径上所有活动的持续时间之和。
求一个事件Vj的最迟发生时间的常用方法是:由它的每个后继事件Vk的最迟发生时间分别减去相应出边上的权,其值最小者就是vj的最迟发生时间。由此可知,必须按照逆拓扑有序求出各个事件的最迟发生时间,这样才能保证在求一个事件的最迟发生时间时,它的所有后继事件的最迟发生时间都已求出。
设Vl [j]表示待求的Vj事件的最迟发生时间,Vl [k]表示Vj的一个后继事件Vk的最迟发生时间,dut()表示边上的权,s表示Vj顶点的所有出边的集合,则AOE网中每个事件Vj (0≤j≤n-1)的最迟发生时间:Vl [j]= Ve [n- 1] (j = n- 1)min{ Vl [k]-dut()} (0≤j≤n-2, ∈s)按照此公式和逆拓扑有序计算出图AOE网中每个事件的最迟发生时间为:Vl [7] = Ve [7] = 10Vl [6] = Vl [7] - dut( ) = 10-4= 6Vl [5] = Vl [7] -dut(
) = 10-3= 7Vl [4] = Vl [5] -dut(
) = 7-1=6Vl [3] = min{ Vl [4] -dut(
), Vl [6] -dut(
)}= min{ 6 - 1,6-3} = 3Vl [2] = min{ Vl [4] -dut(
), Vl [5] -dut(
)}= min{ 6 - 2,7-4} = 3Vl [l] = min{ Vl [2] -dut(), Vl [3]-dut( ), Vl [4] -dut()} = min{3-3,3-2,6-6}= 05.根据AOE网中每个事件的最早发生时间和最迟发生时间计算出每个活动的最早开始时间和最迟开始时间。
设事件Vj的最早发生时间为Ve[j],它的一个后继事件Vk的最迟发生时间为Vl [k],则边上的活动aj的最早开始时间e[i]和最迟开始时间l[i]的计算公式重新列出如下:e[i]= Ve[j]l[i]= Vl [k]-dut()
根据此计算公式可计算出AOE网中每一个活动aj的最早开始时间e[i],最迟开始时间l[i]和开始时间余量l[i]-e[i]。
列出图6-27中每一活动的这三个时间。ai a1 a2 a3 a4 a5 a6 a7 a8 a9 a10e(i) 0 0 0 3 3 0 2 6 7 5l(i) 0 0 1 3 4 0 3 6 7 6l(i)- e(i) 0 0 1 0 1 0 1 0 0 1
表中余量的说明:
有些活动的开始时间余量不为0,表明这些活动不在最早开始时间开始,至多向后拖延相应的开始时间余量所规定的时间开始也不会延误整个工程的进展。如对于活动a5,它最早可以从整个工程开工后的第3天开始,至多向后拖延1天,即从第4天开始。有些活动的开始时间余量为0,表明这些活动只能在最早开始时间开始,并且必须在持续时间内按时完成,否则将拖延整个工期。我们把开始时间余量为0的活动称为关键活动,由关键活动所形成的从源点到<
<div class="post_detail" id="content_05年下半年43题,4条关键路经:1-2-3-4-5-6-7-81-2-3-5-7-81-2-3-4-5-7-81-2-3-5-6-7-8长度都是18
对,我算的也是2条,不是答案的。估计是图中漏了数值,如果2-4之间的天数是2以上的数的话,答案就对了。
<div class="post_detail" id="content_05年上半年44题 如何解答
我按照一楼的解答方法 得出的关键路径是 0-1-3-4-6和0-1-2-5-4-6两条关键,可标准答案是0-1-2-4-6,如何得出的,请楼主解释。
能把图贴出来看看 就好了2005年下半年43题也是关键路径的题
是如何解答的 另它的关键线路径是哪4条,详细写出来?
我也下了,要回去好好研究研究~~~
可惜不能贴图,要能贴图更易理解
好详细啊,这个好像是离散数学里面学的
本帖标题:
本帖地址:
注意:本论坛的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的帖子违反希赛网论坛规则,将立即删除。
&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-2009_AOE_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
13页免费13页免费3页免费2页免费8页免费9页免费20页2下载券14页1下载券7页免费8页1下载券
喜欢此文档的还喜欢24页1下载券13页免费15页免费18页免费14页1下载券
2009_AOE|很&#8203;好&#8203;的&#8203;哈&#8203;工&#8203;大&#8203;的
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:310.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢数据结构试题库集及答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
216页2下载券239页2下载券19页2下载券33页免费32页免费77页2下载券35页1下载券35页2下载券9页免费25页1下载券
喜欢此文档的还喜欢40页1下载券100页1下载券21页1下载券33页免费55页免费
数据结构试题库集及答案|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢什么是关键路径?_百度知道
什么是关键路径?
关键路径如何求解?
在项目管理中,关键路径是指网络终端元素的元素的序列,该序列具有最长的总工期并决定了整个项目的最短完成时间。关键路径的工期决定了整个项目的工期。任何关键路径上的终端元素的延迟将直接影响项目的预期完成时间(例如在关键路径上没有浮动时间)。   一个项目可以有多个,并行的关键路径。另一个总工期比关键路径的总工期略少的一条并行路径被称为次关键路径。   最初,关键路径方法只考虑终端元素之间的逻辑依赖关系。关键链方法中增加了资源约束。   关键路径方法是由杜邦公司发明的。
其他类似问题
按默认排序
其他1条回答
在项目管理中,关键路径是指网络终端元素的元素的序列,该序列具有最长的总工期并决定了整个项目的最短完成时间。求关键路径的算法分析  (1) 求关键路径必须在拓扑排序的前提下进行,有环图不能求关键路径;   (2) 只有缩短关键活动的工期才有可能缩短工期;   (3) 若一个关键活动不在所有的关键路径上,减少它并不能减少工期;   (4) 只有在不改变关键路径的前提下,缩短关键活动才能缩短整个工期。探寻关键路径AOE网  用顶点表示事件,弧表示活动,弧上的权值表示活动持续的时间的有向图叫AOE(Activity On Edge Network)网 。AOE网常用于估算工程完成时间。例如:
图1图1 是一个网。其中有9个事件v1,v2,…,v9;11项活动a1,a2,…,a11。每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。如 v1表示整个工程开始,v9 表示整个工程结束。V5表示活动,a4和a5已经完成,活动a7和a8可以开始。与每个活动相联系的权表示完成该活动所需的时间。如活动a1需要6天时间可以完成。AOE 网具有的性质  只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始。   只有在进入某一顶点的各有向边所代表的活动都已经结束,该顶点所代表的事件才能发生。 表示实际工程计划的AOE网应该是无环的,并且存在唯一的入度过为0的开始顶点和唯一的出度为0的完成顶点。 2)最早发生时间和最晚发生时间的定义  可以采取如下步骤求得关键活动:   A、从开始顶点 v 1 出发 , 令 ve(1)=0, 按拓朴有序序列求其余各顶点的可能最早发生时间。   Ve(k)=max{ve(j) dut(&j,k&)} ( 1.1 ) j ∈ T 其中T是以顶点vk为尾的所有弧的头顶点的集合(2 ≤ k ≤ n) 。   如果得到的拓朴有序序列中顶点的个数小于网中顶点个数n,则说明网中有环,不能求出关键路径,算法结束。
表1B、从完成顶点 v n 出发,令vl(n)=ve(n),按逆拓朴有序求其余各顶点的允许的最晚发生时间:   vl(j)=min{vl(k)-dut(&j,k&)} k ∈ S 其中 S 是以顶点vj是头的所有弧的尾顶点集合(1 ≤ j ≤ n-1) 。   C、求每一项活动ai(1 ≤ i ≤ m)的最早开始时间e(i)=ve(j);最晚开始时间:   l(i)=vl(k)-dut(&j,k&) 若某条弧满足 e(i)=l(i) ,则它是关键活动。   对于图1所示的 AOE 网,按以上步骤的计算结果见表1,可得到a1 , a4 , a7 , a8 , a10 , a11 是关键活动。AOE 网的关键路径  
图2这时从开始顶点到达完成顶点的所有路径都是关键路径。一个AOE网的关键路径可以不止一条,如图7.21的AOE网中有二条关键路径,(v1, v2, v5, v7 , v9 ) 和 (v1 , v2 , v5 , v8 , v9 )它们的路径长度都是16 。如图2所示:AOE网研究的问题  (1) 完成整个工程至少需要多少时间;   (2) 哪些活动是影响工程的关键。   1956年,美国杜邦公司提出关键路径法,并于1957年首先用于1000万美元化工厂建设,工期比原计划缩短了4个月。杜邦公司在采用关键路径法的一年中,节省了100万美元。关键路径的几个术语  (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); ++   for(p=G.vertices[j].p;p=p-&nextarc)   {k=p&   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].p;p=p-&nextarc)   {k=p& dut=*(p-&info);   if(vl[k]-dut&vl[j]) vl[j]=vl[k]-   }   for(j=0;j&G.++j)   for(p=G.vertices[j].p;p=p-&nextarc)   {k=p& dut=*(p-&info);   ee=ve[j]; el=vl[k];   tag=(ee==el)?’*’:’’;   printf(j,kdut,ee,el,tag);   }   }
关键路径的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 求百分率的实际问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信