給乙個無向連通圖,生成一顆邊權和最小的樹
prime: 看作兩個集合,每次找出集合間最小的邊選入,把對應點選入。
該演算法中,「集合」和「討論集合之間的邊」的思路很妙,在刪邊最短路和刪點最短路中都有運用。
kruskal:sort邊,從小到大加入。
1.martix tree 定理 (咕咕)
2.對演算法的思考:每一條邊的地位相同,只是邊權不同。本質貪心。
3.瓶頸路:做一遍最小/大生成樹,倍增找路徑上最大/小的邊。本質貪心。
-應用:(不一定要把整棵樹建出來)noip模擬t2
4.資料結構優化 動態加邊/刪邊(只刪/只加)。若形成環,該邊可以替代環上任意一條邊,然後 lct/樹剖 維護最值即可。 刪邊 / 任意刪邊
5.動態合併(每次合併相關點數較小): 一條邊試探加入,只會影響所成環上的所有邊。更具體的,是環上的最值邊。所以建乙個有關端點的虛樹,把邊權壓縮成兩點間的最值邊,每次把虛樹上的邊和待試探邊拿來kruskal即可。sdoi2019世界地圖
6.二分check。生成樹在一些情況下具有單調性。如(最優比例生成樹): 做乙個0/1分數規劃即可。
7.最優乘積生成樹即:min
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
最小生成樹
package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...
最小生成樹
define max vertex num 20 最大頂點數 typedef int adjmatrix max vertex num max vertex num 鄰接矩陣型別 typedef char vertextype typedef struct mgraph struct dnodecl...