圖:圖的應用(最小生成樹、拓撲排序、關鍵路徑)
阿新 • • 發佈:2019-01-26
一:求最小生成樹
應用場景:例如要在n個城市之間鋪設光纜,主要目標是要使這 n 個城市的任意兩個之間都可以通訊,但鋪設光纜的費用很高,且各個城市之間鋪設光纜的費用不同,因此另一個目標是要使鋪設光纜的總費用最低。這就需要找到帶權的最小生成樹。
普里姆演算法:
該演算法的核心就是依次增大連通圖的過程:
- 首先任意選擇一個節點,作為一個連通圖
- 然後找到與該連通圖相鄰的一個節點(權值最小),連線
- 重複上述步驟,知道包含所有結點和 n - 1條邊
克魯斯卡爾演算法:
該演算法的核心就是依次挑選最小權值的邊的過程:
- 將圖中的所有邊都去掉。
- 將邊按權值從小到大的順序新增到圖中,保證新增的過程中不會形成環
- 重複上一步直到連線所有頂點,此時就生成了最小生成樹。
二:拓撲排序
常用於判斷某個有向圖是否有環。通常再求圖的關鍵路徑前先用拓撲排序來確保圖無環。
拓撲步驟:
1. 在有向圖中選一個沒有前驅的頂點並且輸出。
2. 從圖中刪除該頂點和所有以它為尾的弧。
3. 重複上述兩步,知道全部頂點均已輸出,或者當前圖中不存在無前驅的頂點為止。
注意:有向無環圖的拓撲有序序列不一定唯一。
三:圖的關鍵路徑
主要用來評估工程的完成時間,主要用來解決一下問題:
- 完成整個工程至少需要多少時間?
那些活動是影響工程進度的關鍵?
如圖所示:假想是一個有7項活動的AOE網,其中有7個事件(V1,V2,V3…V7)。
每個事件表示在它之前的活動已經完成,在它之後的活動可以開始。
如V0表示整個工程開始,V7表示整個共結束,V5表示a4和a8已經完成,a9可以開始。
下一節將詳細來給大家講解影響工程的關鍵邊、關鍵路徑、事件和活動的最早最遲執行時間等的求法。