例圖如上圖,是乙個aoe網,點表示狀態,邊表示活動及其所需要的時間。為了求出關鍵路徑,我們使用一下演算法:
這個過程是要從源點開始向匯點順推:
v1是源點,其最早開始時間是0。
v2、v3、v4最早時間分別是是6、4、5。
對於v5而言,v2到v5所花費時間是6+1=7,而v3到v5所花費時間是4+1=5。我們要按最大計,也就是v5最早時間是max=7,按最大計是因為只有活動a4和a5同時完成了,才能到達v5狀態。v3到v5需要5分鐘,但是此時a4活動尚未完成(7分鐘),所以都不能算到達v5,故而要按最大計。
v6只有從v4到達,所以v6的最早完成時間是(5+2=)7。
同理,v7最早完成時間是16。
對於v8而言,和v5處理方法一致。v8=max==14。
v9可算出是18。
這樣,我們可以得到各個狀態的最早時間的表:
最早時間表
這個過程是要從匯點開始向源點逆推:
v9完成時間為18,最v7最遲開始時間是(18-2=)16
逆推因為活動a10所需時間2。如果v7開始時間比16晚,則v9完成時間就會比18晚,這顯然不對。
同理,v8最遲開始時間為14。
對於v5而言,可以從v7、v8兩個點開始向前推算,此時要按最小計,即v5(最晚)=min=min=7。
請注意!!,min中,v7、v8取的都是前面算出的最遲開始時間(而不是最早開始時間)。
按最小計
按最小計,是因為如果按最大計去計算v5的最晚開始時間,那麼加上a7和a8的活動時間後,v7、v8至少有乙個會比之前逆推算得出的最晚時間還要晚,這就發生了錯誤。
同理,可計算出剩下的點
這樣,我們可以得到各個狀態的最晚時間的表:
最晚時間表
事實上,源點和匯點的最晚時間和最早時間必定是相同的。
求出關鍵活動,則關鍵活動所在路徑即為關鍵路徑
對於a1:
這表明,a1最早只能從0時刻開始,最晚也只能從(6-6=)0時刻開始,因此,a1是關鍵活動。
對於a2:
a2最早要從0時刻開始,但是它最晚開始時間卻是(6-4=)2。也就是說,從0開始做,4時刻即完成;從2開始做,6時刻恰好完成。從而在[0,2]區間內任意時間開始做a2都能保證按時完成。(請區別頂點的最早最晚和活動的最早最晚時間。圖示中的最早最晚是頂點狀態的時間,活動的最早最晚開始時間卻是基於此來計算的)。
由於a2的開始時間是不定的,所以它不能主導工程的進度,從而它不是關鍵活動。
一般的,
活動用時x時間,它最早要從e1時刻開始(一開始就開始),最晚要從l2-x時刻開始(即恰好完成)。所以,如果它是關鍵活動,則必然有e1=l2-x,否則它就不是關鍵活動。
值得注意的是,頂點的最早開始時間等於最晚開始時間 是 該頂點處於關鍵路徑 的 不充分不必要條件。上表中藍色底紋表示的點即為處於關鍵路徑的點。儘管它們的最早時間與最晚時間都相同,但是這與它們是否為關鍵路徑的點無關。因為這還取決於起始點的最早時間以及活動時間。
Codeup關鍵路徑 關鍵路徑
時間限制 1 sec 記憶體限制 128 mb 提交 261 解決 90 提交 狀態 討論版 命題人 外部匯入 描述 圖的連線邊上的資料表示其權值,帶權值的圖稱作網。上圖可描述為頂點集為 a,b,c,d,e 邊集及其權值為 始點,終點 權值 a b 3 a c 2 b d 5 c d 7 c e 4...
演算法筆記 問題 A 關鍵路徑
圖的連線邊上的資料表示其權值,帶權值的圖稱作網。圖可描述為頂點集為 a,b,c,d,e 邊集及其權值為 始點,終點 權值 a b 3 a c 2 b d 5 c d 7 c e 4 d e 6 網的源點是入度為0的頂點,匯點是出度為0的頂點。網的關鍵路徑是指從源點到匯點的所有路徑中,具有最大路徑長度...
ros學習筆記 學習路徑
根據你的學習風格和偏好,你可以採用兩種方式來學習ros 開始學習教程 立刻進入和開始使用ros 概覽 通讀ros和它的功能的這個概覽 有關ros架構的更多詳細資訊,請參考ros核心文件 如果你不能找到你的問題的解決方法,就嘗試搜尋 或者郵件列表歸檔。或者在 questions ask 上提出問題。檢...