資料結構 Prim演算法

2021-10-01 05:14:34 字數 1641 閱讀 9923

基本思想:(加點)

設g=(v, e)是具有n個頂點的連通網,

t=(u, te)是g的最小生成樹,

t的初始狀態為u=(u0∈v),te=,

重複執行下述操作:

在所有u∈u,v∈v-u的邊中找一條代價最小的邊(u, v)併入集合te,同時v併入u,直至u=v。

偽**:

演算法:prim

輸入:無向連通網g=

(v,e)

輸出:最小生成樹t=

(u,te)

1. 初始化兩個輔助陣列lowcost=arc[0]

[i]和adjvex=0(

0是始點);

2. 輸出頂點u0,將頂點u0加入集合u中;

3. 重複執行下列操作n-

1次 3.1 在lowcost中選取最短邊(lowcost[k]

),取對應的頂點序號k;

3.2 輸出頂點k和對應的權值;

3.3 將頂點k加入集合u中(lowcost[k]

=0);

3.4 調整陣列lowcost和adjvex;

**實現:

#include

using

namespace std;

const

int max=10;

//圖中最多頂點個數

int visited[max]=;

//全域性陣列變數visited初始化

class

mgraph

;//析構函式為空

void

dft(

int v)

;//深度優先遍歷

void

bft(

int v)

;//廣度優先遍歷

void

prim

(int v)

;//prim演算法找最小生成樹};

//無權值圖的建構函式

/*mgraph::mgraph(char a,int n,int e)

}*///有權值圖的建構函式

/*mgraph::mgraph(char a,int n,int e)

}*/mgraph::

mgraph

(char a,

int n,

int e)}}

int mgraph::

minedge

(int r,

int n)

}return j;

}void mgraph::

dft(

int v)

void mgraph::

bft(

int v)}}

void mgraph::

prim

(int v)

//從頂點v出發

lowcost[v]=0

;//將頂點v加入到集合

for(k=

1;k)//迭代n-1次}}

/*int main()

; mgraph mg(ch,6,9);

for(i=0;iint

main()

資料結構 prim演算法簡析

普里姆 prim 演算法 define m 6 define max 100 include include int cost m m int lowcost m adjvex m s m 其中lowcost陣列是選中定點到圖中頂點的最小權值 adjvex陣列存放的是到各個頂點的前驅頂點的位置 s陣...

大話資料結構之Prim演算法

構造最小生成樹可以有多種演算法。其中多數演算法利用了最小生成樹的下列一種簡稱為mst的性質 假設n v,是乙個連通網,u是頂點集v的乙個非空子集。若 u,v 是一條具有最小權值邊的邊,其中u屬於u,v屬於v u,則必存在一顆包含 u,v 的最小生成樹。prim演算法的定義 假設n p,e 是連通網,...

《大話資料結構》之Prim演算法

prim演算法作用是構造連通網的最小代價生成樹。演算法思想 以任意乙個點開始,找權值最小的一條邊,將此邊和兩個頂點加入最小生成樹集合,以最小生成樹的點集合中的每乙個點為起點,找尋終點不在集合中的權值最小的邊,並將結果加入集合,重複這個操作,直至所有的點都已經加入集合。圖的鄰接矩陣表示 typedef...