MATLAB算法求解最短路问题.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB算法求解最短路问题

组合优化实验报告 实验序号: 日期: 班级 姓名 学号 实验名称 最短路问题 实验所用软件及版本 Matlab R2008b 1、实验目的 1.掌握最短路问题的一种求解算法,并能编程实现该算法. 2、实验内容 1.(4分)如图1所示,节点1、2、3的坐标分别为(1,1)、(2,2.3)、(3.1,0.9),根据各节点的坐标用matlab在2维坐标上画出3个节点. 2、(4分)用matlab编程求出图1中任意两个节点之间的距离,并用邻接矩阵A存储并输出邻接矩阵A.邻接矩阵A举例如下 3、(4分)根据邻接矩阵A编程求解出节点1到节点2和节点3的最短路,并画出最短路的树形图,假设如图2 4.(8分)附件“50node.txt”(数据来源于贝尔实验室)为50个城市的坐标,编程求解由第1个城市到其它各城市的最短路,给出最短路的树形图. 3、详细设计 题1 1).源代码: a=[1 1;2 2.3;3.1 0.9];% node坐标矩阵 plot(a(:,1),a(:,2),'o')%画图 2).运行结果: 题2 (1).源代码: a=[1 1;2 2.3 ;3.1 0.9]; [X,Y]=size(a); h = meshgrid(1:X);%meshgrid是MATLAB中用于生成网格采样点的函数 A= reshape(sqrt(sum((a(h,:)-a(h',:)).^2,2)),X,X);% A(find(A==0))=inf%构造权矩阵A (2)运行结果: A = Inf 1.6401 2.1024 1.6401 Inf 1.7804 2.1024 1.7804 Inf 题3 (1).源代码: function [P,D]=dijkstra_zd(A,sv) clear clc %Dijkstra法求解最短路 %A为邻接矩阵; %sv为寻求最短路的起始点 %P为所有点的P标号,即路权值 %D为sv到所有结点的最短路径矩阵 clear clc a=[1 1;2 2.3 ;3.1 0.9] [X,Y]=size(a); h = meshgrid(1:X);%meshgrid是MATLAB中用于生成网格采样点的函数 A= reshape(sqrt(sum((a(h,:)-a(h',:)).^2,2)),X,X);% A(find(A==0))=inf;%构造权矩阵A [n,n]=size(A); sv=1; s=sv; T=inf.*ones(1,n);%T标号初始化 P=inf.*ones(1,n);%P标号初始化 Tv=1:1:n;%具有T标号的点,初始时,所有点均为T标号 v=zeros(1,n);%结点的前驱,初始时,均为0 Tm=zeros(n,n);%所有点从P标号变为T标号的过程矩阵 P(s)=0; for i=1:n%将所有结点从P标号变为T标号的过程 Pv(i)=s;%Pv具有P标号的结点 Tv=Tmark(Tv,s);%删去具有P标号的结点 Tm(s,:)=A(s,:); for k=Pv%将具有P标号的点赋值无穷大,从而不影响后面的程序取最小值 Tm(s,k)=inf; T(k)=inf; end for k=Tv%一次修改P标号点所对应的T标号点的T标号 Tm(s,k)=Tm(s,k)+P(s); end for k=Tv [x,val]=min([T(k),Tm(s,k)]); T(k)=x;%二次修改P标号点所对应的T标号点的T标号 if val==2 v(k)=s;%修改P标号点所对应的T标号点的前驱 end end [x,val]=min(T);%寻找P标号点 if x==inf break; end s=val; P(s)=x;%修改P标号 end %下面求解从sv到各点的最短路矩阵 aad=zeros(1,n);%最短路临时存储向量 for i=n:-1:1 w=i; for k=1:n%将sv到i点的最短路倒序存储在aad中

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档