日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最小生成树(普利姆算法、克鲁斯卡尔算法)

發布時間:2024/8/23 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最小生成树(普利姆算法、克鲁斯卡尔算法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個帶權的無向連通圖,如何選取一棵生成樹,使樹上所有邊上權的總和為最小,這叫最小生成樹.

求最小生成樹的算法
(1)?克魯斯卡爾算法
圖的存貯結構采用邊集數組,且權值相等的邊在數組中排列次序可以是任意的.該方法對于邊相對比較多的不是很實用,浪費時間.
(2)?普里姆算法
圖的存貯結構采用鄰接矩陣.此方法是按各個頂點連通的步驟進行,需要用一個頂點集合,開始為空集,以后將以連通的頂點陸續加入到集合中,全部頂點加入集合后就得到所需的最小生成樹 .


下面來具體講下:
克魯斯卡爾算法
方法:將圖中邊按其權值由小到大的次序順序選取,若選邊后不形成回路,則保留作為一條邊,若形成回路則除去.依次選夠(n-1)條邊,即得最小生成樹.(n為頂點數)

第一步:由邊集數組選第一條邊

第二步:選第二條邊,即權值為2的邊

第三步:選第三條邊,即權值為3的邊

第四步:選第四條邊,即權值為4的邊

第五步:選第五條邊

?


普里姆算法
方法:從指定頂點開始將它加入集合中,然后將集合內的頂點與集合外的頂點所構成的所有邊中選取權值最小的一條邊作為生成樹的邊,并將集合外的那個頂點加入到集合中,表示該頂點已連通.再用集合內的頂點與集合外的頂點構成的邊中找最小的邊,并將相應的頂點加入集合中,如此下去直到全部頂點都加入到集合中,即得最小生成樹.
例在下圖中從1點出發求出此圖的最小生成樹,并按生成樹的邊的順序將頂點與權值填入表中.

———————>先寫出其鄰接矩陣

第一步:從①開始,①進集合,用與集合外所有頂點能構成的邊中找最小權值的一條邊
①——②權6
①——③權1 -> ?、佟圻?br /> ①——④權5

?

第二步:③進集合,①,③與②,④,⑤,⑥構成的最小邊為
①——④權5
③——⑥權4 -> 取③——⑥邊

第三步:⑥進集合,①,③,⑥與②,④,⑤構成的各最小邊
①——②權6
③——②權5
⑥——④權2 -> ?、蕖苓?/p>

第四步:④進集合,①,③,⑥,④與②,⑤構成的各最小邊
①——②權6
③——②權5 -> 取③——②邊
⑥——⑤權6

第四步:②進集合,①,③,⑥,②,④與⑤構成的各最小邊
②——⑤權3 -> ?、凇葸?/p>


這也是在網上找到的一個Kruskal和Prim構造過程圖,貼出來:

?

總結

以上是生活随笔為你收集整理的最小生成树(普利姆算法、克鲁斯卡尔算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。