1. 程式人生 > >教你輕鬆計算AOE閘道器鍵路徑

教你輕鬆計算AOE閘道器鍵路徑

認識AOE網

  有向圖中,用頂點表示活動,用有向邊表示活動之間開始的先後順序,則稱這種有向圖為AOV網路;AOV網路可以反應任務完成的先後順序(拓撲排序)。

  在AOV網的邊上加上權值表示完成該活動所需的時間,則稱這樣的AOV網為AOE網,如下圖: 

  

  圖中,頂點表示事件(能被觸發,兩特徵屬性:最早發生時間Ve(j);最晚發生時間Vl(j)),邊表示活動(能被開始,兩特徵屬性:最早開始時間e(i);最晚開始時間l(i)),權表示活動持續時間,通常用AOE網來估算工程完成的時間

兩條原則:

  Ø  只有某頂點所代表的事件發生後,從該頂點出發的各活動才能開始

  Ø  只有進入某頂點的各活動都結束,該頂點所代表的事件才能發生

計算關鍵路徑

  首先,在AOE網中,從始點到終點具有最大路徑長度(該路徑上的各個活動所持續的時間之和)的路徑為關鍵路徑。

計算關鍵路徑,只需求出上面的四個特徵屬性,然後取e(i)=l(i)的邊即為關鍵路徑上的邊(關鍵路徑可能不止一條)。

  先來看看四個特徵屬性的含義:

  Ø Ve(j):是指從始點開始到頂點Vk的最大路徑長度

   計算技巧:

   (1)從前向後,取大值:直接前驅結點的Ve(j)+到達邊(指向頂點的邊)的權值,有多個值的取較大者

   (2)首結點Ve(j)已知,為0

  如上圖各頂點(事件)的Ve(j): (從V1開始)

  

  Ø  Vl(j):在不推遲整個工期的前提下,事件vk允許的最晚發生時間

   計算技巧:

   (1)從後向前,取小值:直接後繼結點的Vl(j) –發出邊(從頂點發出的邊)的權值,有多個值的取較小者;

   (2)終結點Vl(j)已知,等於它的Ve(j))

  如上圖各頂點(事件)的Vl(j): (從V7開始,它的最早、最晚發生時間相同,都為10):

  

  Ø  e(i): 若活動ai由弧<vk,vj>表示,則活動ai的最早開始時間應該等於事件vk的最早發生時間。因而,有:e[i]=ve[k];(即:邊(活動)的最早開始時間等於,它的發出

頂點的最早發生時間)

如上圖各邊(活動)的e(i):

  

  Ø  l(i): 若活動ai由弧<vk,vj>表示,則ai的最晚開始時間要保證事件vj的最遲發生時間不拖後。 因而有:l[i]=vl[j]-len<vk,vj>1(為邊(活動)的到達頂點的最晚發生時間減去邊的權值

如上圖各邊(活動)的l(i):

  

  至此已介紹完了四個特徵屬性的求法,也求出了上圖中邊的e(i)和l(i),取出e(i)=l(i)的邊為a1、a2、a4、a8、a9,即為關鍵路徑上的邊,所以關鍵路徑有兩條:a1 a4 a9和 a2 a8 a9

  

==========================================================================

第二個例子對比一下

   

(最早發生,從前往後算;最遲發生,從後往前算。)

總結

  求關鍵路徑,只需理解頂點(事件)和邊(活動)各自的兩個特徵屬性以及求法即可:

   Ø  先根據首結點的Ve(j)=0由前向後計算各頂點的最早發生時間

   Ø  再根據終結點的Vl(j)等於它的Ve(j)由後向前依次求解各頂點的最晚發生時間

   Ø  根據邊的e(i)等於它的發出頂點的Ve(j)計算各邊的最早開始時間(最早開始,對應最早發生)

   Ø  根據邊的l(i)等於它的到達頂點的Vl(j)減去邊的權值計算各邊的最晚開始時間(最晚開始,對應最晚發生)