實驗報告 Kruskal演算法

2021-10-22 03:36:48 字數 1254 閱讀 9165

課程名稱:《演算法分析與設計》

實驗日期:2023年 3月 9日 至 2021 年 3 月 14 日

學生姓名:甘世偉

所在班級:計科195

學號:2019212212053

實驗名稱:kruskal演算法

實驗地點:勤園13-218

同組人員:

——————————————

問題kruskal演算法:

假設 wn=(v,) 是乙個含有 n 個頂點的連通網,則按照kruskal演算法構造最小生成樹 的過程為:先構造乙個只含 n 個頂點,而邊集為空的子圖,若將該子圖中各個頂點看成是各棵樹上的根結點,則它是乙個含有 n 棵樹的乙個森林。之後,從網的邊集 e 中選取一條權值最小的邊,若該條邊的兩個頂點分屬不同的樹,則將其加入子圖,也就是說,將這兩個頂點分別所在的兩棵樹合成一棵樹;反之,若該條邊的兩個頂點已落在同一棵樹上,則不可取,而應該取下一條權值最小的邊再試之。依次類推,直至森林中只有一棵樹,也即子圖中含有 n-1條邊為止。

解析建立乙個圖的儲存結構;

將圖的鄰接矩陣存入;

通過遍歷來找出最小邊,且邊的頂點至少有乙個是未訪問過的;

將該邊加入樹,且將節點訪問;

繼續遍歷;

遍歷n-1次找到n-1條邊結束遍歷;

形成乙個最小生成樹;

設計

typedef

struct

mgraph;

void

kruskal

(mgraph* g)

;//儲存已經存的節點

for(

int x =

0; x < g->vexnum -

1; x++

) visited[signa]=1

;//標記已加入節點

visited[signb]=1

;}

4.分析

設節點數為n;

時間複雜度:

有乙個三層迴圈複雜度,時間複雜度為n^3;

其他語句時間複雜度均為1;

綜上時間複雜度為n^3;

空間複雜度:

圖的結構體空間複雜度為n^2;

其他變數空間複雜度為1;

綜上空間複雜度為n^2;

5. 原始碼

實驗報告 Prim演算法

課程名稱 演算法分析與設計 實驗日期 2021年 3月 9日 至 2021 年 3 月 14 日 學生姓名 甘世偉 所在班級 計科195 學號 2019212212053 實驗名稱 prim演算法 實驗地點 勤園13 218 同組人員 無 問題 prim演算法的特點是時刻維持一棵樹,演算法不斷加邊,...

演算法分析實驗報告02

演算法分析 斐波那契數列 第1,2兩個數為1,1.從第3個數開始,該數是其前面兩個數之和。利用遞迴設計演算法計算第20個斐波那契數。include using namespace std intfibonacci int n intmain 1.演算法分析 10!10 9 8 7 6 5 4 3 2...

實驗五實驗報告

系統架構圖 首先我在我的電腦裡建立了有名稱要求的資料夾,然後開啟android studio clone了我們的小組專案。此處因為已經clone過了,所以無法再把這個專案clone進去 進行編譯,執行,測試均正常 我在遊戲主介面載入了乙個toast,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...