第五篇图论网络建模习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

a(c1(m),c1(n))+a(c1(m+1),c1(n+1))

flag=1;

c1(m+1:n)=c1(n:-1:m+1); end end

end

end

long=a(c1(1),c1(L)); for i=1:L-1

long=long+a(c1(i),c1(i+1)); end circle=c1;

%%%%%%%%%%%%%%%%%%%%% 主程序 global a a=zeros(6);

a(1,2)=56; a(1,3)=35;a(1,4)=21;a(1,5)=51;a(1,6)=60; a(2,3)=21; a(2,4)=57;a(2,5)=78;a(2,6)=70; a(3,4)=36;a(3,5)=68;a(3,6)=68; a(4,5)=51; a(4,6)=61;

a(5,6)=13; a=a+a'; L=size(a,1); c1=[5 1:4 6];

[circle, long]=modifycircle(c1,L); c2=[5 6 1:4];

[circle2, long2]=modifycircle(c2,L); if long2

long=long2; circle=circle2; end

circle, long

4. 如图16-15,求起点s 到终点t 的最大流

t

v 3v 6

9

图16-15

解:设ij f 表示弧ij a 的流量,t v v s j i ,,,,,91"=,ij u 表示弧ij a 的容量,建立规划模型如下:

A

j i u f t

s i t i v s i v f f t s v

ij ij A i j j ji A j i j ij ∈∀≤≤⎪⎩

⎨⎧≠=−==−∑∑∈∈),(0,0..max ),(:),(:

相关文档
最新文档