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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构图之二(最小生成树--克鲁斯卡尔算法)

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构图之二(最小生成树--克鲁斯卡尔算法) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【1】克魯斯卡爾算法

普里姆算法是以某頂點為起點,逐步找各頂點上最小權(quán)值的邊來構(gòu)建最小生成樹。

克魯斯卡爾算法是直接以邊為目標去構(gòu)建。

因為權(quán)值是在邊上,直接去找最小權(quán)值的邊來構(gòu)建生成樹也是很自然的想法,只不過構(gòu)建時要考慮是否會形成環(huán)路而已。

此時我們用到了圖的存儲結(jié)構(gòu)中的邊集數(shù)組結(jié)構(gòu)。

以下是邊集數(shù)組結(jié)構(gòu)的定義代碼:

本算法所用同普里姆算法的實例,我們直接創(chuàng)建圖的邊集數(shù)組。

并對邊的權(quán)值從小到大排序后如下圖:

【2】克魯斯卡爾算法及詳解

克魯斯卡爾算法及其詳解:

鑒于此算法很簡單,當 i=0, i=1, i=2時執(zhí)行結(jié)果可以眼觀,不再贅述。直接分析重點:

此算法的Find函數(shù)由邊數(shù)e決定,時間復雜度為O(loge),而外面有一個for循環(huán)e次。

所以克魯斯卡爾算法的時間復雜度為O(eloge)

對比兩個算法:

克魯斯卡爾算法主要針對邊展開,邊數(shù)少時效率會很高,所以對于稀疏圖有優(yōu)勢

而普利姆算法對于稠密圖,即邊數(shù)非常多的情況會好些。

【3】克魯斯卡爾算法實現(xiàn)

實現(xiàn)代碼如下:

1 #include <iostream> 2 using namespace std; 3 4 #define MAXVER 9 5 #define MAXEDGE 15 6 7 typedef struct Node 8 { 9 int begin; // 起點 10 int weight; // 權(quán)值 11 int end; // 末點 12 } edgeNode; 13 14 class Graph 15 { 16 private: 17 edgeNode edge[MAXEDGE]; 18 public: 19 Graph() 20 { 21 for (int i = 0; i < MAXEDGE; ++i) 22 { 23 edge[i].begin = edge[i].weight = edge[i].end = 0; 24 } 25 } 26 ~Graph() 27 {} 28 29 public: 30 void InsertSort() 31 { 32 for (int i = 0; i < MAXEDGE- 1; ++i) 33 { 34 if (edge[i+1].weight < edge[i].weight) 35 { 36 Node temp = edge[i+1]; 37 int j = i + 1; 38 do 39 { 40 edge[j] = edge[j-1]; 41 --j; 42 } while(j >= 0 && edge[j].weight > temp.weight); 43 44 edge[j+1] = temp; 45 } 46 } 47 } 48 49 istream & operator>>(istream &in) 50 { 51 int begin, value, end; 52 cout << "請輸入15條邊的起點 終點 權(quán)值:" << endl; 53 for (int i = 0; i < MAXEDGE; ++i) 54 { 55 in >> begin >> end >> value; 56 edge[i].begin = begin; 57 edge[i].weight = value; 58 edge[i].end = end; 59 } 60 return in; 61 } 62 ostream & operator<<(ostream &out) 63 { 64 // 插入排序 65 InsertSort(); 66 out << "輸出排序邊權(quán)值后信息:" << endl; 67 for (int i = 0; i < MAXEDGE; ++i) 68 { 69 out << "edge[" << i << "] " << edge[i].begin << " " << edge[i].weight << " " << edge[i].end << endl; 70 } 71 return out; 72 } 73 // 克魯斯卡爾算法 74 void MiniSpanTree_Kruskal() 75 { 76 int i = 0, n = 0, m = 0; 77 int parent[MAXVER]; 78 for ( ; i < MAXVER; ++i) 79 parent[i] = 0; 80 for (i = 0; i < MAXEDGE; ++i) 81 { 82 n = Find(parent, edge[i].begin); 83 m = Find(parent, edge[i].end); 84 if (n != m) 85 { 86 parent[n] = m; 87 cout << " " << edge[i].begin << " " << edge[i].end << " " << edge[i].weight << endl; 88 } 89 } 90 } 91 92 int Find(int *parent, int f) 93 { 94 while (parent[f] > 0) 95 f = parent[f]; 96 return f; 97 } 98 }; 99 100 istream & operator>>(istream &in, Graph &g) 101 { 102 g >> in; 103 return in; 104 } 105 106 ostream & operator<<(ostream &out, Graph &g) 107 { 108 g << out; 109 return out; 110 } 111 112 void main() 113 { 114 Graph myg; 115 cin >> myg; 116 cout << myg; 117 myg.MiniSpanTree_Kruskal(); 118 } 119 // 備注: 120 // 最小生成樹克魯斯卡爾算法實現(xiàn) 121 // 整理于2013-12-04 122 // 測試需要輸入: 123 /* 124 起始 終點 權(quán)值 125 0 1 10 126 0 5 11 127 1 2 18 128 1 8 12 129 1 6 16 130 2 8 8 131 2 3 22 132 3 8 21 133 3 6 24 134 3 7 16 135 3 4 20 136 4 7 7 137 4 5 26 138 5 6 17 139 6 7 19 140 */ View Code

