基礎分析20180325ls
前置演算法:鄰接表的使用,排序,並查集,圖的遍歷;
概念:一張圖中,給出n個點,m條邊,每條邊有權值,求:用最少的邊權使全圖聯通。
概念分析:其實概念中的最小,包含了2個方面:
1 是邊的數量最小:乙個圖要完全聯通,只需要(n-1)條邊,這樣又不會成環,所以就是樹;
2 要求邊權和最小,所以任意兩點之間如果有多條邊可選的話,要選盡可能小的;
k演算法思路:
1 對全部邊,按權來排序;
2 從小到大取邊,詢問當前的邊i:b[i].x
與b[i].y是否聯通?(用並查集來詢問);
3 如果x和y聯通,當前的i邊就不選;如果x和y不聯通,就選擇這個i邊;
4 直到我選了(n-1)條邊,表示全圖已經聯通,gg。
最小生成樹的演算法一般有2個,p和k。
我們主要學習k
演算法:
1、繁忙的都市(學習一下出題的表述能力,如何放煙霧彈)
2、聰明的猴子(學會求:座標系中,兩點之間的距離)
3、公路修建問題(最大和最小生成樹)
4、tree(要求會用二分,思路比較巧妙)
最小生成樹基礎
0.1 本文總結於 資料結構與演算法分析,源 均為原創,旨在 review 最小生成樹的基礎知識 0.2 了解本文的內容是 分析prim演算法 普利姆演算法 和 kruskal演算法 克魯斯卡爾演算法 的前提 1.1 我們考慮的問題 在乙個無向圖中找出一顆最小生成樹。乙個無向圖g的最小生成樹就是由該...
最小生成樹基礎演算法
prim演算法求最小生成樹 與dijkstra演算法類似,dijkstra演算法是計算乙個節點到其他節點的最短路,prim演算法是需要維護節點到乙個集合的距離最小值,優化方式也是類似的,只需要用堆來維護距離即可 include using namespace std const int n 510,...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...