色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Prim算法以及優化實現

算法與數據結構 ? 來源:未知 ? 作者:鄧佳佳 ? 2018-03-31 10:32 ? 次閱讀

最小生成樹(Minimum Spanning Trees),簡稱MST。是圖論中一個非常重要的概念。解決這個問題有兩種算法,今天暫且先來討論一下Prim Algorithm。不做特別說明,討論的都是無向圖。

首先介紹一下最小生成樹的概念,我們知道,圖可以這樣定義 G=(V,E) ,其中 G 表示圖,V 表示頂點集合,E 表示邊集合。最小生成樹是這樣一棵樹,它滿足:

通俗地講,就是使得圖GG連通時,所選取的邊的長度的和最小。

如上圖,加粗的路徑就是在最小生成樹上的路徑。

算法講解:

現在,我們開始討論Prim Algorithm。這個算法可以分為下面幾個步驟:

將頂點集 V 分成兩個集合 A 和 B,其中集合 A 表示目前已經在MST中的頂點,而集合 B 則表示目前不在 MST 中的頂點。

尋找與集合 A 連通的最短的邊 (u,v),將這條邊加入最小生成樹中。(此時,與(u,v) 相連的頂點,不妨設為 Bi,也應加入集合 A 中)重復第二步,直至集合 B 為空集。

算法的大體思想就是這樣了。為了方便理解,我們先來看一下下面一張圖片:

對照上面的圖片,想必對于Prim Algorithm也有了一定的理解。

下面我們來設計算法,顯然,我們需要遍歷集合 A 中所有頂點及與之相連的邊,取連接到集合B的權值最小的邊,加入最小生成樹。這樣一來,復雜度將達到 O(n3)。

我們可以對這個想法進行優化。我們維護一 pCost[i] 數組,用來表示從集合A到與之相鄰的節點的最小費用。這樣,我們只要每次取這個數組中的最小值,把它在集合B中所對應的結點Vi加入到集合A中。

每次加入結束以后,都要更新pCost[i]數組。即枚舉所有與結點Vi相連的邊,判斷是否比pCost[i]數組中的最小費用小,如果比它小,則更新。這樣可以將算法優化到O(n2)。

代碼如下:

#include

#include

#include

using namespace std;

const int MAX = 1024;

const int INF = 2147483647;// 設置最大權值

int N, M;

vector > pMap[MAX];// 鄰接表

void Prim();

int main()

{

cin >> N >> M;

for(int i = 1; i <= M; i++)

{

int u, v, w;

cin >> u >> v >> w;

pMap[u].push_back(make_pair(v, w));

pMap[v].push_back(make_pair(u, w));

}

Prim();

return 0;

}

void Prim()

