實驗報告 Prim演算法

2021-10-22 03:05:27 字數 1403 閱讀 6820

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

實驗日期: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,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...