《2022年最长路算法和最短路算法matlab整理 .pdf》由会员分享,可在线阅读,更多相关《2022年最长路算法和最短路算法matlab整理 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、*最长路function l,t=dijkstra_long(A,v) n=length(A); V=1:n; s=v; l=A(v,:); t=v.*ones(1,n); ss=setdiff(V,s);nn=length(ss); for j=1:n-1 k=ss(1); for i=1:nn if l(k)l(ss(i)&l(ss(i)=inf k=ss(i); l(k)=l(ss(i); end end if l(k)=inf break; else s=union(s,k); ss=setdiff(V,s); nn=length(ss); end if length(s)=n bre
2、ak; else for i=1:nn if l(ss(i)=inf l(ss(i)=0; end for m=1:nn if l(ss(i)l(ss(m)+A(ss(m),ss(i)&A(ss(m),ss(i)=inf l(ss(i)=l(ss(m)+A(ss(m),ss(i); t(ss(i)=ss(m); end end if l(ss(i)l(ss(i) k=ss(i); l(k)=l(ss(i);%在当前一行距离中取最小值end end if l(k)=inf%如果当前行最小值是无穷大,则结束break; else%否则 k 点的最短路找到s=union(s,k); ss=setdi
3、ff(V,s); nn=length(ss); end if length(s)=n%全部点的最短路都找到break; else for i=1:nn%以 k 为生长点,如果通过k 点会更短,则更改当前最短距离if l(ss(i)l(k)+A(k,ss(i) l(ss(i)=l(k)+A(k,ss(i); t(ss(i)=k; end end end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -