数学建模社区-数学中国

标题: 数模:最小生成树prim算法(通用matlab代码) [打印本页]

作者: 2744557306    时间: 2023-11-30 15:17
标题: 数模:最小生成树prim算法(通用matlab代码)
通用代码
  1. function [result]=myprim(a)//a为传入的每个点的距离矩阵
    # e$ s* Y+ K5 ?5 y% {0 p
  2. result=[];//用result(3×n)矩阵来表示,第一行表示起点,第二行表示终点,第三行表示权值$ ?# f* j: o+ B9 e
  3. p=1;tb=2:length(a);
    8 b5 d! y8 }; T/ h
  4. while size(result,2)~=length(a)-1
    ) T' ]/ N& w' v, K0 n8 @: [' X
  5.     temp=a(p,tb);temp=temp(:);8 H0 G& {; B9 i# b- _
  6.     d=min(temp);
    6 u% o5 p. }( F: e4 `
  7.     [jb,kb]=find(a(p,tb) == d,1);# f- z7 `2 v/ v
  8.     j=p(jb);k=tb(kb);' u  ?" I0 G* V' O) B
  9.     result=[result,[j;k;d]];p=[p,k];tb(find(tb==k))=[];; ]8 N: {8 h# }' K9 [  z' `
  10. 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. 1     2     5     4     4     7
    0 A4 n- F" q, t' U
  2. 2     5     4     6     7     34 F3 b9 _1 w' |
  3. 50    40    10    30    42    45$ t& A9 y2 K2 ^+ S* M, f  p
  4. 起点就是1,终点是2距离50
    , x# x4 w2 o) c; V7 Y+ |" O
  5. 然后从2,到5距离401 e$ j  [9 g) @! m
  6. 从5到4距离10, S+ {& |2 S6 q) H
  7. 从4到6距离30
    $ w* n, j; T, t* H0 l
  8. 从4到7距离42
    ( N( X3 ^! c7 M' ]5 T- W
  9. 从7到3距离45
    : t# d3 i; O  y. a
  10. 最后生成完一整棵树/ S+ l" G' w+ Z7 i
复制代码

- R- j- Z/ X# _6 b4 {




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5