最小生成樹有兩種算法:這裏先不寫代碼
1:普利姆算法(prim):初始狀態相當於兩個籃子A與B,籃子中裝的是點vertex,初始化時候A是空的,B是滿的
算法描述:
先從B中隨機找一個點放到A中,不斷從B中找距離A集合最近的一個點放到A中,直到B爲空
在這個過程中最近距離對應的邊集便能構成一顆最小生成樹
所謂B中距離A集合最近的點就是,與A集合中任意點相連的,且彼此距離最近的B集合中的點;
有點類似吸鐵石,每次吸一個,有點像層次聚類的思想,只是prim最終需要尋找的是那些最近的邊集合;
其實更像傳銷,不斷的拉新人,每次只能是最近距離的人被拉進來。
2:克魯斯卡爾算法(kruskal)
算法描述:
prim是找集合最近點,克魯斯卡爾是找最小邊加入到新的邊集中,但是有約束,就是新的邊集中不能有迴路,如果有迴路就找次近的邊
描述的不好,權當自己看看怕忘了,寫成代碼中主要是考慮集合的問題