资源简介

求最短路径的Floyd算法实现,无向图和有向图均适用。1先区别有向图和无向图,2输入顶点数和边数并检查合法性,3输入每边的起点、终点、权重并检查合法性,并初始化邻接矩阵和路径矩阵,4调用自定义函数Floyd

资源截图

代码片段和文件信息

%求最短路径的Floyd算法实现
%1先区别有向图和无向图,2输入顶点数和边数并检查合法性,3输入每边的起点、终点、权重并检查合法性,并初始化邻接矩阵和路径矩阵,4调用自定义函数Floyd

%1
bool=0;
while bool<1
    type=input(‘输入图的种类1代表无向图2代表有向图>>‘);
    if type==1 || type==2
        bool=1;
    else
        display(‘请重新输入图像类型‘);
    end
end

%2
boolean=0;
while boolean<1
    np=input(‘输入顶点个数>>‘);
    nl=input(‘输入路径数>>‘);
    if nl<=type*np*(np-1)/2;
        boolean=1;
    else
        display(‘输入的顶点数和边数不合法,请重新输入‘);
    end
end

%3
inf=9999;
D=inf*ones(npnp);
for i=1:np
    D(ii)=0;
end
P=ones(npnp);
for i=1:np
    P(:i)=i;
end
i=1;
while i<=nl
    a=input(‘以[sew]形式输入每边的起点编号(从1开始)、终点编号、权重‘);
    startp=a(11);
    endp=a(12);
    weight=a(13);
    if startp<=0 || endp<=0 || weight<=0 || startp>np ||endp>np
        display(‘本组数据不合法,请重新输入本组数据‘);
    else if type==1
        D(startpendp)=weight;
        D(endpstartp)=weight;                                          %可以证明无向图的邻接矩阵是对称矩阵
        end
        if type==2
            D(startpendp)=weight;
        end
        i=i+1;
    end
end

%4
if type==1
    Floyd1(npDP);
else
    Floyd2(npDP);
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1334  2018-08-29 14:17  floyd.m

     文件       1227  2018-08-29 14:33  Floyd1.m

     文件        955  2018-08-29 14:37  Floyd2.m

----------- ---------  ---------- -----  ----

                 3516                    3


评论

共有 条评论