本篇內容爲視頻筆記,視頻地址爲:https://www.bilibili.com/video/BV1Ut41197TE?from=search&seid=17921312669232031384算法
一,有向無環圖ide
定義:無環的有向圖,簡稱 DAG視頻
有向無環圖經常使用於描述一個工程或者系統的進行過程。(一般將計劃,施工,生產,程序流程等當成一個工程)blog
一個工程能夠分爲若干子工程,只要完成這些子工程(活動),就能夠完成總體工程。排序
那麼這些工程有兩種表示方法:AOV網 和 AOE網程序
AOV 網:(解決 拓撲排序 問題)方法
用一個有向圖表示工程的各子工程及其相互制約的關係,其中 頂點表示活動,弧表示活動之間的優先制約關係,im
稱這種有向圖爲 頂點表示活動的網,簡稱 AOV圖表
AOE 網:(解決 關鍵路徑 問題)img
用一個有向圖表示工程的各子工程及其相互制約的關係,其中 弧表示活動,頂點表示活動的開始和結束
稱這種有向圖爲 邊表示活動的網,簡稱 AOE
二,AOV 網的特色
1,若從 i 到 j 有一條路徑,則 i 是 j 的前驅 ,j 是 i 的後繼;
2,若 < i , j > 是網中的有向邊,則 i 是 j 的直接前驅 ,j 是 i 的直接後繼
3,AOV 網不容許有 迴路,由於若是存在迴路的話,則說明 某項活動 是以本身爲先決條件的,
這是荒謬的。
三,拓撲排序
① 例題:排課表
隨便畫的,和原來不同,意思一下。
② 拓撲有序序列
在 AOV 網沒有迴路的前提下,咱們將所有活動排成一個線性序列,使得 AOV 網有弧 <i,j> 存在,
則在這個序列中,i 必定在 j 的簽名,具備這種性質的線性序列稱爲 拓撲有序序列,相應的算法 稱爲
拓撲排序。
③ 拓撲排序 的方法
1,在有向圖中 任何選一個沒有前驅的 頂點 且輸出它。
2,從圖中刪除 該頂點 及 全部以它爲尾的弧。
3,重複上述兩步,直至所有頂點均輸出 或者 圖中不存在 無前驅的頂點 爲止
注意:輸出的即爲拓撲序列,且拓撲序列不惟一
④ 拓撲排序的一個應用
檢查 AOV 網 是否存在 環
對於有向圖構造其頂點的 拓撲有序序列,若網中全部頂點都在他的拓撲有序序列中,則該 AOV 網 中
一定不存在 環。
============ ========= ======== ====== ===== ==== === == =