

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Kruskal 算法算法K r u s k a l 算法每次選擇 n- 1 條邊,所使用的貪婪準則是:從剩下的邊中選擇一條不會產生環路的具有最小耗費的邊加入已選擇的邊的集合中。注意到所選取的邊若產生環路則不可能形成一棵生成樹。K r u s k a l 算法分e 步,其中 e 是網絡中邊的數目。按耗費遞增的順序來考慮這e 條邊,每次考慮一條邊。當考慮某條邊時,若將其加入到已選邊的集合中會出現環路,則將其拋棄,否則,將它選入。初始時沒有任何邊被選擇。邊( 1 , 6)是最先選入的邊,它被加入到欲構建的生成樹中,得到圖 1 3 - 1 2 c。下一步選擇邊( 3,4)并將其加入樹中(如圖 1 3
2、- 1 2 d 所示)。然后考慮邊( 2,7 ,將它加入樹中并不會產生環路,于是便得到圖 1 3 - 1 2 e。下一步考慮邊( 2,3)并將其加入樹中(如圖 1 3 - 1 2 f 所示)。在其余還未考慮的邊中,(7, 4)具有最小耗費,因此先考慮它,將它加入正在創建的樹中會產生環路,所以將其丟棄。此后將邊( 5,4)加入樹中,得到的樹如圖 13-12g 所示。下一步考慮邊( 7,5),由于會產生環路,將其丟棄。最后考慮邊( 6,5)并將其加入樹中,產生了一棵生成樹,其耗費為 9 9。圖 1 - 1 3 給出了 K r u s k a l 算法的偽代碼。(2)pascal 代碼最小生成樹的
3、Kruskal 算法。Kruskal 算法基本:每次選不屬于同一連通分量(保證不生成圈)且邊權值最小的頂點,將邊加入 MST,并將所在的 2 個連通分量合并,直到只剩通分量排序使用 Quicksort(O(eloge)檢查是否在同一連通分量用 Union-Find,每次 Find 和 union 運算近似常數Union-Find 使用 r啟發式合并和路徑壓縮總復雜度 O(eloge)=O(elogv) (因為 en(n-1)/2)constmaxn=100;maxe=maxn*maxn;typeedge=recorda,b:eger;/邊的 2 個頂點len:eger;/邊的長度end;var
4、edges:array0.maxeofedge;/保存所有邊的信息p,r:array0.maxnofeger;/pi保存 i 的父親節點,r 用來實現Union-Find 的 r啟發式n,e:eger;/n 為頂點數,e 為邊數procedure swap(a,b:eger);/交換beginedges0:=edgesa;edgesa:=edges;edges:=edges0;end;procedure quicksort(l,r:eger);/快速排序varx,i,j :eger;beginx:=edgesrandom(r-l+1)+l.len;i:=l;j:=r;repeatwhile e
5、dgesi.lenx do dec(j);if ij;if ljthen quicksort(l,j);if irthen quicksort(i,r);end;procedureinit;vari:eger;beginassign(input,g.in);reset(input);readln(n,e);for i:=1 to e do的信息readln(edgesi.a,edgesi.b,edgesi.len);/從文件讀入圖for i:=1 to n dopi:=i;/初始化并查集randomize;quicksort(1,e);/使用快速排序將邊按權值從小到大排列end;functio
6、n find(x:eger):eger;/并查集的 Find,用來判斷 2 個頂點是否屬于通分量beginif xpx thenpx:=find(px);find:=pxend;procedure union(a,b:通分量eger);/如果不屬于且權值最小則將2 個頂點合并到vart:eger;begina:=find(a);b:=find(b);if rar then beg:=a;a:=b;b:=tend;if ra=rthen inc(r);pa:=b;end;procedurekruskal;/主過程varen:eger;/en 為當前邊的count:eger;/統計進行了幾次合并。n-1 次合并后就得到最小生成樹tot:eger;/統計最小生成樹的邊權總和begincount:=0;en:=0; tot:=0;while countn-1 dobegininc(en);with edgesen dobeginif find(a)find(b) thenbeginunion(a,b);wrin(a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅行社與酒店合作協議(4篇)
- 《度假養生旅游業》課件
- 小學科學教科版 (2017)六年級下冊6.古代生物的多樣性教案配套
- 會議室租賃合同集合(18篇)
- 有關傳承國學經典演講稿(19篇)
- 黃沙回填施工方案
- 井田公路施工方案
- 《現代家居風格解析》課件
- 前擲實心球 教學設計 -八年級體育與健康
- 企業物流改進方案(3篇)
- 創傷現場急救課件
- 2025年云南德宏州宏康投資開發有限公司招聘筆試參考題庫含答案解析
- 勞動與烹飪課件
- 高血壓、2型糖尿病、高脂血癥、肥胖癥膳食運動指導要點基層醫務人員應用實操手冊
- 2025屆河北省邢臺市名校協作高三下學期一模英語試題(含答案)
- 2024內蒙古能源集團校園招聘394人筆試參考題庫附帶答案詳解
- 交通設計(Traffic Design)知到智慧樹章節測試課后答案2024年秋同濟大學
- 網絡安全和保密意識教育
- 2024年畢節市金沙縣全縣考調機關單位事業單位人員考試真題
- 水利系統職稱考試水利專業技術人員職稱考試題(附答案)
- 《橋梁健康監測》課件
評論
0/150
提交評論