一.aov網和拓撲排序
以頂點表示活動,有向邊表示活動之間的優先關係
, 則稱
這樣的有向圖為
aov網
(頂點活**)
特點:乙個aov網必定是乙個有向無環圖,即不應該帶有迴路。
將有向無環圖
g中所有頂點排成乙個
序列,使得圖中任意一對頂點u和
v,若,v>
∈e(g),則u
v之前。
這樣的線性序列稱為滿足拓撲次序
(topologicalorder)
的序列,簡稱
拓撲序列。
拓撲排序演算法思想:
1.選擇乙個入度為
0的頂點並輸出;
2.然後從
aov網中刪除此頂點及以此頂點為起點的所有關聯邊;
3.重複上述兩步,直到不存在入度為
0的頂點為止;
4.若輸出的頂點數小於
aov網中的頂點數,則說明
「有迴路」
,否則輸出的頂點序列就是一種拓撲序列。
二.aoe網
用頂點表示事件,弧表示活動,
邊上的權值表示該活動持續的時間
——aoe
網(activityon edge)——
也叫邊表示活動的網。
事件表示在它之前的活動已完成,在它之後的活動可以開始。
性質:①只有在某頂點所代表的
事件發生後
,從該頂點
出發的各有向邊所代表的
活動才能開始。
②只有在進入某點的各有向邊所代表的活動都已結束,該頂點所代表的時事件才能發生。
路徑長度
——路徑上各活動持續時間之和
關鍵路徑
——路徑長度最長的路徑
ve(j)——
表示事件
vj的最早發生時間vl
(j)——
表示事件
vj的最遲發生時間e(i
)——表示活動
ai的最早開始時間l(i
)——表示活動
ai的最遲開始時間l(i
)-e(
i)——
表示完成活動
ai的時間餘量
關鍵活動
——關鍵路徑上的活動
重難點:
關鍵路徑問題:
由關鍵活動構成
①從源點
v1出發,令
ve[1]=0,
按拓撲序列
求各頂點的ve[
i]②從匯點
vn出發,令
vl[n]=
ve[n],
按逆拓撲序
列求其餘各頂點的vl[
i]③根據各頂點的ve和
vl值,計算每條弧的e[i
]和l[i
],找出e[i
]=l[i]
的關鍵活動
演算法思想:
1-輸入頂點和弧資訊,建立其鄰接表
計算每個頂點的入度
2-對其進行拓撲排序
2.1-
排序過程中求頂點的ve[
i]2.2-
將得到的拓撲序列進棧3-按
逆拓撲序列求頂點的vl[
i]4-
計算每條弧的e[i
]和l[i
],找出e[i
]=l[i]
的關鍵活動
在熟練掌握圖的儲存的基礎上運用拓撲排序,逆拓撲排序,程式設計難度較大,需要多多練習。
圖論部分概念多且抽象,需要大量的手動模擬來弄清楚演算法的意義。
拓撲排序和關鍵路徑
拓撲排序 乙個無環的有向圖稱為無環圖 directed acyclic graph 簡稱dag圖。所有的工程或者某種流程都可以分為若干個小的工程或者階段,稱這些小的工程或階段為 活動 這些子程式之間存在一定的約束,其中某種子工程的開始必須在另一些子工程完成之後。因此dag圖表示乙個工程,其中有向邊表...
拓撲排序和關鍵路徑
文章出自 拓撲排序和關鍵路徑 拓撲排序 拓撲排序最大的用途就是判斷乙個有向圖是否有環,當然判斷還有一種方法就是floyd演算法。如果用鄰接表的話拓撲排序的時間複雜度是o n e 鄰接矩陣是o n 2 n表示頂點數,e表示邊數,floyd時間複雜度是o n 3 拓撲排序方法可分為無前趨的頂點優先的拓撲...
拓撲排序和關鍵路徑
拓撲排序 乙個無環的有向圖稱為無環圖 directed acyclic graph 簡稱dag圖。所有的工程或者某種流程都可以分為若干個小的工程或者階段,稱這些小的工程或階段為 活動 這些子程式之間存在一定的約束,其中某種子工程的開始必須在另一些子工程完成之後。因此dag圖表示乙個工程,其中有向邊表...