[數據結構筆記]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

最終算出各個頂點的最早和最遲發生時間如下

V ve(事件最早發生時間) vl(事件最遲發生事件)
A 0 0
B 2 2
C 5 5
D 4 4
E 10 10
F 13 13
G 7 7
H 12 14
I 13 16
J 18 18

有以上可以得出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

最終結果如下

a e(活動最早開始時間) l(活動最遲開始事件)
a1 0 0
a2 2 2
a3 2 2
a4 5 5
a5 2 9
a6 4 4
a7 10 10
a8 7 7
a9 10 12
a10 13 13
a11 7 10
a12 12 14
a13 13 16

找出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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章