图与网络分析例题讲解
例1求救信号的采集问题
紧急呼救电话发挥着极其重要的作用,现在的问题是往往在呼救时当事者大多处于紧张或身体状况不佳的状态,难以清晰表达自己所处位置,给救援工作带来极大的困难,对于有线电话来说,定位相对容易,而对于移动设备由于其可移动性,则确定位置相对比较困难。一种可行的办法是依赖通信基站,按照移动设备接收附近几个基站信号强弱进行定位。区域内的某个点接收到各基站的信号强度组成一个向量,该向量唯一标志区域内的一个点。
采用这种方法定位就需要采集区域内各点的信号强度,派遣一辆装载信号采集设备和GPS的车辆,从研究所出发,依次到达各主要地点采集信号,最后回到研究所提交数据。
考察某大城市的一个特定区域,示意图共5个节点。主要信号采集点在图中已标出(即图中的节点),如何选择一条最短路线,使得信号采集车辆能够顺利地采集信号并返回研究014所。图的邻接矩阵为:12710140913512906871360111058。 110解 该问题实际上就是一个TSP(旅行商问题),要求寻找遍历图中所有节点,并返回起点的最短路。
TSP属于组合优化的范畴,可以采用组合优化的方法求解TSP。
设dij表示i,j两个城市之间的距离,决策变量是xij0或1(0表示不连接,1表示连接),由xij组成的邻接矩阵H是图G的哈密顿圈等价于H中每个节点都只有一个入度和一个出度,且去掉任何一个节点H将不是圈。此时求解TSP就等价于求解下面0-1规划问题:
minzi,jVdijxij
xij1(iV)jVs.t.xij1(jV) (1) iVxij0,1(i,jV)
例2 装备的合理配置问题
设有M套不同型号的装备要配备给M个部队,由于各个部队的基础设施、训练特点等条件的差异,不同的装备在不同的部队所产生的效能是不同的,具体的数据如表1所示。试问如何分配这批装备,保证每个部队都有一套设备,并且使总的效能最大?
表1 装备在不同部队效能表 装备 A 部队 1
B 0.17 C 0.23 D 0.55 E 0.47 F 0.26 G 0.19 H 0.17 I 0.12 0.14
2 3 4 5 6 7 8 9 0.37 0.59 0.11 0.12 0.10 0.11 0.63 0.29 0.40 0.62 0.12 0.14 0.12 0.14 0.65 0.30 0.49 0.67 0.16 0.19 0.15 0.18 0.73 0.36 0.09 0.22 0.06 0.24 0.06 0.47 0.07 0.05 0.05 0.17 0.03 0.19 0.03 0.39 0.04 0.03 0.53 0.06 0.19 0.46 0.39 0.06 0.22 0.05 0.42 0.03 0.14 0.37 0.33 0.03 0.17 0.02 0.39 0.02 0.12 0.35 0.30 0.02 0.14 0.01 0.12 0.08 0.46 0.10 0.21 0.25 0.09 0.44
解 由题意可以知道,这个问题是属于一标准指派问题,即属于组合优化的范畴,在这里我们来建立组合优化模型,并且相应的方法进行求解。将各部队关于各种装备的效能(表1)数据用矩阵S表示,即用S(sij)99表示分配装备j给部队i产生的效能。用X(xij)99表示决策矩阵,为一个0-1矩阵,即xij1表示将装备j分配给部队i;xij0表示不将装备j分配给部队i,则此时可以建立如下的优化规划模型:
99ijijmaxPxi1i1s
xij1(i1,2,,9)jVs.t.xij1(j1,2,,9) (2) iVxij0,1(i,j1,2,,9)
例3 网络的数据传输问题
分组交换技术在计算机网络发挥着重要作用,从源节点到目的节点传送文件不再需要固定的一条“虚路径”,而是将文件分割为几个分组,再通过不同的路径传送到目的节点,目的节点在根据分组信息进行重组、还原文件。分组交换技术具有文件传输时不需要始终占用一条线路,不怕单条线路掉线,多路传提高传输速率等优点。现在考虑如图2所示的网络,图中连接两个节点间的数字表示两交换机得可用宽带,此时从节点1到节点9的最大传输宽带是多少?
解 将此问题视为一个求网络最大流问题,将分组的传输方式用以下矩阵来刻画: Ff11f21f91f12f22f92f19f29 f99其中fij表示从节点i到节点j的实际传输宽带。记容量矩阵为
C02.57.15.66.13.63.44.97.47.25.75.33.82.43.8 4.56.77.4由此可以建立线性模型如下:
maxVf
Vf(i1)fijfkiVf(i9) (3) s.t.jVkV0(i1,9)0FC
例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)) if dd(i)==0 d(i)=min(d(i),d(y)+D(y,i)); end end ddd=inf; for i=1:m if dd(i)==0&&d(i) yy=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 因篇幅问题不能全部显示,请点此查看更多更全内容