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 ...