数学建模社区-数学中国
标题: 数模:最小生成树prim算法(通用matlab代码) [打印本页]
作者: 2744557306 时间: 2023-11-30 15:17
标题: 数模:最小生成树prim算法(通用matlab代码)
通用代码- function [result]=myprim(a)//a为传入的每个点的距离矩阵
# e$ s* Y+ K5 ?5 y% {0 p - result=[];//用result(3×n)矩阵来表示,第一行表示起点,第二行表示终点,第三行表示权值$ ?# f* j: o+ B9 e
- p=1;tb=2:length(a);
8 b5 d! y8 }; T/ h - while size(result,2)~=length(a)-1
) T' ]/ N& w' v, K0 n8 @: [' X - temp=a(p,tb);temp=temp(:);8 H0 G& {; B9 i# b- _
- d=min(temp);
6 u% o5 p. }( F: e4 ` - [jb,kb]=find(a(p,tb) == d,1);# f- z7 `2 v/ v
- j=p(jb);k=tb(kb);' u ?" I0 G* V' O) B
- result=[result,[j;k;d]];p=[p,k];tb(find(tb==k))=[];; ]8 N: {8 h# }' K9 [ z' `
- end) e4 A ^) y6 J# G2 S6 w9 a6 J
复制代码 怎么看result我怕有些同学想用这个代码,看不懂result里面元素什么意思,在此提示
! `! r1 p' G3 i: ]result第一行表示起点,第二行表示终点,第三行表示权值
/ k6 t& L, M7 k0 g* O0 ^9 b( q例如' J1 _& r7 @" B% V9 s% s/ B/ N
result =
- 1 2 5 4 4 7
0 A4 n- F" q, t' U - 2 5 4 6 7 34 F3 b9 _1 w' |
- 50 40 10 30 42 45$ t& A9 y2 K2 ^+ S* M, f p
- 起点就是1,终点是2距离50
, x# x4 w2 o) c; V7 Y+ |" O - 然后从2,到5距离401 e$ j [9 g) @! m
- 从5到4距离10, S+ {& |2 S6 q) H
- 从4到6距离30
$ w* n, j; T, t* H0 l - 从4到7距离42
( N( X3 ^! c7 M' ]5 T- W - 从7到3距离45
: t# d3 i; O y. a - 最后生成完一整棵树/ S+ l" G' w+ Z7 i
复制代码
- R- j- Z/ X# _6 b4 {
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |