java关键路径流程图_数据结构(五)图---关键路径

本文详细介绍了在Java中如何使用关键路径法(AOE网)解决工程流程的最短时间问题。AOE网是一种有向图,通过边上的权重表示活动的持续时间,目标是找到从源点到终点的最长路径,即关键路径。文章阐述了AOE网的概念、关键路径的定义,以及如何计算事件的最早和最晚发生时间,进而确定关键活动。此外,还提供了具体的算法实现步骤,包括拓扑排序和计算ete(活动最早开始时间)与lte(活动最晚开始时间)。
摘要由CSDN通过智能技术生成

一:定义

(一)最短时间

我们要对一个流程图获得最短时间,就要分析他们的拓扑关系,并且找到当中的最关键的流程,这个流程的时间就是最短时间

(二)AOE网(Activity On Edge Network)

在一个表示工程的带权有向图中,用到的表示时间,用有向边表示活动,用边上权值表示活动的持续时间,这种有向图的边表示活动的网,我们称之为AOE网

我们将AOE网中没有入边的顶点称为源点或始点,没有出边的顶点称为终点或者汇点

正常情况下,AOE网只有一个源点一个终点

例如下图AOE网,

v0为源点,表示整个工程的开始,v9为终点,表示这个工程的结束。

顶点v0,v1,....v9分别表示事件

弧,,...,都表示一个活动,用a0,a1,...,a12表示

81beb30bc5c02a4900e78ebf3630710d.png

补充:相比于AOV网

AOV中不在意边的权值,不局限一个源点和一个终点,关注的是是否构成环

AOE关注边的权值,来求得最短时间等信息,源点和终点都只有一个

(三)关键路径

路径上各个活动所持续的事件之和称为路径长度,从源点到终点具有最大长度的路径叫关键路径,在关键路径上的活动叫关键活动

f62950556d81ba3c5c1b97517b14c2f9.png

例如我们开始组装时候,我们就要等到前面的所有装备工作全部完成(按照最长路径来算),才能开始我们的组装任务。所以我们的关键路径需要是最大长度的路径

二:AOE和AOV(活动和事件|顶点与弧)

AOE网是表示工程流程的,所以它就具有明显的工程的特性。

只有在某顶点所表示的事件发生后,从该顶点出发的各活动才能开始。

只有在进入某顶点的各活动都已经结束,该顶点所代表的事件才能发生。

AOE与AOV对比

虽然都是用来对工程建模,但是还是有很大不同。主要体现在:

AOV网是顶点表示活动的网,他只描述活动之间的制约更新,

AOE网是用边表示活动的网,边上的权值表示活动持续的时间

AOE网是要建立在活动之间制约关系没有矛盾的基础之上,再来分析完成整个工程至少需要多少时间,或者为缩短完成工程所需时间,应该加快哪些活动等问题

df2dbec639ae5a65408807c38abddaf6.png

三:四个必要参数

在AOE网中顶点v表示时间,边e表示活动

(一)事件最早发生时间etv(earliest time of vertex)

即顶点Vk的最早发生时间

(二)事件最晚发生时间ltv(lastest time of vertex)

即顶点Vk的最晚发生时间,也就是每个顶点对应的事件最晚需要开始的事件,超出此事件将会延误整个工期

(三)活动的最早开工时间ete(earliest time of edge)

即弧ak的最早发生时间

(四)活动的最晚开工时间lte(lastest time if edge)

即弧的最晚发生时间,也就是不推迟工期的最晚开工时间

总结(重点):

我们可以由事件的最早发生时间和事件的最晚发生时间求出活动的最早和最晚开工时间。

由1,2可以求得3,4,然后在根据ete[k]是否与lte[k]相等来判断ak是否是关键活动

活动的最早开始时间和活动的最晚开始时间,若是相等,就意味着此活动是关键活动

四:案例推导

b1ab73050c94c5ad3c791d881fa1bce7.png

(一)etv从左向右推导

cf61fa2deb1ba2b2f4a98e6b8441f61a.png

其中P[k]表示所有到达顶点vk的弧的集合。比如P[1]就只有,P[4]就有,是所有以顶点vk为弧头的弧的集合

len是弧上的权值

例如:我们只推导v0-v4

372e2d514942afd6ab326fe3f0b3489c.png

etv[0]=0,因为k=0etv[1]=6,etv[1]=max{etv[i]+len},因为属于P[k],所以i=0,etv[i]=etv[0]+len=6etv[2]=4

--------------------------------------------------------------------上面可以看出来--------------------------------------------------------------------etv[4]的推导,我们先看他的P[k]弧的集合,有,两个,所以我们从{etv[1]+len,etv[2]+len}集合中选取最大的,就是etv[4]=etv[1]+len=7

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值