在帶權有向圖中,以頂點表示時間,有向邊表示活動,邊上的權值表示完成該活動的開銷(如完成活動所需的時間),則稱這種有向圖為用邊表示活動的網絡,簡稱為AOE網。
①隻有在某頂點所代表的時間發生或,從該頂點出發的各有向邊所代表的活動才能開始。
②隻有在進入某一頂點的各有向邊所代表的活動都已經結束,該頂點所代表的時間才能發生。
在AOE網中僅有一個入度為0的頂點,稱為開始頂點(源點),它表示整個工程的開始。
網中也僅存在一個出度為0的頂點,稱為結束頂點(彙點),它表示整個工程的結束。
在AOE網中,有些活動是可以并行進行的。從源點到彙點的郵箱路徑可能有多條,并且這些路徑長度可能不同。完成不同路徑上的活動所需要的時間雖然不同,但是隻有所有路徑上的活動都完成了整個工程才能算是結束了。是以,從源點到灰頂的所有路徑中,具有最大路徑長度的路徑稱為關鍵路徑。把關鍵路徑上的活動稱為關鍵活動。
完成整個工程的最短時間就是關鍵路徑的長度,也就是關鍵路徑上個活動花費開銷的總和。這是因為關鍵活動影響了整個工程的時間,即如果關鍵路徑不能按時完成的話,整個工程的完成時間就會延長。是以隻要找到了關鍵活動,就找到了關鍵路徑,也就可以得出最短完成時間。
尋找關鍵活動時所用到的參量定義:
1、事件Vk的最早發生時間ve(k)
它是從開始頂點V到Vk的最長路徑長度,事件的最早發生時間決定了所有從Vk開始的活動能夠開工的最早時間。
ve(源點)=0
ve(k)=MAX{ve(j)+Weight(vj,vk)},Weight(vj,vk)表示<vj,vk>上的權值
注意:在計算ve(k)時,是按從前往後的順序來計算的。
2.時間Vk的最遲發生時間vl(k)
它是指在不推遲整個工程完成的前提下,即保證它所指向的事件vi在ve(i)時刻能夠發生時,該時間最遲必須發生的時間。
vl(彙點)=ve(彙點)
vl(j)=Min{vl(k)-Weight(vj,vk)},Weight(vj,vk)表示<vj,vk>上的權值
注意:在計算vl(k)時,是按從後往前的順序來計算的。
3.活動ai的最早開始時間
它是指該活動的起點所表示的事件最早發生時間。如果邊<vk,vj>表示活動ai,則有e(i)=ve(k)
4.活動ai的最遲開始時間
它是指該活動的終點所表示的事件最遲發生時間與該活動所需的時間之差。如果邊<vk,vj>表示活動ai,則有l(i)=vl(j)-Weight(vk,vj).
5.一個活動ai的最遲開始時間l(i)和其最早開始時間e(i)的差額d(i)=l(i)-e(i)
它是指活動完成的時間餘量,是在不增加完成整個工程所需的總時間的情況下,活動ai可以拖延的時間。如果一個活動的時間餘量為0時,說明該活動必須要如期完成,否則會拖延整個工程的進度,是以稱l(i)-e(i)=0,即l(i)=e(i)的活動ai是關鍵活動。
求關鍵路徑的算法步驟如下:
1)求AOE網中所有時間的最早發生時間ve().
2)求AOE網中所有時間的最遲發生時間vl().
3)求AOE網中所有活動的最早發生時間v().
4)求AOE網中所有活動的最遲發生時間l().
5)求AOE網中所有活動的差額d(),找出所有d()=0的活動構成關鍵路徑。
1)關鍵路徑上的所有活動都是關鍵路徑,它是決定整個工程的關鍵因素,是以可通過加快關鍵活動來縮短整個工程的工期。但也不能任意縮短關鍵活動,因為一旦縮短到一定程度,該關鍵活動可能變成非關鍵活動了。
2)網中的關鍵路徑并不唯一。且對于有幾條關鍵路徑的網,隻提高一條關鍵路徑上的關鍵活動速度并不能縮短整個工程的工期,隻有加快這些包括在所有關鍵路徑上的關鍵活動才能達到縮短工期的目的。