求解AOE网关键路径例题详解3页word
关键路径问题
1)将项目中的各项活动视为有一个时间属性的结点,从项目起点到终点进行排列;
2)用有方向的线段标出各结点的紧前活动和紧后活动的关系,使之成为一个有方向的网络图;
3)用正推法和逆推法计算出各个活动的最早开始时间,最晚开始时间,最早完工时间和最迟完工时间,并计算出各个活动的时差;
void seekkeyroot()//求关键路径的主函数
{
int projectnumber,activenumber,totaltime=0;
printf("\n");
printf("输入符合标准,欢迎进入求关键路径的系统!\n");
printf("\n");
printf("请输入这个项目的AOE-网的节点数: ");
{
int projectname;//顶点域
int id;//顶点的入度信息
edgenode *link; //边表头指针
}vexnode;
void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber)//创建图
{
CreateGraphic(Graphicmap,projectnumber,activenumber);//创建邻接图
SearchMapPath(Graphicmap,projectnumber,activenumber,totaltime);//求出最大路径,并打印出关键路径
printf("\n");
edgenode *p; //边表头的指针
totaltime=0; //存放整个工程的最短时间
《信息系统监理师》难点--关键路径
关键路径(CPM)AOE网(Activity On Edge network),即边表示活动的网络,与AOV网相对应的是。
它通常表示一个工程的计划或进度。
AOE网是一个有向带权图,图1中的:边:表示活动(子工程),边上的权:表示该活动的持续时间,即完成该活动所需要的时间;顶点:表示事件,每个事件是活动之间的转接点,即表示它的所有入边活动到此完成,所有出边活动从此开始。
其中有两个特殊的顶点(事件),一个称做源点,它表示整个工程的开始,亦即最早活动的起点,显然它只有出边,没有入边;另一个称做汇点,它表示整个工程的结束,亦即最后活动的终点,显然它只有入边,没有出边。
除这两个顶点外,其余顶点都既有人边,也有出边,是入边活动和出边活动的转接点。
在一个AOE网中,若包含有n个事件,通常令源点为第0个事件,汇点为第n-1个事件,其余事件的编号(即顶点序号)分别为1~n-2。
一个AOE网如图,该网中包含有10项活动和7个事件。
例如,边<1,2>表示活动a l,持续时间(即权值)为3,假定以天为单位,即a1需要3天完成,它以V1事件为起点,以V2事件为终点;边<2,5>和<2,4>分别表示活动a4和a5,它们的持续时间分别为4天和2天,它们均以V2事件为起点,以V5和V4事件为终点。
该网中的源点和汇点分别为第1个事件V1和最后一个事件V7,它们分别表示整个工程的开始和结束。
对于一个AOE网,待研究的问题是:(1)整个工程至少需要多长时间完成?(2)哪些活动是影响工程进度的关键?图1AOE网1.事件的最早发生时间与活动的最早开始时间的关系在AOE网中,一个顶点事件的发生或出现必须在它的所有入边活动(或称前驱活动)都完成之后,即只要有一个入边活动没有完成,该事件就不可能发生。
所以:一个事件的最早发生时间是它的所有入边活动,或者说最后一个入边活动刚完成的时间。
一个活动的开始必须在它的起点事件发生之后,也就是说,一个顶点事件没有发生时,它的所有出边活动(或称后继活动)都不可能开始,所以:一个活动的最早开始时间是它的起点事件的最早发生时间。
软件设计师重点难点-关键路径
软件设计师重点难点——关键路径关键路径这个知识点在软件设计师考试中,是一个难点。
说到关键路径这个概念,大家应该多少有些印象,可能都知道它是“最长路径”而不是“最短路径”,但说到它为什么是最长路径,提出这个概念的用意何在,它有什么应用,在计算机中关键路径是如何求的等问题却没有几个人能真正搞清楚,甚至书上给出了完整的例子,都有很多人看不懂。
下面我先会简单的说明基本概念,然后以一个例子,结合平时希赛教育学员的疑问,对这个知识点进行详细的分析。
在AOV网络中,如果边上的权表示完成该活动所需的时间,则称这样的AOV为AOE 网络。
例如,图1表示一个具有10个活动的某个工程的AOE网络。
图中有7个顶点,分别表示事件1~7,其中1表示工程开始状态,7表示工程结束状态,边上的权表示完成该活动所需的时间。
下面我们来理解一下关键路径的思想,图1虽节点不多,但是为了让问题变得更为简单、直观,我们画另一个AOE网络,如图2所示。
从图2中我们可以看出,关键路路径实际上是从源点到目的地的最长路径。
为什么是最长路径呢?因为图中的某些事件是可以并发执行的。
如图2所示,当到达V1后,可以同时往V2,V3,V4三个方向走,而V2,V3,V4都有到Vk的路径,且长度都为1,并且Vk 是终点,则关键路径是V1->V2->Vk。
因为这条路径最长,只要这条路径到目的地Vk时其他的都已经到达Vk。
而在这条关键路径上的活动a2,a5称为关键活动。
为了找出给定的AOE网络的关键活动,从而找出关键路径,先定义几个重要的量:V e(j)、Vl(j) :顶点j事件最早、最迟发生时间。
e(i)、l(i):活动i最早、最迟开始时间。
从源点V1到某顶点Vj的最长路径长度称为事件Vj的最早发生时间,记为Ve(j)。
Ve(j)也是以Vj为起点的出边<Vj,Vk>所表示的活动ai的最早开始时间e(i)。
在不推迟整个工程完成的前提下,一个事件Vj允许的最迟发生时间记为Vl(j)。
关于AOE网中关键路径求解算法的研究
l 相关概念
在 A E网 中有 些活 动可 以并行 地进 行 , 以完 O 所
第三步 , A E网所有活动的最早开始时间 e 求 O 。
如 果活 动 a 由 < , 表 示 , 用公 式 ( ) 解 : () k> 利 3求
e i =v() ( ) ej () 3
V() M x v() d ti ) , 中 2<= ej = a { i + u(, }其 e <
=n () 1
第 二 步 , A E 网所 有 时 间 的最 迟 发 生 时 间 求 O v。利用 公式 ( ) v( )= v( ) l 2 从 ln e n 开始 向后递推 V()= n{f()一dti ) , 中 1< =i 1i Mi e u(, }其 <
第六步 , 找出所有 z e 0的关键路径。 —=
作者简 介 : 常友渠( 99一) 讲师 , 士学位 , 17 , 硕 主要研究方 向: 计算机应用 。
3 8
重 庆 电 力 高 等 专 科 学 校 学 报
第1 5卷
22 基于 P 阵的求解方法 . 矩
基于 P 矩阵的求关键路径的算法 : 第 一 步 , 造 图 G 的 /阶 P邻 接 矩 阵 M。 构 7 , = ( , o) 其中, 如果 邻接 v, , ( )>, j口 =< L i j 否则 0= 0的值 ; , 其中 L i 的值为 到 边上的权 ; () j 第 二步 , 据 构 造 : 根 将 中所 有 路删 去
【 关键词】 O A E网; 关键路径; 算法 ; 广度优先搜索遍历(F ) B S 【 中图分类号]P 1.2 T 311 【 文献标识码】 A 【 文章编号】08 02 2l) 1 O7 10— 3 (000 _ 3 3 8 o
(整理)AOE关键路径.
显然,对于关键活动而言,e(i)= l(i)。对于非关键活动,l(i)-e(i)的值是该工程的期限余量,在此范围内的适度延误不会影响整个工程的工期。
一个活动ai的最晚开始时间l(i)和最早开始时间e(i)的差值l(i)-e(i)是该活动完成的时间余量。它是在不增加完成整个工程所需的总时间的情况下,活动ai可以拖延的时间。当一活动的时间余量为零时,说明该活动必须如期完成,否则就会拖延整个工程的进度。所以称l(i)-e(i)=0,即l(i)=e(i)时的ai是关键活动。
(4)根据各顶点的ve和vl值,求每条弧(活动)ai的最早开始时间e(i)和最迟开始时间l(i)。
(5)找出e(i)=l(i)的活动,则为关键活动。由关键活动形成的由源点到汇点的每一条路径就是关键路径,关键路径有可能不止一条。
三、关键路径算法的实现
由于每个事件的最早发生时间ve(i)和vl(i)要在拓扑序列的基础上进行计算,所以关键路径算法的实现要基于拓扑排序算法,我们仍采用邻接表做有向图的存储结构。
if(vl[k]<vl[j]-p->weight) vl[k]= vl[j]-p->weight;
(6)从源点开始,对于每个顶点i,用指针p依次指向i的每个邻接顶点,取得每个顶点的序号j=p->adjvex,分别计算活动<vi,vj>的最早发生时间和最迟发生时间e和l。
e=ve[i];l=vl[j]-p->weight;
图6.22一个AOE网
和AOV-网不同,对AOE-网有待研究的问题是:
(1)完成整项工程至少需要多少时间?
(2)哪些活动是影响工程进度的关键?
由于在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度(这里所说的路径长度是指路径上各活动持续时间之和,不是路径上弧的数目)。路径长度最长的路径叫做关键路径(Critical Path)。假设开始点是v0,从v0到vi的最长路径长度叫做事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。我们用e(i)表示活动ai的最早开始时间。还可以定义一个活动的最迟开始时间l(i),这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。两者之差l(i)-e(i)意味着完成活动ai的时间余量。我们把l(i)=e(i)的活动叫做关键活动。显然,关键路径上的所有活动都是关键活动,因此提前完成非关键活动并不能加快工程的进度。因此,分析关键路径的目的是辨别哪些是关键活动,以便争取提高关键活动的工效,缩短整个工期。
数据结构程序设计实验~AOE图的关键路径
数据结构课程设计报告专业网络工程班级姓名学号指导老师评分计算AOE网的关键路径AOE网即边表示活动的网络。
通常,可用AOE网来估算工程计划的完成时间。
如下所示的AOE网包括11项活动,9个事件,每个事件都有所需的完成时间。
我们现在要解决的是:(1)完成整项工程至少需要多少时间(最短时间);(2)哪些活动是影响工程进度的关键(关键活动)。
用e(i)表示活动最早开始时间,l(i)表示活动的最迟开始时间,则l(i)-e(i)为完成该活动的时间余量。
对于本例列表如下:下图就是上述AOE网的关键路径:请编程完成下列工作:1、输入:(1)顶点的信息和入度;(2)AOE网的边(始点、终点和权值)。
2、输出:(1) AOE网的邻接表(按“顶点入度:—>顶点权值”的格式输出)如a 0:-->4 5-->3 4-->2 6(2)输出关键活动每行所显示的分别为开始事件、结束事件、最早开始时间、最迟开始时间和完成活动的时间余量:当l(i)-e(i)=0时,在该行注明为关键活动。
如:a b 0 0 0 关键活动源程序#include<stdio.h>#include<stdlib.h>#include<iomanip.h>#include <process.h>//#define PROJECTNUMBER 9//10//#define PLANNUMBER 11//13typedef struct node{int adjvex;int dut;struct node *next;}edgenode;typedef struct{int projectname;int id;edgenode *link;}vexnode;//vexnode Graphicmap[PROJECTNUMBER];void CreateGraphic(vexnode* Graphicmap,int projectnumber,int activenumber){int begin,end,duttem;edgenode *p;for(int i=0;i<projectnumber;i++){Graphicmap[i].projectname=i;Graphicmap[i].id =0;Graphicmap[i].link =NULL;}printf("某项目的开始到结束在图中的节点输入<vi,vj,dut>\n");printf("如:3,4,9 回车表示第三节点到第四节点之间的活动用了9个单位时间\n"); for(int k=0;k<activenumber;k++){scanf("%d,%d,%d",&begin,&end,&duttem);p=(edgenode*)malloc(sizeof(edgenode));p->adjvex =end-1;p->dut =duttem;Graphicmap[end-1].id ++;p->next =Graphicmap[begin-1].link ;Graphicmap[begin-1].link =p;}}int SearchMapPath(vexnode* Graphicmap,int projectnumber,int activenumber,int& totaltime){int i,j,k,m=0;int front=-1,rear=-1;int* topologystack=(int*)malloc(projectnumber*sizeof(int));//用来保存拓扑排列int* vl=(int*)malloc(projectnumber*sizeof(int));//用来表示在不推迟整个工程的前提下,VJ允许最迟发生的时间int* ve=(int*)malloc(projectnumber*sizeof(int));//用来表示Vj最早发生时间int* l=(int*)malloc(activenumber*sizeof(int));//用来表示活动Ai最迟完成开始时间 int* e=(int*)malloc(activenumber*sizeof(int));//表示活动最早开始时间edgenode *p;totaltime=0;for(i=0;i<projectnumber;i++) ve[i]=0;for(i=0;i<projectnumber;i++){if(Graphicmap[i].id==0){topologystack[++rear]=i;m++;}}while(front!=rear){front++;j=topologystack[front];m++;p=Graphicmap[j].link ;while(p){k=p->adjvex ;Graphicmap[k].id --;if(ve[j]+p->dut >ve[k])ve[k]=ve[j]+p->dut ;if(Graphicmap[k].id ==0)topologystack[++rear]=k;p=p->next ;}}if(m<projectnumber){printf("\n本程序所建立的图有回路不可计算出关键路径\n");printf("将退出本程序\n");return 0;}totaltime=ve[projectnumber-1];for(i=0;i<projectnumber;i++)vl[i]=totaltime;for(i=projectnumber-2;i>=0;i--){j=topologystack[i];p=Graphicmap[j].link ;while(p){k=p->adjvex ;if((vl[k]-p->dut )<vl[j])vl[j]=vl[k]-p->dut ;p=p->next ;}}i=0;printf("| 起点 | 终点 | 最早开始时间 | 最迟完成时间 | 差值 | 备注 |\n");for(j=0;j<projectnumber;j++){p=Graphicmap[j].link;while(p){k=p->adjvex ;e[++i]=ve[j];l[i]=vl[k]-p->dut;printf("| %4d | %4d | %4d | %4d | %4d |",Graphic map[j].projectname +1,Graphicmap[k].projectname +1,e[i],l[i],l[i]-e[i]);if(l[i]==e[i])printf(" 关键活动 |");printf("\n");p=p->next ;}}return 1;}void seekkeyroot(){int projectnumber,activenumber,totaltime=0;system("cls");printf("请输入这个工程的化成图形的节点数:");scanf("%d",&projectnumber);printf("请输入这个工程的活动个数:");scanf("%d",&activenumber);vexnode* Graphicmap=(vexnode*)malloc(projectnumber*sizeof(vexnode)); CreateGraphic(Graphicmap,projectnumber,activenumber);SearchMapPath(Graphicmap,projectnumber,activenumber,totaltime);printf("整个工程所用的最短时间为:%d个单位时间\n",totaltime);system("pause");}int main(){char ch;for(;;){do{system("cls");printf("| 欢迎进入求关键路径算法程序 |");for(int i=0;i<80;i++)printf("*");printf("%s","(S)tart开始输入工程的节点数据并求出关键路径\n"); printf("%s","(E)xit退出\n");printf("%s","请输入选择:");scanf("%c",&ch);ch=toupper(ch);}while(ch!='S'&&ch!='E');switch(ch){case'S':seekkeyroot(); break; case'E':return 1; }}}。
关键路径AOE网及其如何求关键路径步骤
关键路径AOE网及其如何求关键路径步骤一、关键路径(一)AOE网在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销(如完成活动所需的时间),称之为用边表示活动的网络,简称AOE网(Activity On Edge NetWork)AOE⽹具有以下两个性质:①只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始;②只有在进入某顶点的各有向边所代表的活动都已结束时,该顶点所代表的事件才能发生。
另外,有些活动是可以并行进行的在AOE网中仅有一个入度为0的顶点,称为开始顶点(源点),它表示整个工程的开始;也仅有一个出度为0的顶点,称为结束顶点(汇点),它表示整个工程的结束。
(二)关键路径从源点到汇点的有向路径可能有多条,所有路径中,具有最大路径长度的路径称为关键路径,⽽把关键路径上的活动称为关键活动完成整个工程的最短时间就是关键路径的长度,若关键活动不能按时完成,则整个工程的完成时间就会延迟。
活动ai的时间余量d(i)=l(i)-e(i),表⽰在不增加完成整个工程所需总时间的情况下,活动ai 可以拖延的时间若一个活动的时间余量为零,则说明该活动必须要如期完成,d(i)=0即l(i)=e(i)的活动ai是关键活动由关键活动组成的路径就是关键路径(三)求关键路径的步骤(四)求所有事件的最早发生时间1.求所有事件的最早发生时间ve()(五)求所有事件的最迟发生时间1.求所有事件的最迟发生时间vl()1.求所有活动的最早发生时间e()1.求所有活动的最迟发生时间l()(八)求所有活动的时间余量(九)关键活动、关键路径的特性若关键活动耗时增加,则整个工程的工期将增长缩短关键活动的时间,可以缩短整个工程的工期当缩短到一定程度时,关键活动可能会变成非关键活动可能有多条关键路径,只提高⼀条关键路径上的关键活动速度并不能缩短整个工程的工期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短工期的目的。
关键路径AOE介绍
10 0
2018/11/5 2018/11/5
2018/10/31 2018/11/1
15 2018/11/15 1 2018/11/16
2018/11/16 2018/11/20
8 2018/11/24 4 2018/11/28
2018/10/26 A3
2018/10/31 B4
2018/11/16 C3
数据挖掘 数学建模 智能分析
项目关键路径分析
1
关键路径解决的问题 关键路径法用于在进度模型中估算项目最短工期,确定逻辑网络路径的进度灵活 性大小。这种进度网络分析技术在不考虑任何资源限制的情况下,沿进度网络路 径使用顺推与逆推法,计算出所有活动的最早开始、最早结束、最晚开始和最晚 完成日期。 项目的关键路径说明,缩短项目的非关键路径的周期无法缩短项目的周期。只有 有效的缩短关键路径周期才可以缩短项目的周期。
9
没有计划开始时间下的情况
活动名称 项目准备 需求1 需求2 需求3 开发1 开发2 开发3 开发4 测试1 测试2 测试3 版本发布1 版本发布2 现场实施
活动ID S A1 A2 A3 B1 B2 B3 B4 C1 C2 C3 D1 D2 E
2 6 4 10 16 13 12 15 10 11 8 12 14 14
2018/10/26 A3
2018/10/31 B4
2018/11/16 C3
8
项目关键路径
项目关键路径为S->A2->B3->C2->D2->E. 说明: 1、如果活动C2的计划开始时间提前1天,那么整个项目可以提前一天完成,也就是说2018/10/23开始至 2018/12/27结束,历史63天。 2、非关键路径可以在浮动范围内完成就可以。
AOE网中求取关键路径的一种新算法
图1
图2
结点
v1 v2 v3 v4 v5 v6 v7 v8 S
表1 从 v 到各结点最短路径的求解过程
0
i =1 3 7 5 ∪ { v1 }
得出源点到汇点的最短路径长度为 16, 通过回溯 前驱结点分别记录两条路径 v → v → v → v → v 和 此两条路径即为所有原 AOE v →v →v →v →v ; 网的关键路径, 如图 3, 每条路径都穿程 4 条边, 所以 关键路径长度为 e·W - D = 4·9 - 16 = 20 。这里特 别需要指出, 正常情况下, 汇点的最短路径一定是所 有算得结点最短路径长度中的极大值。如果汇点的 最短路径不是在最后一次循环计算得出或者不是所 有结点最短路径长度中的极大值的话, 则说明该 AOE 网存在异常, 并非一个合理工程施工的进度表述。
谢㊀ 科㊀ 丁皓明㊀
㊀ AOE
网中求取关键路径的一种新算法
AOE
网中求取关键路径的一种新算法
谢㊀ 科, 丁皓明
( 阿坝师范学院㊀ 数学与计算机科学学院,四川㊀ 汶川㊀
623002
)
摘要: 基于求解单源最短路径问题的 Dijkstra 算法, 提出在 AOE 网络中求取关键路径的一种新算法。该算法易 于理解, 适合在“数据结构与算法”课程教学改革中使用。 ㊀ ㊀ 关键词: AOE 网; 最短路径; 关键路径; 教学改革 ㊀ ㊀ 中图分类号: TP393㊀ ㊀ 文献标识码: A㊀ ㊀ 文章编号: 2096 - 1707 ( 2017 ) 03 - 0121 - 02
㊀ ㊀
S ∪ { vj } 3 V - S ( min D [ k ] D [ j ] + v j v k ) 4 2 3
关键路径算法
关键路径算法相关概念: (1)AOE (Activity On Edges)⽹络如果在⽆有向环的带权有向图中⽤有向边表⽰⼀个⼯程中的各项活动(Activity),⽤边上的权值表⽰活动的持续时间(Duration),⽤顶点表⽰事件(Event),则这样的有向图叫做⽤边表⽰活动的⽹络,简称AOE (Activity On Edges)⽹络。
AOE ⽹是⼀个带权的有向⽆环图。
AOE⽹络在某些⼯程估算⽅⾯⾮常有⽤。
例如,可以使⼈们了解: a、完成整个⼯程⾄少需要多少时间(假设⽹络中没有环)? b、为缩短完成⼯程所需的时间, 应当加快哪些活动? (2)关键路径(Critical Path) 在AOE⽹络中, 有些活动顺序进⾏,有些活动并⾏进⾏。
从源点到各个顶点,以⾄从源点到汇点的有向路径可能不⽌⼀条。
这些路径的长度也可能不同。
完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,整个⼯程才算完成。
因此,完成整个⼯程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和。
这条路径长度最长的路径就叫做关键路径(Critical Path)。
(3)由于实际⼯程只有⼀个开始点和⼀个结束点,因此AOE⽹存在唯⼀的⼊度为0的开始点(⼜称源点)和唯⼀的出度为0的结束点(⼜称汇点)参数定义: (1)事件的最早发⽣时间 etv(earliest time of vertex):即顶点V k的最早发⽣时间。
(2)事件的最晚发⽣时间 ltv(latest time of vertex):即顶点V k的最晚发⽣时间,也就是每个顶点对应的事件最晚需要开始的时间,超出此事件将会延误整个⼯期。
(3)活动的最早开⼯时间 ete(earliest time of edge):即弧ak的最早发⽣时间。
(4)活动的最晚开⼯时间 lte(latest time of edge):即弧ak的最晚发⽣时间,也就是不推迟⼯期的最晚开⼯时间。
AOE网和关键路径试题实例解析
AOE网和关键路径AOE网(Activity On Edge Network)是一个带权的有向无环图。
其中用顶点表示事件,弧表示活动,权值表示两个活动持续的时间。
AOE网是以边表示活动的网。
关键路径:AOE网中从起点至终点最长的路径。
关键路径上的活动均为关键活动。
最早开始时间:在关键路径上,从开始到该任务的最早执行的时间,取最大值最晚开始时间:关键路径的总时间-反向得出该任务的时间注意:关键路径不一定只有一条松弛时间:不影响完工前提下可能被推迟完成的最大时间松弛时间=关键路径的总时间-包含该任务的关键路径花的时间松弛时间=最晚开始时间-最早开始时间计算完成项目的最少时间:计算关键路径试题:1、下图所示的AOE网表示一项包含8个活动的工程。
活动d的最早开始时间和最迟开始时间分别是()A、3和7B、12和12C、12和14D、15和15求AOE网的关键路径的步骤如下:解析:选C2、某软件项目的活动图如下图所示,其中顶点表示项目里程碑,链接顶点的边表示包含的活动,变色数字表示活动的持续时间(天)。
完成该项目的最少时间为(17)天。
由于某种原因,现在需要同一个开发人员完成BC和BD,则完成该项目的最少时间为(18)天。
(17) A.11 B.18 C.20 D.21(18) A.11 B.18 C.20 D.21【答案】B D【解析】关键路径为ABCEFJ 和ABDGFJ ,18天。
BC持续时间3天,BD持续时间2天,由一天完成,则可以把BC持续时间作为5天,BD持续时间也为5天,则关键路径为ABDGFJ,21天3、某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天),则完成该项目的最少时间为(17)天。
活动BD 和HK 最早可以从第(18)天开始。
(活动AB、AE 和AC 最早从第1 天开始)(17) A.17 B.18 C.19 D.20(18) A.3 和10 B.4 和11 C.3 和9 D.4 和10【答案】D B【解析】因为网络图是从0开始算的,按题目要求活动AB从第1天开始的话,就是1、2、3,活动BD就是第4天开始,相应的活动HK就是第11天开始。
AOE网与关键路径简介
AOE⽹与关键路径简介前⾯我们说过的主要是为解决⼀个⼯程能否顺序进⾏的问题,但有时我们还需要解决⼯程完成需要的最短时间问题。
如果我们要对⼀个流程图获得最短时间,就必须要分析它们的拓扑关系,并且找到当中最关键的流程,这个流程的时间就是最短时间。
在前⾯讲了AOV⽹的基础上,来介绍⼀个新的概念。
在⼀个表⽰⼯程的带权有向图中,⽤顶点表⽰事件,⽤有向边表⽰活动,⽤边上的权值表⽰活动的持续时间,这种有向图的边表⽰活动的⽹,称之为AOE⽹(Activity On edge Network)。
由于⼀个⼯程,总有⼀个开始,⼀个结束,在正常情况下,AOE⽹只有⼀个源点⼀个汇点。
既然AOE⽹是表⽰⼯程流程的,所以就具有明显的⼯程属性。
只有在某顶点代表的事件发⽣后,从该顶点出发的各活动才能开始。
只有在进⼊某顶点的各活动都已经结束,该顶点代表的事件才能发⽣。
尽管AOV⽹和AOE⽹都是⽤来对⼯程建模的,但它们还是有很⼤的区别,主要体现在AOV⽹是顶点表⽰活动的⽹,它只描述活动之间的制约关系,⽽AOE⽹是⽤边表⽰活动的⽹,边上的权值表⽰活动持续的时间,如图7-9-3所⽰两图的对⽐。
因此,AOE⽹是要建⽴在活动之间制约关系没有⽭盾的基础之上,再来分析完成整个⼯程需要多少时间,或者为缩短完成⼯程所需时间,应当加快哪些活动等问题。
我们把路径上各个活动所持续的时间之后称为路径长度,从源点到汇点具有最⼤长度的路径叫关键路径,在关键路径上完成的活动叫关键活动。
显然就图7-9-3的AOE⽹⽽⾔,开始->发动机完成->部件集中到位->组装完成就是关键路径,路径长度为5.5。
如果我们需要缩短整个⼯期,去改进轮⼦的⽣产效率,哪怕改动成0.1也⽆益于整个⼯期的变化,只有缩短关键路径上的关键活动时间才才可以减少整个⼯期长度。
例如如果发动机制造缩短为2.5,整车组装缩短为1.5,那么关键路径就为4.5,整整缩短了⼀天的时间。
如果某项活动的最早开始时间和最晚开始时间⼀样,表⽰中间没有空隙,则此项活动就为关键活动。
关键路径法
关键路径算法
(1) 输入e条有向边<j,k>,建立AOE网络的存储 结构;
(2) 从源点出发,令ev[1] =0,按拓扑排序的序 列求其余各顶点的最早出现时间ev[i](2≤i≤n)。 若拓扑排序序列中的顶点个数小于网络中的顶 点数n,则说明网络中存在环路,算法中止执 行;否则执行(3);
ev[k]和Lv[k]可以采用下面的递推公式计算: (1) 向汇点递推
由源点的ev[1]=0开始,利用公式:
式向中汇p点表的示方所向有递指推向,顶可点逐的个边求的出集各合顶,点如的图ev 。 7.2意义为:从指向顶点Vk的各边的活动中 取最晚完成的一个活动的完成时间作为Vk的最 早出现时间ev[k]。
数据结构
数据结构
第七章 图
第七章 图
关键路径法
关键路径法是采用边表示活动(Activity On Edge)的网络,简称为AOE网络。
AOE网络是一个带权的有向无环路图,其中, 每个顶点代表一个事件(Event),事件说明某 些活动或某一项活动的完成,即阶段性的结 果。
离开某顶点的各条边所代表的活动,只有在 该顶点对应的事件出现后才能开始。
完成整个工程所需的时间取决于从开始点到 结束点的最长路径长度,此长度最大的路径 叫做关键路径。
分析关键路径的目的是辨别哪些是关键活动, 以便争取提高关键活动的效率,缩短整个工 期。
在描述关键路径的算法时,设活动ai由弧 <j,k>表示,要确定如下几个相关的量:
(1) 事件Vj的最早出现时间和活动的最早开始 时间:从源点V1到某顶点Vj的最长路径长度 叫作事件j的最早出现时间,表示成ev[j]。顶 点Vj的最早出现时间ev[j]决定了从Vj指出的 各条边所代表活动的最早开始时间,因为事 件j不出现,它后面的各项活动就不能开始。 我们以e[i]表示活动ai的最早开始时间。显然 e[i]= ev[j] 。
关键路径.
V4
V6 V5 V8 V7
13
20 17 22 19
Vl(i)
24
v9
24
3、据ve,vl的值求活动的e(s)、l (s),找e(s)=l(s)的活动
(1)可由公式 e(i)=ve(j) ai的 l(i)=vl(k)-dut(〈j,k〉) 求得 。 示意图: ai=? j k
2
7
v7 v8 v5 v6 v4 v2 v3 bottom v9 v1
经过拓扑排序(借助stack 1)得到如下拓扑 序列: v1,v3,v2,v4,v6,v5,v8,v7,v9
而拓扑逆序(借助stack 2)为: v9,v7,v8,v5,v6,v4,v2,v3,v1
2、按拓扑有序求其余各顶点的ve(i)
(3)关键活动:关键路径上的所有活动。 例如: 上述AOE网中,v1为源点,v9为汇点; 〈v1,v3,v4,v5,v7,v9〉为一条关键 路径(不唯一但长度一定); a1,a3,a4为关键活动。 (4)最早发生时间:AOE网中,从源点v1 到任意vi的最长路径长度,叫事件vi的最 早发生时间。由该时间决定了所有以vi为 尾的弧所表示的活动的最早开始时间。
^
1 2 3 4
1 2 3 4
2 4 4 5
3
^
stack top
1
2
5 6
^ 7 ^
5
6
5
6
7
9 ^
8
^
7
8
7
8
9
9
^
^
9
9
^
bottom
V1
其中stack 1用于拓扑排序,2用于拓扑逆序
1 2
关键线路计算步骤标准答题
关键线路计算步骤标准答题
关键线路计算是指在网络分析中确定网络中的关键路径或关键线路,以便更好地安排资源和时间。
下面是关键线路计算的标准步骤:
1. 确定活动,首先,需要列出所有的活动或任务,以及它们之间的先后顺序和依赖关系。
这些活动可以用网络图或者项目进度表来表示。
2. 确定活动持续时间,对于每个活动,需要估算或者确定其持续时间。
这可以通过历史数据、专家意见或者其他方法来获得。
3. 绘制网络图,将活动以节点的形式表示在图表上,并用箭头表示它们之间的依赖关系,形成网络图。
4. 计算最早开始时间(ES)和最迟开始时间(LS),从网络图的起点开始,计算每个活动的最早开始时间和最迟开始时间。
最早开始时间是指在没有耽误整个项目进度的情况下,活动可以开始的最早时间;最迟开始时间是指在延迟整个项目进度的情况下,活动必须开始的最迟时间。
5. 计算最早完成时间(EF)和最迟完成时间(LF),根据最早
开始时间和持续时间计算每个活动的最早完成时间和最迟完成时间。
6. 计算活动的总时差(Slack),通过比较最早开始时间和最
迟开始时间,以及最早完成时间和最迟完成时间,计算每个活动的
总时差。
时差为零的活动即为关键活动,它们构成了关键路径或者
关键线路。
7. 确定关键路径,将所有的关键活动连接起来,形成关键路径
或者关键线路。
这条路径上的活动决定了整个项目的最短完成时间。
以上就是关键线路计算的标准步骤,通过这些步骤可以有效地
确定项目的关键路径,从而更好地安排资源和时间。
基于AOE网的工作流程主关键路径的研究
由于在 A E网 中有些活动是可以并行地进行 , 以完成 O 所 任务的最短时间从开始点到完成点的最长路径 的长度 , 路径 长度最长的路 径叫做关键路径 (r t c lP t ) C i i a a h 。 在实 际应用 当中, 计划人 员完成工 作流建模 后, 写模 填
A src : ̄ d l n s i p r a t p r s o o k l w m n g m n y t m ( F s .W M r v d s t o s o r - b t t o e ig i m o tn a t f w rf o a a e et s se w M ) F S p o i e o l f c e a
fl ow.
Ke wod y rs:W r f o A E N t;C i i a a h o k l wj O e rt c l P t
0 引 言
了组成工作流 的活动之间的连接关系用 。 基于活动 网络 的工作 流建模 的主 要任务 是确定工 作流 程的关键路径 。 求解关键路径 的算法 中, 在 重点考虑了与、 或
ati g n wo kfl w od s。 wi wh ch act vi -b ed r o m el th i i ty as wo fl w rk o di gr i d aw a am s r n, s a to pr en wo kfl w od s o s es t r o m el v u is all y. Thi a s rti le c ac or n t th AO n o a iv ty ba d c di g o e E et f ct i — se wo kfl w i ra t p se t he r o d ag m o re n t wo kfl w r o mod s, t e ri c p h ol ti n el h c ti al at s u o alg ri h o t m i AO n E n a li i t e ri c p h et pp es n h c ti al at so uti n l o of he t wo k— r
AOV网和关键路径
数据结构重读– AOV网和关键路径与AOV网对应的,还有一个AOE网,当然它也是有DAG(向无环图)。
AOE(Activity On Edge)网:顾名思义,用边表示活动的网。
与AOV不同,活动都表示在了边上,如下图所示:如上所示,共有11项活动(11条边),9个事件(9个顶点)。
整个工程只有一个开始点和一个完成点。
即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)。
(1) 关键路径:是从开始点到完成点的最长路径的长度。
路径的长度是边上活动耗费的时间。
(2) 最早发生时间:v1到vi的最长路径叫做vi的最早发生时间,用ei表示。
例如上图中,v5的最早发生时间是max(6+1, 4+1) = 7。
(3) 最迟开始时间:在不推迟整个工程完成的前提下,活动i最迟必须开始进行的时间,用l(i)表示。
l(i) – e(i)是活动的时间余量。
(4) 关键活动:l(i)=e(i)的活动称为关键活动。
关键路径上的活动都是关键活动。
提前完成非关键活动并不能加快工程进度(类似木桶效应)。
AOE网的主要活动就是识别出哪些是关键活动,以便争取提高关键活动的工效,缩短整个工期。
当然,如果AOE网发生了改变,那么原先的关键路径也会发生变化。
因此,只有在不改变挂件路径的情况下,提供关键活动的速度,才能对整体工程进度起到帮助作用。
求关键路径的算法求关键路径,就是要求e(i) = l(i)的事件(点)。
我们首先必须分别求出所有点的e(i)和l(i)。
由于ve和vl的递推公式必须在拓扑排序下有效,因此,先要求拓扑排序0、求拓扑排序(同时顺道求ve)要增设一个栈T记录拓扑有序序列,计算求得各个顶点的ve之后,从栈顶依次弹出栈,就可以倒序遍历,求vl了。
还要使用拓扑排序的那个入度为0的栈,可以每次Pop时候顺道记录下,最后cnt如果<g->nvexs,则表示有环。
1、求最早发生时间ve[]ve(0)=0开始递推ve(j) = max{ve{i}+dut(i, j)}2、求最晚发生时间vl[]从vl(n-1)=ve(n-1)开始倒推。
数据结构关键路径例题
数据结构关键路径例题10 题1. 有一个AOE 网,顶点表示事件,弧表示活动,弧上的权值表示活动的持续时间。
求该AOE 网的关键路径。
-首先计算每个事件的最早发生时间ve 和最晚发生时间vl,然后确定活动的最早开始时间e 和最晚开始时间l,e = ve(活动起点事件),l = vl(活动终点事件) -活动持续时间,当 e = l 时,该活动在关键路径上。
2. 给出一个复杂的AOE 网,其中包含多个并行的活动路径。
找出关键路径并分析其对项目进度的影响。
-同样按照计算事件时间和活动时间的方法确定关键路径,关键路径决定了项目的最短完成时间,任何关键活动的延迟都会导致整个项目的延迟。
3. 在一个AOE 网中,某些活动的持续时间可能会发生变化。
分析这种变化对关键路径的影响。
-当活动持续时间变化时,重新计算事件时间和活动时间,确定新的关键路径。
如果关键活动的持续时间增加,项目完成时间也会增加;如果非关键活动的持续时间增加,只要不超过其总时差,不会影响项目完成时间。
4. 有多个相互关联的AOE 网,代表不同的子项目。
求合并后的关键路径。
-将多个AOE 网合并为一个大的AOE 网,然后按照常规方法计算关键路径。
合并后的关键路径决定了整个项目组合的最短完成时间。
5. 给定一个AOE 网,其中某些活动有前置条件和后置条件。
求关键路径并考虑这些条件对项目进度的影响。
-在计算关键路径时,要考虑活动的先后顺序,确保前置活动完成后才能进行后置活动。
关键路径上的活动必须严格按照顺序执行,任何延误都会影响项目进度。
6. 在一个AOE 网中,增加一个新的活动。
求新的关键路径。
-将新活动加入到AOE 网中,重新计算事件时间和活动时间,确定新的关键路径。
新活动可能会改变关键路径,也可能不影响关键路径,具体取决于其在网中的位置和持续时间。
7. 已知一个AOE 网的关键路径长度,现在要缩短项目的完成时间。
确定哪些活动可以缩短以及缩短多少时间不会影响关键路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
☆求解AOE网关键路径例题
【例7-1】下表给出了某工程各工序之间的优先关系和各工序所需的时问(其中“一”表示无先驱工序),请完成以下各题:
(1) 画出相应的AOE网。
(2) 列出各事件的最早发生时间和最迟发生时间。
(3) 求出关键路径并指明完成该工程所需的最短时间。
【例题分析】
·试题考核AOE网和关键路径问题。
要求熟悉AOE网的概念和如何求关键路径的方法及步骤。
【例题解答】
(1) 根据表的数据,可得AOE网,如图所示。
(2) 所有事件的最早发生时间ve,如下所示:
ve(v1)= 0 ve(v2)=
3 ve(v3)= 2
ve(v4)= Max{ ve(v2)+2,ve(v3)+4}= 6
ve(v5)= ve(v2)+3 = 6
ve(v6)= Max{ ve(v3)+3,ve(v4)+2,ve(v5)+1}= 8
所有事件的最迟发生时间vl,如下所示:
vl(v6)= 8 vl(v5)=vl(v6)-1= 7 vl(v4)
=vl(v6)-2 = 6
vl(v3)= Min{ vl(v4)-4,vl(v6)-3}= 2
vl(v2)= Min{ vl(v4)-2,vl(v5)-3}= 4
vl(v1)= Min{ vl(v2)-3,vl(v3)-2}= 0
(3) 求所有活动的最早发生时间e、最迟发生时间l和时
间余量l-e。
e(A)=ve(v1)= 0 l(A)=vl(v2)-3= 1 l(A)
-e(A)= 1
e(B)=ve(v1)= 0 l(B)=vl(v3)-2= 0 l(B)
-e(B)= 0
e(C)=ve(v2)= 3 l(C)=vl(v4)-2= 4 l(C)
-e(C)= 1
e(D)=ve(v2)= 3 l(D)=vl(v5)-3= 4 l(D)
-e(D)= 1
e(E)=ve(v3)= 2 l(E)=vl(v4)-4= 2 l(E)
-e(E)= 0
e(F)=ve(v3)= 2 l(F)=vl(v6)-3= 5 l(F)
-e(F)= 3
e(G)=ve(v4)= 6 l(G)=vl(v6)-2= 6 l(G)
-e(G)= 0
e(H)=ve(v5)= 6 l(H)=vl(v6)-1= 7 l(H)
-e(H)= 1
所以,关键路径为:B、E、G。
完成该工程最少需要8天时间。
希望以上资料对你有所帮助,附励志名3条:
1、积金遗于子孙,子孙未必能守;积书于子孙,子孙未必能读。
不如
积阴德于冥冥之中,此乃万世传家之宝训也。
2、积德为产业,强胜于美宅良田。
3、能付出爱心就是福,能消除烦恼就是慧。