《軟體工程》活動圖
基本概念
描述了活動和活動間依賴關係的圖,其中節點表示專案的里程碑(活動結束) ,線表示活動,線對應的時間表示活動的持續時間。
如圖例中 ,A->B 的這條線代表的這個活動從 A 開始,需要做 3天,才能結束,到達 B 里程碑(標誌著 A->B 這條線代表的活動的結束)。
注意:圖中的點不代表活動,並不能說活動 A 用 3 天到達活動 B,這是不準確的
如到達 I 里程碑的邊有兩條, D->I, B->I,意思是有兩個活動,完成後到達里程碑 I,並不能說 I 是個活動,如果這麼理解會在計算最晚開始時間時出現錯誤。
估算專案完成時間
關鍵路徑
定義: 從起點到終點總花費時間最長的路徑,即這個專案的最短完成時間,因為如果這條路徑無法完成那麼整個專案都不能算完成。所以這條路徑上的任務耽誤一點都會影響最後專案完成時間。
如上圖,其關鍵路徑為 A->B->D->I->J->L = 20,其他路徑都比它短。
冗餘時間
在不耽誤總體進度的前提下最晚開始時間和最早開始時間的差值,表示這個任務的機動開始時間,從最早開始時間開始,最晚可以拖的天數,再晚就會影響整個專案的完成時間。
簡而言之,就是一個活動你可以偷幾天的懶而不耽誤最後的理論進度(不晚於關鍵路徑的結束時間)
因此,路徑越短,冗餘時間越長
另外可以得出,關鍵路徑就是冗餘時間為0的路徑;一個活動圖可能會有多條關鍵路徑。
最早最晚開始時間
以上圖為例,開始逐步計算各個活動的最早最晚開始時間,(活動開始時間從1開始),表示方式為<最早開始時間,最晚開始時間,冗餘時間>
:
- 首先計算關鍵路徑,可以得出 , , , ,
關鍵路徑是完全不能拖延的,而其餘的非關鍵路徑,則會有一定的冗餘時間,現在從後往前開始計算最晚開始時間
- l是結束里程碑,時間點為21,因此從l對應的非關鍵路徑(該例僅有 )開始,逐步計算最晚開始時間:
- , , , , , , , , , ,
如果你認真計算了,可能會有以下問題:
- 中
j
向後連線兩個節點l
和k
,使用哪個邊的最晚開始時間計算?最後選擇了關鍵路徑 的最晚開始時間,因為
jl
是關鍵路徑,是不能耽誤的,而j
里程碑的達成需要gj
和ij
兩個活動共同完成,gj
的最晚開始時間的計算應該以jl
的最晚開始時間點為基準來進行計算。
- 、 的最早開始時間為什麼是不確定的?
實際是確定的,第一個節點相連的活動最早開始時間肯定是1,但是為了統一格式,專一計算最晚開始時間,所以我寫的是
?
- 接下來再次從前往後,計算非關鍵路徑的最早開始時間,同時因為所有活動的最晚開始時間確定,可以同時求出冗餘時間:
- , ,