应用dijkstra算法求赋权图最短路径

应用dijkstra算法求赋权图最短路径

ID:10420041

大小:95.50 KB

页数:0页

时间:2018-07-06

应用dijkstra算法求赋权图最短路径_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《应用dijkstra算法求赋权图最短路径》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、给出赋权图,如下图所示:应用Dijkstra算法,求出顶点A到其它各点的最短距离,MATLAB源程序m文件清单如下:w=[01inf2infinf1034infinfinf3012224103infinfinf2302infinf2inf20];%图的矩阵存储n=6;%顶点数目Result=inf(n-1,n+1);%保存寻找第一个顶点到其余顶点最短路径的中间结果fori=1:n-1Result(1,i)=w(1,i+1);endfori=2:n-1ValMin=inf;IndMin=1;forj=1:n-1ifValMin>Result(i-1

2、,j)ValMin=Result(i-1,j);IndMin=j;endendResult(i-1,n)=IndMin;Result(i-1,n+1)=ValMin;forj=1:n-1DelFlag=false;fork=1:i-1ifj==Result(k,n)DelFlag=true;endendifDelFlag==falseifResult(i-1,j)>Result(i-1,n+1)+w(Result(i-1,n)+1,j+1)Result(i,j)=Result(i-1,n+1)+w(Result(i-1,n)+1,j+1);els

3、eResult(i,j)=Result(i-1,j);endendendendValMin=inf;IndMin=1;forj=1:n-1ifValMin>Result(n-1,j)ValMin=Result(n-1,j);IndMin=j;endendResult(n-1,n)=IndMin;Result(n-1,n+1)=ValMin;ValueRoute=inf(n-1,n);%保存用标号表示的第一个顶点到其余顶点的最短路径和最短距离fori=1:n-1j=1;whileResult(j,n)~=ij=j+1;endIndRoute=n-1

4、;ValueRoute(i,IndRoute)=Result(j,n);ValueRoute(i,n)=Result(j,n+1);ValMin=Result(j,n+1);IndMin=Result(j,n);IndRoute=IndRoute-1;whileResult(j,n)>1j=j-1;ifResult(j,IndMin)>ValMin;ValueRoute(i,IndRoute)=Result(j,n);IndRoute=IndRoute-1;ValMin=Result(j,n+1);IndMin=Result(j,n);enden

5、dendStringRoute.Route='A';%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短路径StringRoute.Distance=0;%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短距离k=2;fori=1:n-1switchValueRoute(1,i)case1StringRoute.Route(k)='B';k=k+1;case2StringRoute.Route(k)='C';k=k+1;case3StringRoute.Route(k)='D';k=k+

6、1;case4StringRoute.Route(k)='E';k=k+1;case5StringRoute.Route(k)='F';k=k+1;otherwisecontinue;end%对于顶点数目不同并且顶点表示方式不同的图要相应修改CASE语句个数和分支语句endStringRoute.Distance=ValueRoute(1,n);CharRoute=[StringRoute];forj=2:n-1StringRoute.Route='A';%结构StringRoute的Route域依次临时存储从第一个顶点到其余顶点的最短路径k=2

7、;fori=1:n-1switchValueRoute(j,i)case1StringRoute.Route(k)='B';k=k+1;case2StringRoute.Route(k)='C';k=k+1;case3StringRoute.Route(k)='D';k=k+1;case4StringRoute.Route(k)='E';k=k+1;case5StringRoute.Route(k)='F';k=k+1;otherwisecontinue;end%对于顶点数目不同并且顶点表示方式不同的图要相应修改CASE语句个数和分支语句endS

8、tringRoute.Distance=ValueRoute(j,n);CharRoute=[CharRoute;StringRoute

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。