拓撲排序(入門)

2021-09-16 13:50:13 字數 658 閱讀 8122

參考部落格:入門拓撲排序

在乙個有向圖中,對所有的節點進行排序,要求沒有乙個節點指向它前面的節點。

先統計所有節點的入度(作為終點被指向的次數),對於入度為0的節點就可以分離出來,然後把這個節點指向的節點的入度減一。

一直更新,直到所有的節點都被分離出來。

如果最後不存在入度為0的節點,那就說明有環,不存在拓撲排序。

因為一道題接觸到拓撲排序,就是死鎖問題

模板

vectorha[1000];

//儲存:ha[x].push_back(y);

for(int i=0;i拓撲排序主要用來解決有向圖中的依賴解析(dependency resolution)問題。

舉例來說,如果我們將一系列需要執行的任務構成乙個有向圖,圖中的有向邊則代表某一任務必須在另乙個任務之前完成這一限制。那麼運用拓撲排序,我們就能得到滿足執行順序限制條件的一系列任務所需執行的先後順序。當然也有可能圖中並不存在這樣乙個拓撲順序,這種情況下我們無法根據給定要求完成這一系列任務,這種情況稱為迴圈依賴(circular dependency)。 

在佇列裡的順序就是它應該執行的順序。

拓撲排序入門

拓撲排序性質 1拓撲排序只有在有向無環圖中才能排出有效的序列,因此可以通過拓撲排序判斷該圖是否為有向有環圖。2 如果輸入的有向圖中的點,不存在入度為0的點,則該有向圖存在迴路 3 如果存在的入度為0的點大於乙個,不妨礙拓撲排序 可以得到多種拓撲排序的結果 拓撲排序的步驟 1.在有向圖中選乙個沒有入度...

拓撲排序入門

先來看乙個實際案例來引出拓撲排序的概念。大學四年有很多課程,假設這些課程表示為c1,c2,c12,一共12門課程如下表 而這些課程的學習順序是有限制的,比如在學習 資料結構 c3之前必須先學習 程式設計基礎 c1和 離散數學 c2,學習 作業系統 c8前必須先學習 資料結構 c3和 計算機組成原理 ...

新手入門 拓撲排序

o o o哈!上個月學的拓撲排序,曾經覺得它很高深.今天就寫篇簡單的入門.也當是給自己複習好了 咱們不用那些陌生的名詞.咱們通俗點講.介個演算法是解決甚麼問題的呢?實際中,我們經常會碰到到這樣一類問題 一堆元素,不一定每兩個間都有嚴格的先後關係.先前的冒泡,快速排序等等等等都是建立在 每兩個元素間都...