課程名稱:《演算法分析與設計》
實驗日期: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,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...