- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 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)