多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開源 > php教程 > 017-Prim算法-貪心-《算法設(shè)計(jì)技巧與分析》M.H.A學(xué)習(xí)筆記

017-Prim算法-貪心-《算法設(shè)計(jì)技巧與分析》M.H.A學(xué)習(xí)筆記

來源:程序員人生   發(fā)布時(shí)間:2016-06-30 08:42:24 閱讀次數(shù):2760次

基本思路:

定義結(jié)點(diǎn)集合U, V (U表示已選擇加入MST的結(jié)點(diǎn)集合,V表示未選)

1. 任選1個(gè)結(jié)點(diǎn)加入U(xiǎn)

2. 選擇1條邊權(quán)最小的邊,他的兩個(gè)結(jié)點(diǎn)分別屬于U, V,并把屬于V的那個(gè)結(jié)點(diǎn)加入U(xiǎn)

3. 重復(fù)履行2直到V空

 

偽代碼:

 


C++代碼:

int g[mnx][mnx]; int n, m; int d[mnx]; // 樸素 prim, 復(fù)雜度O(|V|^2) |V|:點(diǎn)數(shù), |E|:邊數(shù) int prim() { memset(d, 0x3f, sizeof d); //初始化 int ret = d[1] = 0; // 先把d[1]弄成0 for(int i = 1; i <= n; ++i) { int u = ⑴; for(int j = 1; j <= n; ++j) //找到d[u]最小的1個(gè)u if((u == ⑴ || d[u] > d[j]) && d[j] != ⑴) u = j; ret += d[u]; d[u] = ⑴; for(int j = 1; j <= n; ++j) // 更新和u鄰接的節(jié)點(diǎn)的d[j]值 d[j] = min(d[j], g[u][j]); } return ret; }
 

算法分析:

主要耗費(fèi)在查找邊權(quán)最小的邊,這1步的2重循環(huán)耗費(fèi)Θ(n2),所以算法的時(shí)間復(fù)雜度為Θ(n2)

 

堆優(yōu)化改進(jìn):

我們用小頂堆來完成查找最小邊,和Dijkstra算法1樣,算法共進(jìn)行了n⑴次插入、n⑴次刪除、m-n+1Siftup運(yùn)算。總的時(shí)間復(fù)雜度為Omlogn)。

 

偽代碼:

 


 

 

C++代碼:

int fst[mnx], nxt[mxe], cost[mxe], to[mxe], e; void init() { memset(fst, ⑴, sizeof fst); e = 0; } void add(int u, int v, int c) { to[e] = v, nxt[e] = fst[u], cost[e] = c, fst[u] = e++; } struct node { int u, dis; node(int u, int dis):u(u), dis(dis) {} bool operator < (const node &b) const { return dis > b.dis; } }; //堆優(yōu)化, 復(fù)雜度O(|E|log|V|), 稠密圖時(shí)比較慢 int primHeap() { memset(d, 0x3f, sizeof d); d[1] = 0; priority_queue<node> q; q.push(node(1,0)); // 先選定第1個(gè)節(jié)點(diǎn) int ret = 0; while(!q.empty()) { int u = q.top().u; int dd = q.top().dis; q.pop(); if(d[u] != dd) continue; // 如果是被更新之前的值的話就不取, continue掉 ret += dd; d[u] = ⑴; for(int j = fst[u]; ~j; j = nxt[j]) { int v = to[j], c = cost[j]; // 更新 if(d[v] > c && d[v] != ⑴) { d[v] = c; q.push(node(v, c)); } } } return ret; }


 

 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 另类 校园 春色 都市 亚洲 | 激情欧美日韩一区二区 | 波多野结衣在线免费观看视频 | 香蕉tv亚洲专区在线观看 | 4444亚洲国产成人精品 | a毛片全部播放免费视频完整18 | 欧美最猛黑人xxxx | 女人天堂网在线观看2019 | 色综合久久综合欧美综合图片 | 亚洲天堂手机版 | 国产成人免费a在线视频色戒 | 日本久久久久一级毛片 | 日本校园春色 | 用劲好爽再深点视频 | 亚洲精品一二三区-久久 | 亚洲精品456播放 | a级网站 | 2021国产精品一区二区在线 | 免费播放欧美毛片欧美a | 在线观看亚洲精品专区 | 欧美午夜网 | 国产91极品福利手机观看 | 免费亚洲视频在线观看 | 伊人啪啪网 | 欧美一级永久免费毛片在线 | 免费一级毛片正在播放 | 成人6969www色在线 | 中国美女隐私无遮挡免费视频 | www.亚洲天堂.com | 日韩一区国产二区欧美三区 | 波多野结衣久久 | 欧美人与物videos另类一 | 精品成人资源在线观看 | 亚洲成人播放 | 国产欧美自拍 | 福利久草| 视频免费视频观看网站 | 欧美刺激性色黄大片18 | 性欧美成人免费观看视 | xxxxx性视频免费播放 | 亚洲精品另类 |