AOV網 拓撲排序

2021-07-29 14:48:18 字數 1140 閱讀 8101

aov網路---拓撲排序

前面說了兩個有環的應用

有環->最小生成樹(普利姆演算法,克魯斯卡爾演算法);

有環->最短路徑(迪傑斯特拉演算法,弗洛伊德演算法);

現在我們說下沒環的圖

在乙個有向圖中,用頂點表示活動,用邊表示頂點活動之間的優先關係,這樣的網我們叫aov網(activity on vertex network)

設g(v,e) 為有向圖  如vi->vj有路徑 則排序中頂點 vi必須在vj之前 我們稱這樣的排序為 拓撲排序

拓撲排序: 就是對乙個有向圖構造拓撲排序的過程。構造時兩種情況 一種是頂點全部輸出則為aov網,二種是頂點數少則說明存在迴路。

如下圖表示這7個頂點活動之間的先後順序

aov網路的用途---拓撲排序

我們經常用有向圖來描述乙個工程或系統的進行過程。一般來說,乙個工程可以分為若干個子工程,只要完成了這些子工程,就可以導致整個工程的完成。

aov網路若用於教學計畫的制定,可以解決:哪些課程是必須先修的,哪些課程是可以並行學習的。

1.使用鄰接矩陣實現拓撲排序

1、找到全為零的第j 列,輸出j

2、將第j 行的全部元素置為零

3、找到全為零的第k列,輸出k

4、將第k行的全部元素置為零

…………………

反覆執行3、4;直至所有元素輸出完畢。

2.使用鄰接表實現拓撲排序

從aov網選擇入度為0的頂點輸出,然後刪除此頂點以及以此頂點為尾的弧,重複執行此步驟,直到輸出全部頂點或者 aov網中不存在入度為0的頂點。

由於演算法中藥查詢入度為0的頂點 因此我們在原來頂點表結構中增加乙個入度域in

indata

firstedge

bool toposort(gadjlist g)  

} while(top != 0)//當棧中

} }

delete stack;

if(cout用來判斷有向圖中是否存在環,

工業先後順序,多道工序。

時間複雜度為o(n+e); 拓撲排序結果不唯一!!!

AOV網 拓撲排序

aov網路 拓撲排序 前面說了兩個有環的應用 有環 最小生成樹 普利姆演算法,克魯斯卡爾演算法 有環 最短路徑 迪傑斯特拉演算法,弗洛伊德演算法 現在我們說下沒環的圖 在乙個有向圖中,用頂點表示活動,用邊表示頂點活動之間的優先關係,這樣的網我們叫aov網 activity on vertex net...

AOV網拓撲排序 c c

工程是否順序進行,流程是否合理,採用aov網來表示,頂點用來表示工程 活動 弧表示工程間的順序關係。如a有乙個指向b的弧,意味著a結束了b才能開始 a為弧尾,b為弧頭 演算法思路 1,在有向圖中找到無前驅 入度為0 的結點v,輸出。2,刪除v及以v為弧尾的弧。3,重複1,2,輸出全部結點 或者網中沒...

設計AOV網拓撲排序的演算法

對乙個有向圖構造拓撲序列的過程稱為拓撲排序 不唯一 1 圖的儲存結構 採用鄰接表儲存,在頂點增加乙個入度域 2 棧s儲存所有無前驅的頂點 1.棧s初始化 累加器count初始化 2.掃瞄頂點表,將沒有前驅 入度為0 的頂點壓棧 3.當棧s非空時迴圈 3.1 j 棧頂元素出棧 輸出頂點j count ...