floyd算法求最短路径matlab程序,基于matlab算最短路径--floyd算法.doc

41528d3028836879cd698677c3999917.gif基于matlab算最短路径--floyd算法.doc

基于matlab算最短路径-----Floyd算法在讲程序之前先看一个例子。例子:如图的交通网络,每条弧上的数字代表车辆在该路段行驶所需的时间。若有一批货物要从1号顶点运往11号顶点,问运货车应沿哪条线路行驶,才能最快地到达目的地?解答:我们可以根据上图建立一个矩阵,如行、列都表示的节点号,里面的对应的数字表示距离;inf的意思无穷大(不相邻的两个节点距离都假设为无穷大),表示两个非直连节点间的距离。很明显,这是一个对称矩阵。1234567891011108infinfinfinf78infinfinf2803infinfinfinfinfinfinfinf3inf3056inf5infinfinfinf4infinf501infinfinfinfinf125infinf6102infinf7inf106infinfinfinf209inf3infinf77inf5infinf90infinfinfinf88infinfinfinfinfinf09infinf9infinfinfinf73inf902inf10infinfinfinfinfinfinfinf20211Infinfinf1210infinfinfinf20程序如下:第一步:先建立一个main.m的文件。10237411659813512210615887993227%*******************************************************clc;clear;globalarry;arry=zeros(0);%该数组是为了保存路径序号。start=( 请输入起点: );%起点(点的序号)ended=( 请输入终点: );%终点(点的序号)lines=load( Distance.txt );%导入数组。[D,path]=floyd(lines);%调用floyd程序算法。%读取D(start,ended)就可以得到最小距离。fprintf( \n最小距离是:%d\n ,D(start,ended));%下面是为了输出输出最短路径的程序。arry(1)=start;%路径第一个数字是开始点x=path(start,ended);%理解此处,必须要理解path数组。arry(2)=x;count=0;%以下程序,我是为了输出路径而写的,可以根据自己不同要求写。fori=3:11ifx~=endedx=path(x,ended);arry(i)=x;endcount=i;ifx==endedbreak;endendfprintf( \n最短路径是: );%fori=1:countfori=1:length(arry)ifarry(i)~=0;fprintf( %d ,arry(i));end%ifarry(i+1)~=0ifi~=length(arry)fprintf( - );endendfprintf( \n );%********************************************************第二步:先建立一个floyd.m的文件。%Floyd’sAlgorithmfunction[D,path]=fun(lines)a=lines;n=size(a,1);%设置D和path的初值D=a;path=zeros(n,n);fori=1:nforj=1:nifD(i,j)~=infpath(i,j)=j;%j是i的后继点endendend%做n次迭代,每次迭代均更新D(i,j)和path(i,j)fork=1:nfori=1:nforj=1:nifD(i,k)+D(k,j)

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

下载文档到电脑,查找使用更方便

8 积分

还剩页未读,继续阅读 关 键 词:基于MATLAB 最短路 Floyd算法 最短路径 MATLAB 基于Floyd算法 基于matlab floyd算法 matlab计算最短路径 Floyd 算法 最短路径算法 Matlab 最短路径Floyd算法matlab

50bcf9764bbd4714f9fe0eb9e92f395a.gif  蚂蚁文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值