日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产高清日韩 | 精品成人在线观看 | 在线视频区| 91视频播放| 亚洲精品成av人片天堂无码 | 色射网 | 日本韩国在线播放 | 国产精品爱啪在线线免费观看 | 国产高清一级片 | 韩国一二三区 | 亚洲欧美视频在线 | 人妖粗暴刺激videos呻吟 | 国产精品国产精品国产专区蜜臀ah | hitomi一区二区三区精品 | 韩国三级国产 | 久久99精品国产麻豆婷婷 | 欧美高清性xxxxhdvideosex | 乱子伦一区二区三区 | 偷偷操网站 | 一级淫片免费看 | 狠狠躁日日躁 | 亚洲清纯唯美 | 成人aⅴ视频 | 一级片黄色片 | 一本色道久久88亚洲精品综合 | 亚洲婷婷综合网 | 亚洲精品日韩精品 | 欧美亚洲一级片 | 色婷婷午夜 | 免费av在线播放 | 欧美成人hd| 高h捆绑拘束调教小说 | 黄色另类小说 | 一本一道久久a久久精品蜜桃 | 欧美一区二区三区不卡视频 | 国产一级做a爰片久久毛片男男 | 日韩一区二区三区三四区视频在线观看 | 99久久久 | 99热偷拍 | 尤物精品视频在线观看 | 欧美一级性生活视频 | 久久久久久久av | 丰满少妇在线观看资源站 | 婷婷伊人五月天 | 日本三级欧美三级 | 亚洲成人av综合 | 天堂中文8 | 2一3sex性hd| 久热网| 久久婷婷一区二区 | 在线色播 | 国产3p精品一区 | 国产区欧美区日韩区 | 久操久操久操 | 国产精品久久久一区 | 在线观看免费视频一区 | 99在线观看视频 | 国产高清一区二区三区 | 成人免费看黄 | 日韩三级视频在线 | 伊人亚洲 | 少妇诱惑av| 久久精品性 | 国产黄色片在线播放 | av老司机在线 | 国产在线视频福利 | 毛茸茸日本熟妇高潮 | 亚洲av成人精品日韩在线播放 | 色在线免费观看 | 国产在线你懂得 | 在线免费观看www | 黄片毛片在线看 | 国产伦精品一区二区三区视频网站 | 国产视频一区二区三区在线 | 在线观看成人动漫 | 草碰在线| 日韩精品一二三四区 | 国内成人av | 殴美一级黄色片 | 久草剧场| 国产精品水嫩水嫩 | 欧美日韩看片 | 动漫精品一区 | 天天干天天操天天 | 亚洲日日操 | 尤物视频在线播放 | 精品乱码一区二区三四区视频 | 麻豆影视在线播放 | 最新日韩精品 | 久久免费国产精品 | 国产一区二区精彩视频 | 国产色无码精品视频国产 | 欧美日韩在线免费播放 | 久久久久久免费观看 | 一级片aaa | 台湾佬av| 深爱开心激情网 | 色呦呦视频在线 | 亚洲dvd|