普里姆算法,克魯斯卡爾算法

這兩種算法都是得出最小生成樹的算法,只不過方法不同

普里姆是歸併點

而克魯斯卡爾是歸併邊


先說普里姆算法

先隨意選一個點加入歸併點數組之中,然後選出與這個點關聯的最小的權的點,輸出,並把那個點也加入歸併點數組之中,然後再從每一次都從歸併點數組之中選一個點道不在這個數組之中的點的最小的權值,再把這個點也加入歸併點數組,知道所有的點都在歸併點數組之中


•1. 從某頂點 u0 出發,選擇與它關聯的具有最小權值的邊(u0,v),將其頂點加入到生成樹的頂點集合U
•2. 每一步從一個頂點在U中,而另一個頂點不在U中的各條邊中選擇權值最小的邊(u, v),把頂點v加入到U
•3. 直到所有頂點都加入到生成樹頂點集合U中爲止

aaa


克魯斯卡爾算法

每次選能讓連通分量減一的點的最短的權


•1. 構造一個只有 n 個頂點,沒有邊的非連通圖 T = { V, Æ }, 每個頂點自成一個連通分量
•2. 在 E 中選最小權值的邊,若該邊的兩個頂點落在不同的連通分量上,則加入 T 中;否則捨去,重新選擇
•3. 重複下去,直到所有頂點在同一連通分量上爲止

aa





發佈了61 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章