?

Good? Good? Study, Day? Day? Up.

順序? 選擇? 循環(huán)? 總結(jié)

轉(zhuǎn)載于:https://www.cnblogs.com/Braveliu/p/3457872.html

總結(jié)

以上是生活随笔為你收集整理的数据结构图之二(最小生成树--克鲁斯卡尔算法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级丰满大乳hd高清 | 诱夫1v1高h| 中文视频在线 | 五月激情六月婷婷 | 亚洲13p| 欧美一级大片在线观看 | 欧美日韩亚洲免费 | 国产精品日日摸天天碰 | 一边吃奶一边摸做爽视频 | 久久精品系列 | 欧美成人三级在线播放 | 91嫩草精品 | 国产探花在线精品一区二区 | 日本伊人网 | 精品国产一区二区三区性色 | 国产主播av| 精品国内自产拍在线观看视频 | 亚洲AV无码久久精品色三人行 | 人与禽一级全黄 | 国产老熟女一区二区三区 | 男生女生羞羞网站 | 中文字幕在线观看日本 | 无码日韩精品一区二区 | 天堂网一区二区 | 在线看国产视频 | av黄色在线观看 | 亚洲第一色网站 | 国产福利不卡 | 成年人爱爱视频 | 日韩成人高清视频 | 91成人在线观看高潮 | 蜜桃久久久久 | 不卡av在线免费观看 | 国产精品你懂的 | 午夜毛片在线 | 国产精品久久久 | 日本一级黄 | 欧美一级久久久 | 欧美激情一二三 | 深爱激情五月婷婷 | 另类天堂 | 无码人妻精品一区二区三 | 成人福利视频网站 | 999久久久久久久久6666 | 一级特黄aaaaaa大片 | 91视频导航| 自拍啪啪 | 在线观看福利片 | 亚洲av综合色区无码二区爱av | 爱情岛成人| 欧美激情第五页 | 国产精品无码专区av在线播放 | 成人久久视频 | 久久成年人 | 狠狠躁18三区二区一区传媒剧情 | 在线观看a网站 | 深夜福利视频导航 | www三级免费 | 秋霞福利视频 | 天天干天天爽天天操 | 亚洲一区二区三区在线看 | 国产日批视频 | 在线日韩中文字幕 | 日韩国产欧美在线视频 | 精品伦一区二区三区 | 日本黄网站色大片免费观看 | 久久久久久黄色片 | 天堂在线一区二区 | 18视频在线观看娇喘 | 丰满人妻一区二区三区精品高清 | jizz成熟丰满日本少妇 | 午夜视频免费 | 中文字幕 自拍偷拍 | 亚洲网站一区 | 国产毛片久久久久久国产毛片 | 污污av| 天天视频黄色 | 国产欧美一区二区精品久久久 | 国产精品无码一区二区无人区多人 | 亚洲男人的天堂网 | 色婷婷综合网 | 蜜臀在线视频 | 欧美精品在线一区 | 狠狠网站 | 成年人网站在线免费观看 | 久久二区三区 | 成人观看视频 | 在线黄色免费网站 | 日韩久久视频 | 99涩涩| 少妇闺蜜换浪荡h肉辣文 | 久久2018| 国产精品久久久久电影 | 白浆一区 | 亚欧洲精品视频在线观看 | 红桃视频91| 亚洲精品乱码久久久久久 | 国产黄色www| 少妇高潮一区二区三区喷水 |