資料結構 鄰接矩陣的最小生成樹Prim演算法

2022-07-31 12:54:13 字數 1562 閱讀 9416

#include 

<

iostream

>

#include

<

iomanip

>

using

namespace

std;

#define

max_vertex_num 10

//最大頂點個數

#define

infinity 32768

typedef

char

vertype;

typedef

intvrtype;

typedef

struct

mgraph,

*mgraph;

typedef

struct

closedge[max_vertex_num];

//記錄從頂點集u到v-u的代價最小的邊的輔助陣列定義

//初始化圖

void

init_mgraph(mgraph

&g)

void

add_vexs(mgraph

&g)

//增加頂點

}void

add_arcs(mgraph

&g)

//增加邊

if(g

->

vexs[j]

==ch2)}g

->

arcs[row][col]

=weight;

//有向帶權圖只需把1改為weight

g->

arcs[col][row]

=weight;}}

void

creat_mgraph(mgraph

&g)

//建立圖

void

print_mgraph(mgraph

&g)

//列印圖

cout

<<

endl;} }

//返回頂點v在頂點向量中的位置

intlocatevex(mgraph

&g, vertype v)

//求出t的下乙個節點,第k節點

intminimun(mgraph

&g, closedge closedge)

}returnk;}

//普里姆演算法

void

minispantree_prim(mgraph

&g, vertype u)

//普里姆演算法從頂點u出發構造g的最小生成樹t,輸出t的各條邊。

}closedge[k].lowcost =0

;

//初始,u=

for(i=1

;i<

g->

vexnum;i

++)

//選擇其餘g.vexnum-1個頂點}}

}//minispantree_prim

intmain()

最小生成樹Prim演算法(鄰接矩陣和鄰接表)

最小生成樹,普利姆演算法 簡述演算法 先初始化一棵只有乙個頂點的樹,以這一頂點開始,找到它的最小權值,將這條邊上的令乙個頂點新增到樹中 再從這棵樹中的所有頂點中找到乙個最小權值 而且權值的另一頂點不屬於這棵樹 重複上一步 直到所有頂點併入樹中 圖示 注 以a點開始,最小權值為 另一頂點是 將 加入到...

鄰接矩陣 最小生成樹 普里姆演算法

風雨難洗心痕,滄桑不滅情傷。莫要輕言亙古,離散才看荒涼。include stdio.h typedef char vertextype 頂點 typedef int edgetype 邊的權值 define maxvex 100 define infinity 65535 鄰接矩陣 typedef ...

最小生成樹之prime演算法(鄰接矩陣實現)

概念 生成樹 乙個連通圖的生成樹,指的是該圖的乙個子圖 沒有形成迴路 他包含圖的所有結點,但只有把所有結點連線在一起的n 1條必要的邊 最小生成樹 乙個連通圖的生成樹中,所有邊的權值加起來最小的生成樹 稱為最小生成樹 簡介 prime演算法可在加權連通圖里搜尋最小生成樹。即 所有邊的權值之和為最小。...