⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prim.m

📁 最小生成树 采用C程序编程实现的PRIM算法
💻 M
字号:
function [p,data]=prim(a,e)   
%在数据结构课程设计之余,即兴之作吧
%最小生成树的prim算法
%a为邻接矩阵,e为出发的顶点的序号
%p返回的是最小生成树的邻接矩阵
%data记录最后最小生成树的权值
data=0;
m=length(a);        %图的顶点个数
if e>m|e<1
    fprintf('e值越界!');
else
b=e;                %b存储已经入树的顶点的号码,顶点编号默认从1到n   
p=zeros(m,m);
for i=1:m
    for j=1:m
         c(i,j)=inf;
     end
end
while length(b)<m       %树中顶点个数不足m
    for i=1:length(b)
        c(i,:)=a(b(i),:);
    end
    [x,y]=ind2sub(size(c),find(c==min(min(c))));   %当前c中最小元素在c中的双下标表示
    y=y(1);
    k=find(a(:,y)==min(min(c)));                   %在a中找到这个元素的位置(列位置已知为y)
    for i=1:length(k)                              %确定这个元素的行位置k
        if any(b==k(i))
            k=k(i); break;
        end
    end
    if ~any(b==y)
        b(length(b)+1)=y;
        p(k,y)=1; p(y,k)=1;
        data=data+a(k,y);
    end
        a(k,y)=inf;
        a(y,k)=inf;
end
end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -