課程名稱:《演算法分析與設計》
實驗日期:2023年 3月 9日 至 2021 年 3 月 14 日
學生姓名:甘世偉
所在班級:計科195
學號:2019212212053
實驗名稱:prim演算法
實驗地點:勤園13-218
同組人員:無
——————————————
問題:prim演算法的特點是時刻維持一棵樹,演算法不斷加邊,加的過程始終是一棵樹。
需要建立圖的儲存結構,通過圖的鄰接矩陣來進行prim演算法的實現。
解析prim演算法過程:
一條邊一條邊地加, 維持一棵樹。
初始 e = 空集合,v=
迴圈 ( n – 1 )次,每次選擇一條邊(v1,v2), 滿足:v 1屬於 v ,v2 不屬於v。且(v1,v2)權值最小。
e = e +(v1,v2)
v = v + v 2
最終 e中的邊是一棵最小生成樹, v包含了全部節點。
建立乙個圖的結構體儲存圖。
建立乙個visited陣列儲存已經求得的最小生成樹上的點集。
建立乙個prevex儲存最小生成樹某個結點的前驅結點,可以通過回溯求得邊集。
設計偽**
typedef
struct
mgraph;
void
prim
(mgraph *g)
;//儲存已經存的節點
int prevex[max_vertex_num]=;
//儲存已存節點的前驅節點
int sign;
//標記當前出發節點
for(
int i =
0; i < g->vexnum; i++
)for
(int j =
0; j < g->vexnum -
1; j++
)for
(int i =
0,sign2=start; i < g->vexnum; i++
)}
分析
設有n個節點;
時間複雜度:
prim函式有兩個兩層迴圈,則時間複雜度為2*n^2;
乙個一層迴圈,時間複雜度為n;
綜上時間複雜度為n^2;
空間複雜度:
圖的儲存空間複雜度為n^2;
其他變數空間複雜度均為1;
綜上空間複雜度為n^2;
原始碼
實驗報告 Kruskal演算法
課程名稱 演算法分析與設計 實驗日期 2021年 3月 9日 至 2021 年 3 月 14 日 學生姓名 甘世偉 所在班級 計科195 學號 2019212212053 實驗名稱 kruskal演算法 實驗地點 勤園13 218 同組人員 無 問題kruskal演算法 假設 wn v,是乙個含有 ...
演算法分析實驗報告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,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...