图与网络分析例题讲解————————————————————————————————作者:————————————————————————————————日期:图与网络分析例题讲解例1求救信号的采集问题紧急呼救电话发挥着极其重要的作用,现在的问题是往往在呼救时当事者大多处于紧张或身体状况不佳的状态,难以清晰表达自己所处位置,给救援工作带来极大的困难,对于有线电话来说,定位相对容易,而对于移动设备由于其可移动性,则确定位置相对比较困难。
一种可行的办法是依赖通信基站,按照移动设备接收附近几个基站信号强弱进行定位。
区域内的某个点接收到各基站的信号强度组成一个向量,该向量唯一标志区域内的一个点。
采用这种方法定位就需要采集区域内各点的信号强度,派遣一辆装载信号采集设备和GPS 的车辆,从研究所出发,依次到达各主要地点采集信号,最后回到研究所提交数据。
考察某大城市的一个特定区域,示意图共5个节点。
主要信号采集点在图中已标出(即图中的节点),如何选择一条最短路线,使得信号采集车辆能够顺利地采集信号并返回研究所。
图的邻接矩阵为:01412710140913512906871360111058110⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦。
0100000100100000000100010H ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦解 该问题实际上就是一个TSP (旅行商问题),要求寻找遍历图中所有节点,并返回起点的最短路。
TSP 属于组合优化的范畴,可以采用组合优化的方法求解TSP 。
设ij d 表示,i j 两个城市之间的距离,决策变量是0ij x =或1(0表示不连接,1表示连接),由ij x 组成的邻接矩阵H 是图G 的哈密顿圈等价于H 中每个节点都只有一个入度和一个出度,且去掉任何一个节点H 将不是圈。
此时求解TSP 就等价于求解下面0-1规划问题:,min ij iji j Vz dx ∈=∑1()..1()0,1(,)ij j V ij i Vij x i V s t x j V x i j V ∈∈⎧=∈⎪⎪=∈⎨⎪⎪=∈⎩∑∑ (1) 对于模型(1)容易用LINGO 软件求解,其程序如下:model : sets :city/1..5/:u; !Hamilton 路标号;link(city,city):distance,x; !邻接矩阵和决策矩阵; endsets data : distance=0 14 12 7 1014 0 9 13 512 9 0 6 87 13 6 0 1110 5 8 11 0;enddatan=@size(city);min=@sum(link:distance*x);@for(city(i):u(i)>=1); !城市编号非负约束;@for(city(k):@sum(city(i)|i#ne#k:x(i,k))=1; !入度为1约束;@sum(city(j)|j#ne#k:x(k,j))=1; !出度为1约束;@for(city(j)|j#gt#1#and#j#ne#k:u(j)>=u(k)+x(k,j)-n*(1-x(k,j))+(n-1)*x(j,k));); !标号约束(除起始点外); @for(link:@bin(x)); !0-1约束;@for(city(k)|k#gt#1:u(k)<=n-(n-2)*x(1,k); !起点标号约束;u(k)>=1+(n-1)*x(k,1);); !终点标号约束;end例2 装备的合理配置问题设有M套不同型号的装备要配备给M个部队,由于各个部队的基础设施、训练特点等条件的差异,不同的装备在不同的部队所产生的效能是不同的,具体的数据如表1所示。
试问如何分配这批装备,保证每个部队都有一套设备,并且使总的效能最大?表1 装备在不同部队效能表A B C D E F G H I装备部队1 0.14 0.17 0.23 0.55 0.47 0.26 0.19 0.17 0.122 0.37 0.40 0.49 0.09 0.05 0.53 0.42 0.39 0.123 0.59 0.62 0.67 0.22 0.17 0.06 0.03 0.02 0.084 0.11 0.12 0.16 0.06 0.03 0.19 0.14 0.12 0.465 0.12 0.14 0.19 0.24 0.19 0.46 0.37 0.35 0.106 0.10 0.12 0.15 0.06 0.03 0.39 0.33 0.30 0.217 0.11 0.14 0.18 0.47 0.39 0.06 0.03 0.02 0.258 0.63 0.65 0.73 0.07 0.04 0.22 0.17 0.14 0.099 0.29 0.30 0.36 0.05 0.03 0.05 0.02 0.01 0.44解 由题意可以知道,这个问题是属于一标准指派问题,即属于组合优化的范畴,在这里我们来建立组合优化模型,并且相应的方法进行求解。
将各部队关于各种装备的效能(表1)数据用矩阵S 表示,即用99()ij S s ⨯=表示分配装备j 给部队i 产生的效能。
用99()ij X x ⨯=表示决策矩阵,为一个0-1矩阵,即1ij x =表示将装备j 分配给部队i ;0ij x =表示不将装备j 分配给部队i ,则此时可以建立如下的优化规划模型:9911max ij ij i i P x s ===∑∑1(1,2,,9)..1(1,2,,9)0,1(,1,2,,9)ij j V ij i Vij x i s t x j x i j ∈∈⎧==⎪⎪==⎨⎪⎪==⎩∑∑L L L (2) 模型(2)是一个0-1规划模型,可以用LINGO 软件求解,其程序如下:model : sets : army/1..9/; equi/1..9/;assign(army,equi):s,x; endsets data : s=0.14 0.17 0.23 0.55 0.47 0.26 0.19 0.17 0.12 0.37 0.40 0.49 0.09 0.05 0.53 0.42 0.39 0.12 0.59 0.62 0.67 0.22 0.17 0.06 0.03 0.02 0.08 0.11 0.12 0.16 0.06 0.03 0.19 0.14 0.12 0.46 0.12 0.14 0.19 0.24 0.19 0.46 0.37 0.35 0.10 0.10 0.12 0.15 0.06 0.03 0.39 0.33 0.30 0.21 0.11 0.14 0.18 0.47 0.39 0.06 0.03 0.02 0.25 0.63 0.65 0.73 0.07 0.04 0.22 0.17 0.14 0.09 0.29 0.30 0.36 0.05 0.03 0.05 0.02 0.01 0.44; enddatamax =@sum (assign:s*x);@for (army(i):@sum (equi(j):x(i,j))=1); @for (equi(j):@sum (army(i):x(i,j))=1); @for (assign:@bin (x)); end例3 网络的数据传输问题分组交换技术在计算机网络发挥着重要作用,从源节点到目的节点传送文件不再需要固定的一条“虚路径”,而是将文件分割为几个分组,再通过不同的路径传送到目的节点,目的节点在根据分组信息进行重组、还原文件。
分组交换技术具有文件传输时不需要始终占用一条线路,不怕单条线路掉线,多路传提高传输速率等优点。
现在考虑如图2所示的网络,图中连接两个节点间的数字表示两交换机得可用宽带,此时从节点1到节点9的最大传输宽带是多少?解 将此问题视为一个求网络最大流问题,将分组的传输方式用以下矩阵来刻画:111219212229919299f f f f f f F f f f ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦L L M M O M L其中ij f 表示从节点i 到节点j 的实际传输宽带。
记容量矩阵为2.5 5.6 6.17.13.6 3.44.97.42.47.25.73.8 5.34.53.8 6.77.40C ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦由此可以建立线性模型如下:max f V(1)(9)..0(1,9)0f ij ki fj V k V V i f f V i s t i F C ∈∈=⎧⎧⎪⎪-=-=⎪⎨⎨⎪≠⎩⎪⎪≤≤⎩∑∑ (3)例4 出租车的最短行驶路线问题某市的出租车公司为了更好地为乘客服务,向乘客承诺:“出租车走最短的行驶路线,方便快捷。
”乘客上车后只要告知司机目的地,出租车上电脑就可以计算出到达目的地最短的行驶路线。
解 首先将地图视为一个赋权图。
function [d,DD]=dijkstra(D,s)%Dijkstra 最短路算法Matlab 程序用于求从起始点s 到其它各点的最短路 %D 为赋权邻接矩阵%d为s到其它各点最短路径的长度%DD记载了最短路径生成树[m,n]=size(D);d=inf.*ones(1,m);d(1,s)=0;dd=zeros(1,m);dd(1,s)=1;y=s;DD=zeros(m,m);DD(y,y)=1;counter=1;while length(find(dd==1))<mfor i=1:mif dd(i)==0d(i)=min(d(i),d(y)+D(y,i));endendddd=inf;for i=1:mif dd(i)==0&&d(i)<dddddd=d(i);endendyy=find(d==ddd);counter=counter+1;DD(y,yy(1,1))=counter;DD(yy(1,1),y)=counter;y=yy(1,1);dd(1,y)=1;end。