拓撲排序(Topological Sort)
對一個 有向無環圖 (Directed Acyclic Graph簡稱 DAG )G進行拓撲排序
意一對頂點u和v
通常
注意
①若將圖中頂點按拓撲次序排成一行
②若圖中存在有向環
③一個DAG的拓撲序列通常表示某種方案切實可行
【例】一本書的作者將書本中的各章節學習作為頂點
排章節
④一個DAG可能有多個拓撲序列
【例】對圖G
⑤當有向圖中存在有向環時
【例】下面(a)圖中的有向環重排後如(b)所示
工作計劃
無前趨的頂點優先的拓撲排序方法
該方法的每一步總是輸出當前無前趨(即人度為零)的頂點
NonPreFirstTopSort(G){//優先輸出無前趨的頂點
while(G中有人度為
從G中選擇一個人度為
從G中刪去v及其所有出邊;
}
if(輸出的頂點數目<|V(G)|)
//若此條件不成立
Error(
}
對G
注意
無前趨的頂點優先的拓撲排序算法在具體存儲結構下
度為
在開始排序前
From:http://tw.wingwit.com/Article/program/sjjg/201311/23813.html