• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab练习程序(Prim最小生成树)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

算法步骤:

1.任意找一顶点加入树中。

2.寻找所有与树相邻的元素,并取其边权重最小的并且不在树中的元素入树。

3.继续第二步,直到所有元素都入树。

效果和Kruskal算法是类似的。

matlab代码:

main.m

clear all;
close all;
clc;

G=[0 4 0 0 0 0 0 8 0;
   4 0 8 0 0 0 0 11 0;
   0 8 0 7 0 4 0 0 2;
   0 0 7 0 9 14 0 0 0;
   0 0 0 9 0 10 0 0 0;
   0 0 4 14 10 0 2 0 0;
   0 0 0 0 0 2 0 1 6;
   8 11 0 0 0 0 1 0 7;
   0 0 2 0 0 0 6 7 0];

[m n]=size(G);

q=[1];      %已经被标记的元素
k=1;        %已经标记的元素个数
A=[];       %最后产生的最小生成树
while length(q)~=m
    e=[];
    for i=1:k
        for j=1:n
            if G(q(i),j)~=0 && ~biaoji(j,q) %不在数中的元素
                e=[e;G(q(i),j) q(i) j];
            end
        end
    end
    
    [junk index]=min(e(:,1));    %求与当前标记的所有元素相邻的权重最小的边的索引
    A=[A;e(index,:)];       %最小生成树的三元组表示
    q=[q e(index,3)];
    k=k+1;  
end

biaoji.m

function re=biaoji(j,biao)  %判断j点是否已被标记
    l=length(biao);
    for i=1:l
       if j==biao(i) 
            re=1;
            return;
       end
    end
    re=0;
    return;
end

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
rust: Typical multi thread patterns发布时间:2022-07-18
下一篇:
微软的wasm和rust的wasm方案对比发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap