无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C語言解決最小生成樹(Prim & Kruskal算法)

2023-08-16 22:33 作者:快樂的小log  | 我要投稿

????????最小生成樹是一個無向連通圖的最小權(quán)重生成樹。在C語言中,可以使用Prim算法或Kruskal算法來實現(xiàn)最小生成樹。

Prim算法實現(xiàn)最小生成樹的思路如下:

  1. 創(chuàng)建一個數(shù)組key[],用于存儲頂點到最小生成樹的最小權(quán)重。

  2. 創(chuàng)建一個數(shù)組parent[],用于存儲最小生成樹中每個頂點的父節(jié)點。

  3. 創(chuàng)建一個數(shù)組visited[],用于標(biāo)記頂點是否已經(jīng)加入最小生成樹。

  4. 將key[]數(shù)組初始化為無窮大(INF),parent[]數(shù)組初始化為空(-1),visited[]數(shù)組初始化為false。

  5. 將第一個頂點作為起始頂點,將key[0]設(shè)置為0。

  6. 循環(huán)進行以下步驟,直到所有頂點都被加入最小生成樹:

    1. 找到未加入最小生成樹的頂點中key值最小的頂點。

    2. 將該頂點標(biāo)記為visited[]數(shù)組中的true。

    3. 遍歷該頂點的所有鄰接頂點,如果鄰接頂點未被訪問且邊的權(quán)重小于key值,則更新key值和parent值。

  7. 輸出最小生成樹的邊和權(quán)重。

Kruskal算法實現(xiàn)最小生成樹的思路如下:

  1. 創(chuàng)建一個數(shù)組parent[],用于存儲每個頂點的父節(jié)點。

  2. 創(chuàng)建一個數(shù)組rank[],用于存儲每個頂點的秩。

  3. 創(chuàng)建一個輔助數(shù)組edges[],用于存儲圖中的所有邊。

  4. 將圖中的所有邊按照權(quán)重從小到大排序。

  5. 初始化parent[]數(shù)組和rank[]數(shù)組,將所有頂點的父節(jié)點設(shè)置為自身,秩設(shè)置為0。

  6. 循環(huán)遍歷排序后的邊,如果兩個頂點不在同一個連通分量中(通過判斷它們的最終父節(jié)點是否相同):

    1. 將邊加入最小生成樹中。

    2. 合并兩個頂點所在的連通分量,即將其中一個頂點的父節(jié)點設(shè)置為另一個頂點。

  7. 輸出最小生成樹的邊和權(quán)重。

prim算法運行結(jié)果
Kruskal算法運行結(jié)果


C語言解決最小生成樹(Prim & Kruskal算法)的評論 (共 條)

分享到微博請遵守國家法律
昭觉县| 安化县| 沿河| 星子县| 崇仁县| 崇阳县| 金门县| 长子县| 屯门区| 阳江市| 威海市| 高尔夫| 巴林左旗| 双辽市| 临高县| 毕节市| 广西| 肥东县| 河池市| 天祝| 新宾| 南城县| 长顺县| 闻喜县| 泸定县| 阜南县| 桃源县| 舒兰市| 苍南县| 阳信县| 建平县| 清丰县| 安泽县| 三门峡市| 扶沟县| 安仁县| 启东市| 民权县| 宁陵县| 湛江市| 报价|