普里姆算法(Prim's algorithm)是圖中的一種算法,可在加權連通圖中搜索最小生成樹。算法
該算法的做用就是根據圖中權值找到鏈接全部頂點的最短路徑,也就是鏈接全部頂點的最小權值之和,也是這個加權圖中的最小生成樹。微信
1.選取權值最小邊的其中一個頂點做爲起始點。
2.找到離當前頂點權值最小的邊,並記錄該頂點爲已選擇。
3.重複第二步,直到找到全部頂點,就找到了圖的最小生成樹。數據結構
假如咱們有 V 表示圖中的頂點個數,E 表示圖中的邊個數。3d
經過鄰接矩陣圖表示的簡易實現中,找到全部最小權邊共需 的運行時間。cdn
使用簡單的二叉堆和鄰接表來表示的話,普里姆算法的運行時間則可縮減爲 。blog
若是使用較爲複雜的斐波那契堆,則可將運行時間進一步縮短爲 ,這在連通圖足夠密集時,可較顯著地提升運行速度。it
根據上面加權連通圖找到最小生成樹。io
普里姆算法就是經過一個頂點擴散開找權值最小的邊,所通過的頂點和邊就是這個圖的最小生成樹。經過不用的數據結構存儲圖會致使時間複雜度不一致,用鄰接矩陣的時間複雜度是 ,二叉堆和鄰接表的時間複雜度是
。class
PS:
清山綠水始於塵,博學多識貴於勤。
我有酒,你有故事嗎?
微信公衆號:「清塵閒聊」。
歡迎一塊兒談天說地,聊代碼。bfc