您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 最短路径-Floyd算法-matlab实现
function[D,R]=floyd(A)%用floyd算法实现求任意两点之间的最短路程。可以有负权%参数D为连通图的权矩阵%A=[0281infinfinfinf%206inf1infinfinf%8607512inf%1inf70infinf9inf%inf15inf03inf8%infinf1inf3046%infinf29inf403%infinfinfinf8630];D=A;n=length(D);fori=1:nforj=1:nR(i,j)=i;%赋路径初值endendfork=1:nfori=1:nforj=1:nifD(i,k)+D(k,j)D(i,j)D(i,j)=D(i,k)+D(k,j);%更新D(i,j),说明通过k的路程更短R(i,j)=R(k,j);%更新R(i,j),需要通过kendendendhl=0;fori=1:nifD(i,i)0hl=1;break;%跳出内层的for循环endendif(hl==1)fprintf('有负回路')break;%跳出最外层循环endend
本文标题:最短路径-Floyd算法-matlab实现
链接地址:https://www.777doc.com/doc-5900575 .html