資料結構之 拓撲排序

2021-10-04 04:20:28 字數 1336 閱讀 1908

乙個無環的有向圖稱為無環圖(directed acyclic graph),簡稱dag圖。

所有工程或者某種流程都可以分為若干個小的工程或者階段,我們稱這些小的工程或階段為「活動」。

在乙個表示工程的有向圖中,用頂點表示活動,用弧表示活動之間的優先關係,這樣的有向圖為頂點表示活動的網,我們稱之為aov網(active on vertex network),aov網不能存在迴路。

拓撲序列:設g=(v,e)是乙個具有n個頂點的有向圖,v中的頂點序列v1,v2,....,vn滿足若從頂點vi到vj有一條路徑,則在頂點序列中頂點vi必在頂點vj之前。則我們稱這樣的頂點序列為乙個拓撲序列。

拓撲排序:所謂的拓撲排序,其實就是對乙個有向圖構造拓撲序列的過程。

對aov網進行拓撲排序的方法和步驟如下:

從aov網中選擇乙個沒有前驅的頂點(該頂點的入度為0)並且輸出它;

從網中刪去該頂點,並且刪去從該頂點出發的全部有向邊;

重複上述兩步,知道剩餘網中不再存在沒有前去的頂點為止。

因為需要刪除頂點,所以選擇鄰接表資料結構表示會更加方便

aoe網:在乙個表示工程的帶權有向圖中,用頂點表示事件,用有向邊表示活動,用邊上的權值表示活動的持續時間,這種有向圖的邊表示活動的網,我們稱之為aoe網(activity on edge network)。

aoe網中沒有入邊的頂點稱為始點或源點,沒有出邊的頂點稱為終點或匯點。

ete和lte相等,就是關鍵路徑,關鍵路徑上的頂點就是關鍵活動。

先進行拓撲排序,

再找關鍵路徑

資料結構之拓撲排序

乙個簡單的求拓撲排序思路是 先找出任意乙個沒有入邊的頂點。然後列印出該頂點,並將它和它的邊一起從圖中刪除。然後,我們對圖的其餘部分採用同樣的方法處理。相應的我們可以定義乙個indegree 入度陣列 儲存所有頂點的入度。具體實現如下 鄰接表 define crt secure no warnings...

資料結構之拓撲排序

拓撲排序 topological order 是指,將乙個有向無環圖 directed acyclic graph簡稱dag 進行排序進而得到乙個有序的線性序列。這樣說,可能理解起來比較抽象。下面通過簡單的例子進行說明!例如,乙個專案包括a b c d四個子部分來完成,並且a依賴於b和d,c依賴於d...

資料結構之拓撲排序

感覺重點就是鄰接表的建立和tp toposort 函式中的乙個變數 的變化很奇妙,相當於是乙個靜態指標的用法。include include include include include include include include include define inf 0x3f3f3f3f d...