图论Prime算法Matlab源代码

作者在 2008-12-19 16:31:59 发布以下内容

%Prims Algorithm
%coded by Vikramaditya V. Kundur

%more information www.matlabsky.cn

clc
fid = fopen('testfile1.txt', 'r');      % Input file
%Input file should be in the form of a text file.
%5                 %order of matrix
%0 2 3 4 0
%2 0 1 2 5
%3 1 0 1 2
%4 2 1 0 2
%0 5 2 2 0
l = fscanf(fid, '%g %g', [1 1])     % Input matrix size from line 1
h = fscanf(fid, '%g %g', [l l])     % Input the matrix
a=h'
fclose(fid);

fid = fopen('Result.txt','wt');     % Output file
fprintf(fid,'Original matrix\n\n'); % Printing the original matrix in the output file
for i=1:l
    for k=1:l
        fprintf(fid,'%6d',a(i,k)); 
    end
    fprintf(fid,' \n');
end

for i=1:l
    for j=1:l
         if a(i,j)==0
               a(i,j)=inf;
           end
    end
end
k=1:l
listV(k)=0;
listV(1)=1;
e=1;
while (e<l)
    min=inf;
     for i=1:l
        if listV(i)==1
            for j=1:l
                if listV(j)==0
                   if min>a(i,j)
                        min=a(i,j);
                        b=a(i,j);
                        s=i;
                        d=j;
                    end
                end
            end
        end
    end
    listV(d)=1;
    distance(e)=b;
    source(e)=s;
    destination(e)=d;
    e=e+1;
end

fprintf(fid,'\n\nDistance modified matrix\n\n');
for i=1:l
    for k=1:l
        if i==k
            fprintf(fid,'%6d',0);
        else
            fprintf(fid,'%6d',a(i,k));
        end       
    end
            fprintf(fid,' \n');
end
fprintf(fid,'\n The nodes and shortest distances are \n');
fprintf(fid,'\nFORMAT: Distance(Source, destination) \n');
for g=1:e-1
fprintf(fid,'%d(%d,%d)\n',distance(g),source(g),destination(g));
end
status = fclose(fid);
clear

 

源码分享 | 阅读 5646 次
文章评论,共0条
游客请输入验证码
浏览135104次