關於關鍵路徑

關鍵路徑理解不是很透徹,就先不;理解了,從代碼入手,總結一下代碼思路,不管理不理解,代碼寫出來再說(弱者口胡)。

準備

late數組
early數組
vector< int > s 鄰接表
stack< int > sta 棧存逆序拓撲排序

思路

用鄰接表求拓撲排序,然後棧存逆拓撲排序,先通過正序拓撲排序更新late[]數組,它保存的是最短時間,更新規則

late[next]=max(late[next],late[now]+power{now,next});

接下來把early[]數組全部用late數組最後一個最大元素初始化,用sta的逆拓撲排序跟新early數組,更新規則
early[now]=min(early[now],early[next]-power{now,next});

最後輸出關鍵活動只需 late[next]-early[next]-power{next,now}==0即可判斷爲關鍵活動,

當圖中存在環即不可獲得關鍵路徑!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章