AOV网和AOE网
2019獨角獸企業重金招聘Python工程師標準>>>
1、AOV網
定義:在一個表示工程的有向圖中,用頂點表示活動,用弧表示活動之間的優先關系,這樣的有向圖為頂點表示活動的網,我們成為AOV網(Activity On Vertex Network),AOV網中的弧表示活動之間的某種約束關系。AOV網中不存在回路(即無環的有向圖)。
拓撲排序
定義:設G(V,E)是一個具有n個頂點的有向圖,V中的頂點序列v1,v2,.....,vn,滿足若從頂點vi到vj有一條路徑,則頂點vi必在vj之前。這樣的頂點序列成為拓撲序列。
拓撲排序其實就是對一個有向圖構造拓撲序列的過程。
對AOV網進行拓撲排序的基本思路是:從AOV網中選擇一個入度為0的頂點輸出,然后從有向圖中刪除該定點,并刪除以此頂點為尾的弧,繼續重復此步驟,直到輸出全部頂點或AOV網中不存在入度為0的頂點為止。
拓撲排序使用鄰接表的數據結構。還用棧作為輔助數據結構,用來存儲處理過程中入度為0的頂點,目的是為了避免每次查找時都要去遍歷鄰接表找有沒有入度為0的頂點。
對一個具有n個頂點e條弧的AOV網來說,時間復雜度為O(n+e).
?
2、AOE網
定義:在一個表示工程的帶權有向圖中,用頂點表示事件,用弧表示活動,用弧上的權值表示活動持續的時間,這種有向圖的弧表示活動的網,我們稱為AOE網(Activity On Edge Network).AOE網中沒有入度的頂點稱為始點或源點,沒有出度的頂點叫做終點或匯點。
AOV網和AOE網的不同:
它們都是用來對工程建模的,但它們還是有很大的區別,主要體現在AOV網是頂點表示活動的網,它只描述了活動之間的約束關系,而AOE網是用有向邊表示活動,邊上的權值表示活動持續的時間。AOE網是建立在AOV網基礎之上(活動之間約束關系沒有矛盾),再來分析完成整個工程至少需要多少時間,或者為縮短完成工程所需時間,應當加快那些活動等問題。
路徑各個活動所持續的時間之和稱為路徑長度,從源點到匯點具有最大路徑長度的路徑叫做關鍵路徑,在關鍵路徑上的活動叫做關鍵活動。
關鍵路徑的幾個參數:
(1)、事件的最早發生時間etv(earliest time of vertex):即頂點Vk的最早發生時間。
(2)、事件的最晚發生時間ltv(lastest time of vertex):即頂點Vk的最晚發生時間。也就是每個頂點對應事件最晚需要開始的時間,超出此時間將會延誤整個工程。
(3)、活動的最早開始時間ete(earliset time of edge):即弧ak的最早開始時間。
(4)、活動的最晚開始時間lte(lastest time of edge):即弧ak的最晚開始時間,也就是不推遲工期的最晚開始時間。
AOE網也用鄰接表結構,與AOV網鄰接表不同的是,AOE網的鄰接表中增加了weight域,用來存儲弧的權值。
計算頂點Vk的最早發生時間etv[k]的公式是:
計算頂點Vk的最晚開始時間ltv[k]的公式:
ete表示活動<Vk,Vj>的最早開始時間,是針對弧來說的。但只有此弧的弧尾頂點Vk的事件發生了,它才開始,因此ete = etv[k];即以Vk為弧尾的弧(活動)的最早開始時間ete等于弧尾頂點Vk的最早開始時間etv[k]。
lte表示活動<Vk,Vj>的最晚開始時間,但此活動最晚也不能等到Vj(頂點)事件發生才開始,而必須在Vj事件之前發生,所以lte = ltv[j]-len<Vk,Vj>。
當ete與lte相等時,此活動為關鍵活動。
求關鍵路徑的算法時間復雜度為O(n+e),n個頂點e條邊的有向無環圖。
注意:有向無環圖的關鍵路徑不一定只有一條,也可以有多條。如果有多條關鍵路徑,則單單提高一條關鍵路徑上的關建活動的速度并不能導致整個工期的縮短,而是必須是提高同時在幾條關鍵路徑上的活動的速度。
?
?
?
轉載于:https://my.oschina.net/u/2444659/blog/705171
總結
- 上一篇: 图形—9patch,shape ,sel
- 下一篇: android之inflater用法