Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc

Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc

ID:60849424

大小:43.50 KB

页数:7页

时间:2020-12-23

Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc_第1页
Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc_第2页
Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc_第3页
Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc_第4页
Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc_第5页
资源描述:

《Dijkstra、Floyd算法Matlab_Lingo实现教学资料.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、…………………………………………………………最新精品资料推荐……………………………………………………Dijkstra算法Matlab实现。%求一个点到其他各点的最短路径function[min,path]=dijkstra(w,start,terminal)%W是邻接矩阵应用举例:edge=[2,3,1,3,3,5,4,4,1,7,6,6,5,5,11,1,8,6,9,10,8,9,9,10;...3,4,2,7,5,3,5,11,7,6,7,5,6,11,5,8,1,9,5,11,9,8,10,9;...3,5,8,5,6,6,

2、1,12,7,9,9,2,2,10,10,8,8,3,7,2,9,9,2,2];n=11;weight=inf*ones(n,n);fori=1:nweight(i,i)=0;endfori=1:size(edge,2)weight(edge(1,i),edge(2,i))=edge(3,i);end[dis,path]=dijkstra(weight,1,11)%start是起始点%terminal是终止点%min是最短路径长度%path是最短路径n=size(w,1);label(start)=0;f(start)=start

3、;fori=1:nifi~=startlabel(i)=inf;endends(1)=start;u=start;whilelength(s)(label(u)+w(u,v))label(v)=(label(u)+w(u,v));f(v)=u;endendendv1=0;k=inf;fori=1:nins=0;forj=1:length(s)ifi==s(j)ins=1;enden

4、d…………………………………………………………最新精品资料推荐……………………………………………………7…………………………………………………………最新精品资料推荐……………………………………………………ifins==0v=i;ifk>label(v)k=label(v);v1=v;endendends(length(s)+1)=v1;u=v1;endmin=label(terminal);path(1)=terminal;i=1;whilepath(i)~=startpath(i+1)=f(path(i));i=i+1;endp

5、ath(i)=start;L=length(path);path=path(L:-1:1);Floyd算法:matlab程序:%floyd算法,function[D,path,min1,path1]=floyd(a,start,terminal)%a是邻接矩阵%start是起始点%terminal是终止点应用举例:a=[0,50,inf,40,25,1050,0,15,20,inf,25inf,15,0,10,20,inf40,20,10,0,10,2525,inf,20,10,0,5510,25,inf,25,55,0];[D,

6、path]=floyd(a)%D是最小权值表%path是最短路线表。D=a;n=size(D,1);path=zeros(n,n);fori=1:nforj=1:nifD(i,j)~=infpath(i,j)=j;endendendfork=1:nfori=1:nforj=1:nifD(i,k)+D(k,j)

7、)=D(i,k)+D(k,j);path(i,j)=path(i,k);endendendendifnargin==3min1=D(start,terminal);m(1)=start;i=1;path1=[];whilepath(m(i),terminal)~=terminalk=i+1;m(k)=path(m(i),terminal);i=i+1;endm(i+1)=terminal;path1=m;end165556623446523454523456143451124416Floyd算法:Lingo程序:!用LINGO11

8、.0编写的FLOYD算法如下;model:sets:nodes/c1..c6/;link(nodes,nodes):w,path;!path标志最短路径上走过的顶点;endsetsdata:path=0;w=0;@text(mydata1.txt)

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

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

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