圖論(一)最小生成樹

最小生成樹有兩種算法:這裏先不寫代碼

1:普利姆算法(prim):初始狀態相當於兩個籃子A與B,籃子中裝的是點vertex,初始化時候A是空的,B是滿的

算法描述:

先從B中隨機找一個點放到A中,不斷從B中找距離A集合最近的一個點放到A中,直到B爲空

在這個過程中最近距離對應的邊集便能構成一顆最小生成樹

所謂B中距離A集合最近的點就是,與A集合中任意點相連的,且彼此距離最近的B集合中的點;

有點類似吸鐵石,每次吸一個,有點像層次聚類的思想,只是prim最終需要尋找的是那些最近的邊集合;

其實更像傳銷,不斷的拉新人,每次只能是最近距離的人被拉進來。

 

2:克魯斯卡爾算法(kruskal)

算法描述:

prim是找集合最近點,克魯斯卡爾是找最小邊加入到新的邊集中,但是有約束,就是新的邊集中不能有迴路,如果有迴路就找次近的邊

 

描述的不好,權當自己看看怕忘了,寫成代碼中主要是考慮集合的問題

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章