{

int nCost = 0;

vector pMST;// 儲存MST的結點

int pCost[MAX];// 儲存與集合A相鄰的頂點的最小權值,0表示該結點已經在MST中

pMST.push_back(1);// 將結點1加入MST

pCost[1] = 0;

for(int i = 2; i <= N; i++)// 初始化,切記要將除1以外的都置為INF

{ pCost[i] = INF; }

for(int i = 0; i < pMap[1].size(); i++)// 處理與結點1相連的頂點

{ pCost[pMap[1][i].first] = pMap[1][i].second; }

for(int i = 1; i <= N - 1; i++)// 剩余N-1個頂點,循環N-1次

{

int nVertex = 0, nWeight = INF;// 用于尋找最短的邊

for(int j = 1; j <= N; j++)

{

if(nWeight > pCost[j] && pCost[j] != 0)

{

nVertex = j;

nWeight = pCost[j];

}

}

pCost[nVertex] = 0;

pMST.push_back(nVertex);// 將節點nVertex加入MST

nCost += nWeight;// 計算MST的費用

for(int j = 0; j < pMap[nVertex].size(); j++)// 更新pCost數組

{

if(pCost[pMap[nVertex][j].first] != 0 &&

pCost[pMap[nVertex][j].first] > pMap[nVertex][j].second)

{

pCost[pMap[nVertex][j].first] = pMap[nVertex][j].second;

}

}

}

cout << "MST Cost is " << nCost << endl;

cout << "The vertexs in MST are ";

for(int i = 0; i < pMST.size(); i++)

{ cout << pMST[i] << " "; }?

cout << endl;

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4607

    瀏覽量

    92840
  • 程序
    +關注

    關注

    117

    文章

    3785

    瀏覽量

    81004

原文標題:Prim 算法及其高效實現

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA芯片用于神經網絡算法優化的設計實現方案

    前言 AI芯片(這里只談FPGA芯片用于神經網絡加速)的優化主要有三個方面:算法優化,編譯器優化以及硬件
    的頭像 發表于 09-29 11:36 ?4913次閱讀
    FPGA芯片用于神經網絡<b class='flag-5'>算法</b><b class='flag-5'>優化</b>的設計<b class='flag-5'>實現</b>方案

    定點算法實現優化

    TDSDM642是TI公司推出的定點DSP芯片,具有性價比高、運算速度快的優點,但是定點DSP對于浮點運算比較困難,因此在系統實現時需要對算法進行浮點到定點的移植。同時,為了使DSP上的代碼獲得
    發表于 04-18 10:54

    【TL6748 DSP申請】基于DSP的目標跟蹤算法研究及優化實現

    申請理由:本人為北工大的研究生,專業為DSP與嵌入式系統。熟悉DSP和某些圖像算法?,F在課題在研究跟蹤算法以及優化實現,所以想申請次開發板!
    發表于 09-09 16:59

    請問如何實現優化算法編程?

    什么是Viterbi算法?目標處理器是什么?如何實現優化算法編程?
    發表于 04-27 06:58

    粒子群算法城鎮能源優化調度問題

    computation)。源于對鳥群捕食的行為研究。粒子群優化算法的基本思想:是通過群體中個體之間的協作和信息共享來尋找最優解.PSO的優勢:在于簡單容易實現并且沒有許多參數的調節。目前已被廣泛應用于函數
    發表于 07-07 06:04

    果蠅優化算法MATLAB實現

    果蠅優化算法MATLAB實現發布時間:2018-10-12 23:28,瀏覽次數:1183, 標簽:MATLAB果蠅優化算法--Matlab
    發表于 08-17 07:28

    果蠅優化算法MATLAB實現過程是怎樣的?

    果蠅優化算法MATLAB實現過程是怎樣的?
    發表于 11-22 07:48

    智能優化算法及其應用_王凌著

    本書系統地敘述模擬退火算法、遺傳算法、禁忌搜索、神經網絡優化算法、混沌優化、混合優化策略等智能
    發表于 10-10 16:23 ?0次下載

    基于FPGA的SM3算法優化設計與實現

    基于FPGA的SM3算法優化設計與實現的論文
    發表于 10-29 17:16 ?5次下載

    SVPWM算法優化及其FPGA_CPLD實現

    SVPWM算法優化及其FPGA_CPLD實現
    發表于 04-13 15:42 ?18次下載

    FPGA信號處理算法設計、實現以及優化(南京)

    利用FPGA實現信號處理算法是一個難度頗高的應用,不僅涉及到對信號處理算法、FPGA芯片和開發工具的學習,還意味著要改變傳統利用軟件在DSP上實現
    發表于 12-26 17:26 ?12次下載

    基于DM642的H.264編碼算法優化實現

    基于DM642的H.264編碼算法優化實現
    發表于 05-18 09:22 ?1次下載

    DM6446的車牌定位快速算法實現優化

    DM6446的車牌定位快速算法實現優化
    發表于 10-26 15:27 ?1次下載
    DM6446的車牌定位快速<b class='flag-5'>算法</b><b class='flag-5'>實現</b>與<b class='flag-5'>優化</b>

    基于Prim初始種群選取優化遺傳算法的三維片上網絡低功耗映射

    的優勢,將計算任務合理地分配到各個網絡節點,對于優化三維片上網絡功耗和散熱等問題具有很高的效率。通過仿真實驗,對所提出的基于Prim算法的改進GA與基本GA的3D NoC映射算法進行了
    發表于 12-07 14:40 ?0次下載
    基于<b class='flag-5'>Prim</b>初始種群選取<b class='flag-5'>優化</b>遺傳<b class='flag-5'>算法</b>的三維片上網絡低功耗映射

    一文詳細了解Prim最小生成樹算法

    像圖論算法這種高級算法雖然不算難,但是閱讀量普遍比較低,我本來是不想寫 Prim 算法的,但考慮到算法知識結構的完整性,我還是想把
    的頭像 發表于 03-16 15:27 ?2889次閱讀
    主站蜘蛛池模板: 女性露出奶头流出精子| 成人短片迅雷下载| 亚洲精品永久免费| 色精品极品国产在线视频| 欧美黄色一级| 欧美日韩另类在线专区| 蜜桃久久久亚洲精品成人| 啦啦啦视频在线观看WWW| 久久精品国产99欧美精品亚洲 | 涩涩涩涩爱网站| 日本中文字幕伊人成中文字幕 | 国产树林野战在线播放| 国产电影午夜成年免费视频| 成人免费视频在线| 调教美丽的白丝袜麻麻视频| 超碰人热人人热人人看| 成人公开免费视频| 丰满饥渴老太性hd| 国产精品久久久久婷婷五月色婷婷 | 久久精品亚洲国产AV涩情| 久草免费视频在线观看| 久久草福利自拍视频在线观看| 久久操热在线视频精品| 久热人人综合人人九九精品视频| 久久人妻无码毛片A片麻豆| 久久视频精品38在线播放| 麻豆第一区MV免费观看网站| 免费观看激烈日板子| 青青app| 无止侵犯高H1V3无止侵犯| 性欧美sexovideotv| 亚洲性爱城| 中文字幕一区久久久久| china中国gay偷拍| 国产69精品久久久久无码麻豆| 国产精一品亚洲二区在线播放| 黄片长版看嘛| 蜜桃视频一区二区| 熟妇无码乱子成人精品| 亚洲免费视频观看| 538视频这里只有精品|