最新最短航程问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目
某公司在六个城市C 1,C 2,C 3,C 4,C 5,C 6都有分公司,公司成员经常往来于它们之间,已知从Ci 到C j 的直达航班票价由下述矩阵的第i 行,第j 列元素给出(∞表示无直达航班),该公司想算出一张任意两个城市之间的最廉价路线航费表。
摘要
改革开发以来,我国的经济发展迅速,人民生活水平逐渐提高,2010年,我国GDP 超越日本,排名世界第二。
我国经济的发展,使人们对交通运输提出越来越多的需求, 而民航作为航空运输工具,在交通工具中起到十分重要的作用,新型飞机(民用)快速、续航能力强、安全、便捷的特点受到越来越多的人青睐。
如果从交错复杂的飞机线路中找到最廉价的线路,不仅减少了中途时间,而且大大节省了开支费用,为企业和个人带来可观的经济效益。
本文从航班网络的实际特点出发,对航班线路网和票价进行分析,将最佳路径搜索问题转化为图论中的最短路径的问题,通过对最短路径算法的分析,实现了Floyd 算法求航班网络中的最短路径,将之建立模型,并描述了用matlab 程序进行求解的过程。
关键词:最短路 matlab Floyd 算法
050402510500152025150102040201001025252010055102525550∞∞∞∞∞∞⎡⎣⎢⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥⎥
问题提出
某公司在六个城市C 1,C 2,C 3,C 4,C 5,C 6都有分公司,公司成员经常往来于它们之间,已知从Ci 到C j 的直达航班票价由下述矩阵的第i 行,第j 列元素给出(∞表示无直达航班),该公司想算出一张任意两个城市之间的最廉价路线航费表。
问题分析
若网络中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。
最短路问题是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。
最短路问题,我们通常归属为三类:单源最短路径问题、确定起点终点的最短路径问题、全局最短路径问题———求图中所有的最短路径。
题中要求算出一张任意城市间的最廉价路线表,属于全局最短路问题,并且使得该公司总经理能够与各个子公司之间自由往返。
(此两点为主要约束条件)
我们确定本题为全局最短路问题,并采用Floyd 算法,具体原理如下: (1) 求距离矩阵的方法
根据路线及票价表建立带权矩阵W ,并把带权邻接矩阵我w 作为距离矩阵的初始值,即(0)(0)()ij v v D d W ⨯==
1.()1(1)()ij v v D d ⨯=,其中{}1(0)(0)(0)11min ,ij ij i j d d d d =+,(1)ij d 是从i v 到j v 的只允许以1v 作为中间点的路径中最短路的长度。
2. ()2(2)()ij v v D d ⨯=,其中{}2(1)(1)(1)22min ,ij ij i j d d d d =+,(2)ij d 是从i v 到j v 的只允许以1v ,2v 作为中间点的路径中最短路的长度。
……
{}()()(1)(1)(1)(min ,v v v v v ij ij ij vj vD d d d d ---==+,()v ij d 是从i v 到j v 的只允许1v 、
2v 、……、v v 作为中间点的路径中最短路的长度。
即是从i v 到j v 中间可插入如何
顶点的路径中最短路的长度,因此()v D 即是距离矩阵。
(2) 求路径矩阵的方法
在建立距离矩阵的同时可建立路径矩阵R ,()ij v v R r ⨯=,ij r 的含义是从i v 到j v 的最短路径要经过点号为ij r 的点。
(0)(0)(0)(),ij v v ij R r r j ⨯==
每求得一个()k D 时,按下列方式产生相应的新的()k R :
(1)(1)
()(1),,k k ij ik kj k ij k ij kd d d d r r ---⎧>+⎪=⎨⎪⎩若 否则
即当k v 被插入任何两点间的最短路径时,被记录在()k R 中,依次求得()k D 时求得()k R ,可由()v R 来查找任何点对之间最短的路径。
(3) 查找最短路径的方法
若()1v ij r p =,则点1p 是点i 到j 的最短距离的中间点,然后用同样的方法再分头查找。
若:
1. 向点i 追溯得:12()()()23,,...,k v v v ip ip ip k r p r p r p ===
2. 向点j 追溯得:11()()()12,,...,m v v v p j q j q j r q r q r j ===
则由点i 到j 的最短路的路径为:i ,k p ,…,2p ,1p ,1q ,2q ,…,m q ,j 。
模型假设
a.各城市间的飞机线路固定不变
b.各城市间飞机线路的票价不改变
c.忽略乘客除票价以外的各项开销费用
d.不考虑雷雨云、低云、大风、雷暴、冰雹等主要天气因素对飞行的影响。
模型建立
建立脚本m 文件如下: w= [ 0,50,inf,40,25,10;
50,0,15,20,inf,25; inf,15,0,10,20,inf; 40,20,10,0,10,25; 25,inf,20,10,0,55; 10,25,inf,25,55,0]; [D, path]=floyd(a)
模型求解
运行便可输出结果。
D =
0 35 45 35 25 10 35 0 15 20 30 25 45 15 0 10 20 35 35 20 10 0 10 25 25 30 20 10 0 35
10 25 35 25 35 0 path =
1 6 5 5 5 6
6 2 3 4 4 6
5 2 3 4 5 4
5 2 3 4 5 6
1 4 3 4 5 1
1 2 4 4 1 6
D便是最廉价的航费表,要求飞行路线,由path矩阵可以得到,比如2到5的路线:path(2,5)=4, path(4,5)=5,因此,应为2→4 →5
1:本文把所解决的问题归结为最短路问题,建立的数学模型清晰合理。
2:运用MATLAB软件处理数据和进行运算,降低运算量,简单易行,有很大的可操作性。
且所得数据较为合理可靠。
3:在实际运用本方案中还应考虑自然因素对飞机航行的影响,还需根据实际情况进行灵活改变。
《陈太丘与友期行》教案。