第五篇图论网络建模习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十六章习题
1. 某城市要建立一个消防站,为该市所属的七个区服务,如图16-13所示,问应设在哪个区,才能使它至最远区的路径最短。
1
v 2
v 3
v 4
v 5
6
7 1.5
4
图16-13
解:本题首先需要求出任意两点间的最短路,然后判断选择在哪个区建立消防站解:
(1)求任意两点间的最短路,matlab 程序如下 clear; clc; M=10000;
a(1,:)=[0,3,M,M,M,M,M];
a(2,:)=[zeros(1,2),2,M,1.8,2.5,M,]; a(3,:)=[zeros(1,3),6,2,M,M]; a(4,:)=[zeros(1,4),3,M,M]; a(5,:)=[zeros(1,5),4,M]; a(6,:)=[zeros(1,6),1.5]; a(7,:)=zeros(1,7);
b=a+a';path=zeros(length(b)); for k=1:7 for i=1:7 for j=1:7
if b(i,j)>b(i,k)+b(k,j) b(i,j)=b(i,k)+b(k,j); path(i,j)=k; end end end end b, path
得任意两点间距离矩阵(列表):
(2) 计算在点i v 设立服务设施时的最大服务距离,即i v 到各点距离的最大值(见表中最后一列);
(3) 第二个区距离最远的区路径最短,为4.8,所以应该选择第二个区建立消防站。
2.对图16-14,求最小生成树。
图16-14
解:最小生成树matlab 程序如下 clc;clear;
a(1,:)=[0,56,35,2,51,60];
a(2,:)=[zeros(1,2),21,57,78,70]; a(3,:)=[zeros(1,3),36,68,68]; a(4,:)=[zeros(1,4),51,61]; a(5,:)=[zeros(1,5),13]; a(6,:)=zeros(1,6); a=a+a';
result=[];p=1;tb=2:length(a); while length(result)~=length(a)-1 temp=a(p,tb);temp=temp(:); d=min(temp);
[jb,kb]=find(a(p,tb)==d); j=p(jb(1));k=tb(kb(1));
result=[result,[j;k;d]];p=[p,k];tb(find(tb==k))=[]; end result
最小生成树见最小生成树图。(说明:本题最小生成树不唯一)
1
v 2
v 3
v 4
v 5
v 6
v 最小生成树
3. 从北京(Pe )乘飞机到东京(T)、纽约(N)、墨西哥城(M)、伦敦(L)、巴黎(Pa)五城市做旅游,每个城市仅去一次再回北京,应如何安排旅游线,使旅程最短?各城市之间的航线距离如表16-1。
表16-1 六个首都之间的航线距离 L M N Pa Pe T L 0 56 35 21 51 60 M 56 0 21 57 78 70 N 35 21 0 36 68 68 Pa 21 57 36 0 51 61 Pe 51 78 68 51 0 13 T 60 70 68 61 13 0
分析:本题为H 圈问题
解:最短旅游线为北京->巴黎->伦敦->纽约->墨西哥城->东京->北京,最短距离为211
matlab 程序如下: M 文件
function [circle, long]=modifycircle(c1,L); global a flag=1;
while flag>0 flag=0; for m=1: L-3
for n=m+2:L-1 if