最短路径-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

1 / 1
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功