[数据结构笔记]AOE网

AOE网

1.介绍
定义:在带权有向图中,以顶点表示事件,有向边表示活动,边上的权值表示完成该活动的开销,则称这种有向图为用边表示活动的网络,简称为AOE网(Activity On Edge Network)

性质:

  • 只有在某顶点所代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始
  • 只有在进入某一顶点的各有向边所代表的活动都已经结束时,该顶点所代表的事件才发生

2.几个词的解释
ps:事件是点,活动是边!!!

关键路径:
从源点到汇点的所有路径中,具有最长路径长度的路径,该路径上的活动成为关键活动(后面有用先记着)

事件V[k]的最早发生时间ve[k]:
从开始顶点V到V[k]的最长路径长度。

事件V[k]的最迟发生时间vl[k]:
不推迟整个工程完成的前提下,即保证它所指向的事件Vi在ve(i)时刻能够发生时,改事件最迟必须发生的事件。

活动a[i]的最早开始时间e[i]: 活动a[i]用边(V[k],V[j])表示

e[i]=ve[k]

活动a[i]的最迟开始时间l[i]:

l[i]=vl[j]-Weight(V[k],V[j])

一个活动a[i]的松弛时间:
d[i]=l[i]-e[i]或者d[i]=关键路径长度-包含a[i]活动的最长路径

3.计算
在这里插入图片描述
3.1 计算事件的最早和最迟发生时间
ve的计算方法为从前往后计算,取最大值,例如对于F,ve(F)=max{ve(B)+a5,ve(E)+a7,ve(G)+a8} ,只有一个的话就只取一个,多个的话,多个中取最大值

vl的计算方法为从后往前计算,首先另终点J的vl值为其ve,即vl(J)=ve(J)=18,然后多个中取最小值,例如对于B,vl(B)=min{vl(C)-a2,vl(F)-a5,vl(D)-a3}=2;若只有一个,例如对于H,vl(H)=vl(J)-a12=14

最终算出各个顶点的最早和最迟发生时间如下

Vve(事件最早发生时间)vl(事件最迟发生事件)
A00
B22
C55
D44
E1010
F1313
G77
H1214
I1316
J1818

有以上可以得出ve==vl的点即为关键路径上的事件,即A,B,C,D,E,F,G,J,则有以上点连接的边所代表的活动a1,a2,a3,a4,a6,a7,a8,a10疑似为关键活动
注意:
关键路径可能不只有一条,计算到这里只能得出关键路径上的事件,具体怎么走还等计算活动的最早和最迟开始时间,如果仅仅需要计算出关键路径,则只需计算几个疑似关键活动的最早和最迟发生时间,为了清楚,我们这里就把全部活动的都计算出来




3.2活动的最早和最迟开始时间
活动最早开始时间: 例如a1,为边(A,B),则a1=ve(A)=0;例如a2,为边(B,C),则a2=ve(B)=2

活动最晚开始时间:例如对于a1,为边(A,B),则a1=vl(B)-weight(a1)=2-2=0;例如a12,为边(H,J),则a12=vl(J)-weight(a12)=18-4=14

最终结果如下

ae(活动最早开始时间)l(活动最迟开始事件)
a100
a222
a322
a455
a529
a644
a71010
a877
a91012
a101313
a11710
a121214
a131316

找出e==l的活动ai,这里为a1,a2,a3,a4,a6,a7,a8,a10;经观察可发现这里有两条关键路径,分别为a1,a2,a4,a7,a10和a1,a3,a6,a8,a10



又比如问一个活动的松弛时间,即活动ai在不拖延总工程时间的情况下,该活动可以拖延的时间,有两种解法,比如问BF的松弛时间:
解1:BF=a5,所以松弛时间=l(a5)-e(a5)=7
解2:包含BF活动的最长路径为ABFJ,其长度为11,又因为关键路径长度为18,所以松弛时间为18-11=7

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值