No 3拓撲排序和關鍵路徑

2021-07-15 03:20:26 字數 1753 閱讀 6615

一.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圖表示乙個工程,其中有向邊表...