§利用Matlab编程计算最短路径及中位点选址.docx

§利用Matlab编程计算最短路径及中位点选址.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§ 19.利用Mat lab编程计算最短路径及屮 位点选址 仁最短路问题 两个指定顶点之间的最短路径。 例如,给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间, 找一条最短铁路线。 以各城镇为图G的顶点,两城镇间的直通铁路为图G相应两顶点冋的边,得 图G。对G的每一边e,赋以一个实数归句-直通铁路的长度,称为e的权,得到赋 权图G。G的子图的权是指子图的各边的权和。问题就是求赋权图G中指定的两 个顶点叫卩。间的具最小权的轨。这条轨叫做叫“。间的最短路,它的权叫做”o,v() 间的距离,亦记作〃(心,Vo)。 求最短路己有成熟的算法:迪克斯特拉(Dijkstra)算法,其基本思想是按距“。 从近到远为顺序,依次求得心到G的各顶点的最短路和距离,直至% (或 直至G的 所有顶点),算法结束。为避免重复并保留每一步的计算信息,采用了标号算法。下 面是该算法。 令/(“0) = 0,对卩工“。,令/(v) = oo, ={*)}, Z = 0。 对每个veS?=V\SQ,用 min {/(v),/(w) + vv(wv)} 代替/e)。计算m血{/( )},把达到这个最小值的一个顶点记为〃泊,令 SM - Sr. U(Mr+l} (iii) .若Wl—l,停止;若/ IVLI,用i+1代替八 转(ii) o 算法结束时,从到各顶点卩的距离由的最后一次的标号心)给岀。在〃进 入? 之前的标号/W)叫T标号,〃进入亠时的标号“叭叫P标号。算法就是不断修改各 项点的T标号,直至获得P标号。若在算法运行过程中,将每一顶点获得P标号所 山来的边在图上标明,则算法结束时,心至各项点的最短路也在图上标示出来了。 彳列仁某公司在六个城市协 …,園有分公司,从〃到勺的直接航程票价记 在下述矩阵的0J)位置上。(8表示无直接航路),请帮助该公司设计一张城市5 到其它城市冋的票价最便宜的路线图。 0 50 oO 40 25 10 50 0 15 20 S 25 00 15 0 10 20 OO 40 20 10 0 10 25 25 OO 20 10 0 55 10 25 oO 25 55 0 用矩阵心“(”为顶点个数)存放各边权的邻接矩阵,行向量以.index.. index.. 〃分别用来存放P标号信息、标号顶点顺序、标号顶点索引、最短通路 的值。其中分量 当第,顶点己标号 当第订页点未标号 indexi (i)存放始点到第/点最短通路中第i顶点前一顶点的序号; dd)存放山始点到第j点最短通路的值。 求第一个城市到其它城市的最短路径的Matlab程序如下: clear; clc; M=10000; a(l. a(2z a(3f clc; M=10000; a(l. a(2z a(3f a(4, a(5z a(6z ) = (0/50,Mz40r25/10]; )=[zeros (12 2)9 15, 20zMz 25]; ) = [zeros (lz3) 210a 20zM]; )=[zeros (lz 4)fl0f 25]; )=[zeros (1/5) z 55]; )=zeros (I,6); a=a+a pb(1:length(a))=0;pb(1)=1;d(1:lengtb(a))=M;d(1)=0;temp=l; while sum(pb)length(a) tb=find(pb==0); d (tb) =min (d (tb) r d (temp) +a (temp, tb)); tmpb=find(d(tb)==min(d(tb))); temp=tb(tmpb(1)); pb(temp)=1; end 运行输出,第一个城市到其它城市的最短路径长度,即: 0 35 45 35 25 10 2、选址问题一以中位点选址为例 中位点选址问题的质量判据为:使最佳选址为止所在的定点到网络图中其他顶 点的最短路径距离的总和(或者以各个顶点的载荷加权求和)达到最小。 例2:某县下属七个乡镇,各乡镇所拥有的人口数a(Vi)Q=l,2,...,7),以及各乡镇 之间的距离吧,(/, 7=1,2,-, 7)如图所示。现在需要设立一个中心邮局,为全县所 辖的七个乡镇共同服务。试问该中心邮局应该设在哪一个乡镇 (图中的哪一个顶点)? 第一步,用标号法求出每一个顶点Vi至其它各个顶点乃的最短路径长度 (止j = 1, 2,…,7),并将其写成如下距离矩阵: // // // % “25 % // // 27 22 23 24 u32 26 // D = “45 % “47 u52 A /I 5 // % 〃 // “65 % % A71 〃 如3 % “76 “77 第二步,以各顶点的载荷(人口数)加权,求每一个顶点至其它各个顶点的 最短路

文档评论(0)

文档查询,农业合作 + 关注
官方认证
内容提供者

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

认证主体土默特左旗农特农机经销部
IP属地广西
统一社会信用代码/组织机构代码
92150121MA0R6LAH4P

1亿VIP精品文档

相关文档