生活随笔
收集整理的這篇文章主要介紹了
图论 —— 生成树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【概述】
對一個具有 n 個點的連通圖進行遍歷,對于遍歷后的子圖,其包含原圖中所有的點且保持圖連通,最后的結構一定是一個具有 n-1 條邊的樹,通常稱為生成樹。
在生成樹問題中,最常見的問題就是最小生成樹問題,所謂最小生成樹,就是對于一個有 n 個點的無向連通圖的生成樹,其包含原圖中的所有點,且保持圖連通的邊權總和最少的邊。
簡單來說,對于一個有 n 個點的圖,邊一定是大于等于 n-1 條的,最小生成樹,就是在這些邊中選擇 n-1 條出來連接所有的 n 個點,且這 n-1 條邊的邊權之和是所有方案中最小的。
最小生成樹具有以下兩條性質:
- 切割性質:連接點 x、y 的邊權最小的邊必定被生成樹包含
- 回路性質:任意回路/環上的邊權最大的邊必不被生成樹包含
求最小生成樹一般有 Prim 算法與 Kruskal 算法,其中,Prim 算法時間復雜度為 O(V*V),與圖中邊數無關,適合稠密圖;Kruskal 算法時間復雜度 為O(ElogE),需要對圖的邊進行訪問,適合稀疏圖。
Prim:點擊這里Kruskal:點擊這里
【常見問題模型】
在生成樹問題中,除了最常見的最小生成樹問題外,還有以下常見的問題模型:
曼哈頓距離最小生成樹:點擊這里次小生成樹:點擊這里最小樹形圖:點擊這里最小瓶頸生成樹:點擊這里增量最小生成樹:點擊這里最小瓶頸路:點擊這里生成樹計數:點擊這里
【例題】
1.最小生成樹
還是暢通工程(HDU-1233)(Prim):點擊這里Jungle Roads(HDU-1301)(Prim):點擊這里Eddy's picture(HDU-1162)(Prim):點擊這里最短網絡(信息學奧賽一本通-T1350):點擊這里繁忙的都市(信息學奧賽一本通-T1392)(Prim):點擊這里最優布線問題(信息學奧賽一本通-T1349)(Prim):點擊這里繼續暢通工程(HDU-1879 )(Kruskal):點擊這里Constructing Roads(HDU-1102)(Kruskal):點擊這里局域網(信息學奧賽一本通-T1391)(Kruskal):點擊這里聯絡員(信息學奧賽一本通-T1393)(Kruskal):點擊這里連接格點(信息學奧賽一本通-T1394)(Kruskal):點擊這里城市公交網絡建設問題(信息學奧賽一本通-T1348)(Kruskal):點擊這里Pseudoforest(HDU-3367)(Kruskal):點擊這里Connect the Cities(HDU-3371)(Kruskal):點擊這里Building Roads(POJ-3625)(預處理+Prim):點擊這里Built?(AtCoder-2643)(Kruskal+貪心):點擊這里Find the most comfortable road(HDU-1598)(最大生成樹+貪心):點擊這里Applese 的大獎(2019??秃偎惴ɑA集訓營 Day4-G)(限制條件下的最小生成樹):點擊這里
2.曼哈頓距離最小生成樹
擴散(洛谷-P1661)(樸素的曼哈頓最小生成樹+最長邊):點擊這里
同題:擴散(信息學奧賽一本通-T1437):點擊這里Object Clustering(POJ-3214)(曼哈頓最小生成樹+第k大的邊):點擊這里
3.次小生成樹
The Unique MST(OpenJ_Bailian-1679)(次小生成樹):點擊這里Qin Shi Huang's National Road System(HDU-4081)(次小生成樹思想):點擊這里
4.最小樹形圖
Command NetWork(POJ-3164)(定根的最小樹形圖):點擊這里Ice_cream’s world II(HDU-2121)(超級源點的使用):點擊這里Road Repairs(CF-240E)(路徑的輸出):點擊這里
5.最小瓶頸生成樹
Out of Hay(POJ-2395):點擊這里
6.增量最小生成樹
Trail Maintenance(LightOJ-1123):點擊這里
7.最小瓶頸路
?營救(洛谷-P1396)(單次查詢):點擊這里
8.生成樹計數
Highways(SPOJ-104)(生成樹計數):點擊這里最小生成樹計數(HYSBZ-1016)(最小生成樹計數簡化版):點擊這里
同題:最小生成樹計數(洛谷-P4208):點擊這里最小生成樹計數(HYSBZ-1016)(最小生成樹計數加強版):點擊這里
總結
以上是生活随笔為你收集整理的图论 —— 生成树的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。