10分鐘瞭解關鍵路徑及如何求得關鍵路徑


視頻參考:6.6.4關鍵路徑2–求解關鍵路徑

一,什麼是關鍵路徑

【引例 1】某項目的任務是對A公司的辦公室重新進行裝修
如果10月1日前完成裝修工程,項目最遲應該合適開始?
(需要完成的活動、每個活動所需時間、及先期需完成工作如下圖所示)
在這裏插入圖片描述
【引例 2】準備一個小型家庭宴會,晚6點宴會開始,最遲幾點開始準備?壓縮哪項活動時間可以使總時間減少?
在這裏插入圖片描述
我們把工程計劃表示爲邊表示活動的網絡,即 AOE網,用頂點表示事件,弧表示活動,弧的權表示活動持續時間

事件表示在它之前的活動已經完成,在它之後的活動可以開始。
在這裏插入圖片描述
【引例 3】設一個工程有 11項活動,9 個事件。

  • 事件 v1 ---- 表示工程的開始(源點:入度爲0的頂點)
  • 事件 v9 ---- 表示工程的結束(匯點:出度爲0的頂點)
    在這裏插入圖片描述

對於AOE網,我們關心兩個問題:

  1. 完成整項工程至少需要多少時間? — 求關鍵路徑長度
  2. 哪些活動是影響工程進度的關鍵? — 求關鍵路徑上經過的頂點(活動)

關鍵路徑 — 路徑長度最長的路徑。
路徑長度 — 路徑上各活動持續時間之和。
在這裏插入圖片描述
最終,這道題就變成了求解關鍵路徑的問題。

二,求解關鍵路徑需要的4個描述量

在這裏插入圖片描述
確定關鍵路徑之前,我們需要定義4個描述量(以上圖爲例):

  • ve(vj) ----- 表示時間 vj 的最早發生時間。
    例:ve(v1) = 0、ve(v2) = 30
  • vl(vj) ----- 表示時間 vj 的最晚發生時間。
    例:vl(v4) = 180 - 15 = 165
  • e(i) ---- 表示活動 ai 的最早開始時間。
    例:e(a3) = 30
  • l(i) ---- 表示活動 ai 的最晚開始時間。
    例:l(a3) = 180 - 30 - 60 - 60 = 120

l(i) - e(i) ---- 表示完成活動 ai 的時間餘量。
例:l(3) - e(3) = 90

關鍵活動 ---- 關鍵路徑上的活動,即 l(i) == e(i)即(l(i) - e(i) = 0)的活動。

三,如何求得關鍵路徑

那麼我們如何找到滿足 l(i) == e(i)的關鍵活動?

設活動 ai 用弧 < j, k > 表示,其持續時間記爲:wj,k
則有:

  1. e(i) == ve(j)
  2. l(i) = vl(k) - wj,k
    在這裏插入圖片描述

如何求得 ve(j) 和 vl(j) ?

  1. 從 ve(1) = 0 開始向前地推
    ve(j) = Maxi{ ve(j) + wi,j },< i, j >∈T,2 ≤ j ≤ n
    其中 T 是所有以 j 爲頭的弧的集合。
  2. 從 vl(n) = ve(n) 開始向後遞推
    vl(j) = Minj{ vl(j) + wi,j },< i, j >∈S,1 ≤ i ≤ n-1

在這裏插入圖片描述
下邊我們通過一個例子來說明,求得關鍵路徑的步驟(視頻:28min開始)
在這裏插入圖片描述

關鍵路徑的討論

  1. 若網中有幾條關鍵路徑,則需要加快同時在幾條關鍵路徑上的活動。
    如:a11、a10、a8、a7
  2. 如果一個活動處於所有的關鍵路徑上,那麼提高這個活動的速度,就能縮短整個工程的完成時間。
    如:a1、a4
  3. 處於所有關鍵路徑上的活動完成時間不能縮短太多,否則會是的原來的關鍵路徑變成非關鍵路徑。這時,必須重新尋找關鍵路徑。
    如:a1 由 6天變成 3天,就會改變關鍵路徑。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章