欢迎来到天天文库
浏览记录
ID:41967067
大小:149.50 KB
页数:8页
时间:2019-09-05
《《现代优化技术-靳志宏》作业1-最短路-du》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、作业1:Dijkstra最短路径算法一Matlab实现1120140359杜剑交通运输规划与管理1)问题描述Dijkstra最短路算法用于寻找路网中两点间权数最小的路径,最短路问题的实际应用包括:设备更新、工厂布局、运输路径选择、线路安排等。Matlab是处理矩阵运算的有效工具,此处采用Matlab进行求解。2)Matlab编码a)数值输入与参数设计:输入路网矩阵G,计算路网中节点数N=size(G,l)o设置vl为临时标号阵列,v0为永久标号阵列,当某节点转为永久编号时其数值由1变为0,节点加入v0。编码:vl=ones(1,N);v0=l;vl(v0)=0;
2、输出为:vO=1vl=01111111b)算法终止条件:算法循环使用while语句,考虑路网不存在最短路、及最多循环N次两个终止情况,设置终止条件,编码如下:ifsize(vOr2)==N,break;end足兆出while循环ifisinf(Dmin),error,end报•错c)forj=l:N%设置两层循环,加两条判断语句。ifvl(j)fori=l:Nifvl(i)==0D(j)=min(D(j),D(i)+G(i,j));endD(j)=min(D(j),G(vO(1),i)+G(iAj));endendend外层中ifvl(j),表明j为临时编号点时
3、进入第二层循环,为永久编号点时j=j+lo内层循环是在j为临时编号点条件下,确定通过其他各个点到达j点的最短路D(j)cifvl(i)==OD(j)=min(D(j),D(i)+G(i,j));endD(j)=min(D(j),G(vO(1),i)+G(izj));其中,D(j)、D(i)指起点到达ji点的最短路长度;G(i,j)为路网中第i行j列,即由i点到j点的直线距离;vO为永久编号阵列;vl为临时编号阵列,ifvl(i)==0用于判断i点是否为永久编号点。a)fork=1:N,通过求minD(k),确定下一个永久编号点。D=G(vOr:);DT=D;f
4、ori=l:Nifvl(i)==0%对匚是否为永久编号做判断DT(i)=inf;endend[Dminid]=min(DT);v0=[vOid];记录最短路径长度,修改永久编号阵列。3)算例输入参数G,vO(1)如下:G=[inf2infinfinfinf;inf1infinfinf;inf7inf512inf;infinf9inf;0・»b.MWorkspace®Ef・IdisptDvOM:G«(in2infinf1inf1:inf1:infi:clcinf15infinf3inf8;infinf1inf3inf46;infinf29inf4inf3;infi
5、nfinfinf863inf];DesktcpWindowHelp♦N门3CurrentFolder:E:FR^Tlz14iB6、iN=size(G,1)・■节点魏vO«l.■匕U号码•vO九永久阿刿”vlBonesn>l).Ml为临时壊空为列0vlD・forisl:NifvHi)~O定为永久Ml号$D2(i)«inf:WH%4(^M^7niAKi■nd»in>9error,end八知*皿5为无穷•来明就优无直詰・?!出•汗*运行程序:血"MewCommandWindow0・■b—Inf11A»—D-♦ndD7、rksp^Name亠Comm>n8、)fori=l:Nifv
6、iN=size(G,1)・■节点魏vO«l.■匕U号码•vO九永久阿刿”vlBonesn>l).Ml为临时壊空为列0vlD・forisl:NifvHi)~O定为永久Ml号$D2(i)«inf:WH%4(^M^7niAKi■nd»in>9error,end八知*皿5为无穷•来明就优无直詰・?!出•汗*运行程序:血"MewCommandWindow0・■b—Inf11A»—D-♦ndD7、rksp^Name亠Comm>n8、)fori=l:Nifv
7、rksp^Name亠Comm>n8、)fori=l:Nifv
8、)fori=l:Nifv
此文档下载收益归作者所有