最短路问题的多种解法

最短路问题的多种解法
最短路问题的多种解法

最短路问题的多种解法

摘要:本文研究的是用动态规划的方法、Dijkstra算法以及结合求最小树的Kruskal算法和破圈运算,给出求一类最短路问题的一种简单算法来解决最短路问题,通过对问题的求解,分析这三种方法各自的要求以及特点。

关键词:最短路问题;动态规划;Dijkstra算法;Kruskal算法;破圈运算

Different Methods of the Shortest Ways Problems

Abstract:The thesis focus on finding an easy solution to solvethe shortest way problems by using dynamic programming method,Dijkstra algorithm and the minium tree Kruskal algorithm andbrok en ring operator.It will analyze the requirements and characteristics of the three ways by solving p roblems

Key words:the shortest way problems ;dynamic programming method;Dijkstra algorithm;Kruskal algorithm ;broken ring operator

最短路问题是经济管理中经常遇到的问题,如煤气管道铺设,交通运输等等,求解最短路的算法有很多种,本文中就应用动态规划的方法,,Dijkstra算法以及结合求最小树的Kruskal算法和破圈运算,给出求一类最短路问题的一种简单算法来解决遇到的最短路问题。

一、问题的提出

对于煤气管道铺设问题,我们把它归结为图1所表示的网络,联结各点的线段上的数字表示它们之间的弧长。求A点到E点的最短路程。

图1

二、 问题的分析

图1可视为一定阶段最短路问题的标准模型,图1可划分为4个阶段,即n=4.从A 点出发到B 点为第一阶段,这时有3个选择,一是到1B ,一是到2B ,一是到3B ,若选择到3B ,则3B 就是第1阶段决策的结果,它即是这一阶段的路线的终点,又是下一个阶段路线的始点。在第2阶段,再从3B 出发,对于3B 点,有一个可供选择的终点集合{}12,C C ,若选择由3B 至2C 为第2阶段的决策,则2C 就是第2阶段的终点,同时又是第3阶段的始点,以此类推。

三、 模型的建立与求解 方法一:动态规划法

根据动态规划的正向思维法,从A 点开始计算逐步移至E 点

设k s 表示第k 个阶段的状态变量,k u 表示第k 个阶段的决策,()k f s 表示第k 个阶段到起点A 的最短路

则:{}1s A =,{}2123,,s B B B =,{}312,s C C =

{}4123,,s D D D =,{}5s E = 这其中 1()()0f s f A == 当2

1s B =时,21()()3f s f B ==;

22s B =时,22()()2f s f B ==;

23s B =,23()()1f s f B ==;

当31s C =时,131234()43()()min 1()123313()f B f s f C f B f B ++????????

==+=+=????????

++???

?;

32s C =时,

132233()33()()min 3()325515()f B f s f C f B f B ++????

????

==+=+=????????

++???

?; 当41s D =时,14122()23()()min 51()15f C f s f D f C ++????

====????++??

??;

42s D =时,14225()53()()min 84()45f C f s f D f C ++????

====?

???++??

??;

43s D =时,14321()13()()min 42()25f C f s f D f C ++????

====????++??

??;

当5

s E =时,15233()35()()min 1()188545()f D f s f E f D f D ++????

????

==+=+=??

??????

++???

?; 综上,可得此问题的最短路为:211A B C D E →→→→,此最短路的长度为8 方法二:Dijkstra 算法

I 表示已标号的点的集合,J 表示未标号点的集合,M 表示始点标号终点未标号的边的集合,一次记A 点到3D 点分别为1,2,3……8,9,记点E 为u 点,ij s 表示i 点到j 点的最短路的长度,ij c 表示i 点到j 点的距离。 (1) 给起点A 的标号为(0,s)

(2){}I A =,{}12312123,,,,,,,,J B B B C C D D D E =;

{}123(,),(,),(,)M A B A B A B =;

所以:121112033s s c =+=+=

131113141414022011

s s c s s c =+=+==+=+=

则:12131414min(,,)1s s s s ==

给边3(,)A B 中未标号的点3B 标以(1,1)

(3) {}3,I A B =,{}1212123,,,,,,,J B B C C D D D E =;

{}123132(,),(,),(,),(,)M A B A B B C B C = 所以

451445461446134156

s s c s s c =+=+==+=+=

则:1213454613min(,,,)2s s s s s == 给边2(,)A B 中未标号的点2B 标以(2,1)

(4) {}23,,I A B B =,{}112123,,,,,,J B C C D D D E =; {}121223132(,),(,),(,),(,),(,)M A B B C B C B C B C =; 所以351335213s s c =+=+=;

361336235s s c =+=+=;

则:123536454612

35min(,,,,)2s s s s s s s ===;

给边1(,)A B 中未标号的点1B 标以(3,1); 给边21(,)B C 中未标号的点1C 标以(3,3);

(5) {}1231,,,,I A B B B C =,{}2123,,,,J C D D D E =;

{}122232111213(,),(,),(,),(,),(,),(,)M B C B C B C C D C D C D =; 所以:261226336s s c =+=+=;

573557325s s c =+=+=; 583558358s s c =+=+=; 593559314s s c =+=+=;

则:26364657585959min(,,,,,)4s s s s s s s == 给边13(,)C D 中未标号的点3D 标以(4,5)

(6) {}12313,,,,,I A B B B C D =,{}212,,,J C D D E =;

{}12223211123(,),(,),(,),(,),(,),(,)M B C B C B C C D C D D E =; 所以:9599459u u s s c =+=+=;

则263646575893657min(,,,,,)5u s s s s s s s s ===; 给边22(,)B C 中未标号的点2C 标以(5,3); 给边11(,)C D 中未标号的点1D 标以(5,5);

(7) {}1231213,,,,,,,I A B B B C C D D =,{}2,J D E =;

{}122213(,),(,),(,),(,)M C D C D D E D E =; 所以:683668549s s c =+=+=

7577538u u s s c =+=+=;

则:586879587min(,,,)8u u u s s s s s s ===; 给边12(,)C D 中未标号的点2D 标以(8,5); 给边1(,)D E 中未标号的点E 标以(8,7);

综上,可以从标号中找到最短路为:211A B C D E →→→→,最短距离为8 方法三:结合求最小树的Kruskal 算法和破圈运算产生的一种新型算法 算法步骤:

(1)开始把边按权的大小从小到大排列并标号;权最小的边标为1号,权次

小的标为2号,以此类推,将剩余的边分别标为3号、4号、....(权相同的边标号相同)记i=1;

(2)选取i 号边,观察从A 到E 点是否存在通路; (3)若没有路,置i=i+1,转第一步;否则,转第四步; (4)若仅有一条路,停止。这条路即为所求;否则,转第五步; (5)破除所有的圈,转第四步。 求解文中例题:

按照以上步骤,如图所示:

A

E

3D

1D

2D

2C

1C

3

2B

1B

1

1

1

1 1

2

2

2

3

3

A

E

3D

1D

2D

2C

1C

3

2B

1

1

1

1

1 1

2

2

2

3

3

3

3 A

E

3D

1D

2D

2C

1C

3

2B 1B

1

1

1

1 1

2

2

2

A

E

3D

1D

2D

2C

1C

3

2B

1B

1 1

1

1 1

说明:在圈122AB C B A 中,去掉最长边1AB ;在圈213AB C B 中,去掉最长边31B C ;在圈2112B C D C B 中,去掉最长边22B C 。至此得到最短路为:

211A B C D E →→→→,最短路程为8

四、 结论

(1)对于动态规划法:这种方法的解题步骤为:从最后一个阶段开始,从始

点向终点方向逐阶段顺推,找出各点到终点的最短路,当逆推到始点时,也就找到了从始点到终点的全过程的最短路。它的最大特点在于它不仅可求出全过程的最短路,还可求出图上任一点到终点的最短路。但是此种方法解决的问题也有其局限性。它要求最短路问题能明晰地分成几个阶段,且阶段间不交叉, 即每一条路都要经过相同的阶段,有固定的步骤。

(2)对于Dijkstra 算法:此算法的特点在于不仅能找到始点到终点的最短路

及距离,还能根据各点的标点找到始点到各点的最短路及距离。而且对于一般的每条弧的赋权数 Cij ≥0 的最短路问题它都能求解。

(3)对于新型算法:简单易懂,容易操作,直观性很强。而且简便了运算。 (4)三种方法相比较可知:可知三种解答方法结果一致。最短路问题的解法

各有其优点, 动态规划的的方法不仅可求出全过程的最短路, 还可同时求出图上任一点到终点的最短路; Dijkstra 算法不仅能找到始点到终点的最短路及距离, 还能根据各点的标点找到始点到各点的最短路及距离。相比较而言 Dijkstra 算法适用范围更广些。动态规划法解决例题要用15 次加法运算,以及8 次比较运算, 而用新型方法所给算法只需 3 次迭代, 3 次破圈运算。由此可知,新型算法在算法复杂性上要比动态规划要好,在广泛性上,Dijkstra 算要比动态规划要广。

参 考 文 献

[1] 卢开澄.图论及其应用[M].北京: 清华大学出版社,1981. [2] 韩伯棠.管理运筹学[M].北京: 高等教育出版社,1999.

[3]胡运权:运筹学教程[M].北京 : 清华大学出版社,2003年5月 第 2 版,第 206~207 页

[4]刁在筠.郑汉鼎.刘家壮等:运筹学[M]北京:高等教育出版社2001年9月第1版第180 页、第 155~158 页、第 160 页

最短路算法[1]

最短路算法及其应用 广东北江中学余远铭【摘要】 最短路问题是图论中的核心问题之一,它是许多更深层算法的基础。同时,该问题有着大量的生产实际的背景。不少问题从表面上看与最短路问题没有什么关系,却也可以归结为最短路问题。本文较详尽地介绍了相关的基本概念、常用算法及其适用范围,并对其应用做出了举例说明,侧重于模型的建立、思考和证明的过程,最后作出总结。 【关键字】 最短路 【目录】 一、基本概念 (2) 1.1 定义 (2) 1.2简单变体 (2) 1.3负权边 (3) 1.4重要性质及松弛技术 (4) 二、常用算法 (5) 2.1 Dijkstra算法 (5) 2.2 Bellman-Ford算法 (7) 2.3 SPFA算法 (8) 三、应用举例 (10) 3.1 例题1——货币兑换 (10) 3.2 例题2——双调路径 (11) 3.3 例题3——Layout (13) 3.4 例题4——网络提速 (15) 四、总结 (18)

【正文】 一、基本概念 1.1 定义 乘汽车旅行的人总希望找出到目的地尽可能短的行程。如果有一张地图并 在地图上标出了每对十字路口之间的距离,如何找出这一最短行程? 一种可能的方法是枚举出所有路径,并计算出每条路径的长度,然后选择最短的一条。然而我们很容易看到,即使不考虑含回路的路径,依然存在数以百万计的行车路线,而其中绝大多数是没必要考虑的。 下面我们将阐明如何有效地解决这类问题。在最短路问题中,给出的是一 有向加权图G=(V ,E),在其上定义的加权函数W:E →R 为从边到实型权值的映射。路径P=(v 0, v 1,……, v k )的权是指其组成边的所有权值之和: 11()(,)k i i i w p w v v -==∑ 定义u 到v 间最短路径的权为 {}{}min ():)w p u v u v v δυ→(,=∞ 如果存在由到的通路 如果不存在 从结点u 到结点v 的最短路径定义为权())w p v δυ=(,的任何路径。 在乘车旅行的例子中,我们可以把公路地图模型化为一个图:结点表示路口,边表示连接两个路口的公路,边权表示公路的长度。我们的目标是从起点出发找一条到达目的地的最短路径。 边的权常被解释为一种度量方法,而不仅仅是距离。它们常常被用来表示 时间、金钱、罚款、损失或任何其他沿路径线性积累的数量形式。 1.2简单变体 单目标最短路径问题: 找出从每一结点v 到某指定结点u 的一条最短路 径。把图中的每条边反向,我们就可以把这一问题转化为单源最短路径问题。 单对结点间的最短路径问题:对于某给定结点u 和v ,找出从u 到v 的一 条最短路径。如果我们解决了源结点为u 的单源问题,则这一问题也就获得了解决。对于该问题的最坏情况,从渐进意义上看,目前还未发现比最好的单源算法更快的方法。 每对结点间的最短路径问题:对于每对结点u 和v ,找出从u 到v 的最短 路径。我们可以用单源算法对每个结点作为源点运行一次就可以解决问题。

最短路问题的实际应用论文

金华双龙洞旅游路线中最短路问题 摘要: 金华双龙洞景点分布较多,通过对其旅游路线的设置,转化为图论内容中的最短路情景进行讨论,建立模型,并通过搜索资料,利用几种方法解决路线最小的问题。 关键字: 数学建模最短路问题 lingo Dijkstra法 flod算法 一、研究背景: 在旅游过程中,我们常常感觉到自己一天下来走了很多路,回到宾 馆脚痛的不行。但其实我们可以利用运筹学的知识,通过建立数学 模型,转化为图论的内容。从而较为合理的制定出选择的路线(即 最短路问题)。 因而这次的小论文,我主要探究一下几个问题: 1.从景点进口到出口的最短路程。(最短路问题) 2.从景点到出口的最长路线。 3.建立的模型是否满足能回到起点(古典图论问题) 二、研究内容: 根据从互联网中搜索的资料,金华双龙洞的主要景点:景区进口双 龙洞,冰壶洞,朝真洞,桃源洞,黄大仙祖宫五个,其余为小景点 (若要加入,同样可以按照以下问题的研究方法进行讨论)现在忽 略。 问题总假设:分别设置双龙洞,冰壶洞,朝真洞,桃源洞,黄大仙 祖宫五个景点为A,B,C,D,E五点,根据现实及假设,可以得到如图 所示的路线图:

再利用用Dijkstra算法求解无负权网络的最短路。同时也可以利用此法算出最长路程。 问题一的解决:以A为景点出口,E为出口。 故A点标号为P(a)=0 给其余所有的T标号T(i)=+∞ 考虑与A相邻的两个顶点BC,两个顶点为T标号,故修改这两个点的标号为:T(b)=min[T(b),P(a)+l12]=min[+∞,0+3]=3 T(c)=min[T(c),P(a)+l13]=min[+∞,0+2]=2 比较所有T标号,T(c)最小,所以令P(c)=2 再考察(C,B)(C,D)(C,E)的端点:同理可得 T(b)=6 T(d)=6.8 T(e)=10.2(显然已经到终点但还需要看看其余路线长短) 故又令P(b)=6.综合分析只有一条线路即A→C→B→D→E 此时总路程为2+4+3+8.4=16.4>10.2 所以,最短路程为A→C→E。即当游客不想再看双龙洞时或者因为脚伤等因素需以最小路程离开时,可以路线A→C→E离开景区。 特殊情况的处理:游客一定要去B景点则在一开始就应该先选择 B,而非C。才能使路线最短。因此,对于特殊问题,我们应当具体 问题,具体分析。

运筹学论文最短路问题

运筹学论文 ——旅游路线最短问题摘要: 随着社会的发展,人民的生活水平的提高,旅游逐渐成为一种时尚, 越来越多的人喜欢旅游。而如何才能最经济的旅游也成为人民考虑的一项 重要环节,是选择旅游时间最短,旅游花费最少还是旅游路线最短等问题 随之出现,如何决策成为一道难题。然而,如果运用运筹学方法来解决这 一系列的问题,那么这些问题就能迎刃而解。本文以旅游路线最短问题为 列,给出问题的解法,确定最短路线,实现优化问题。 关键词:最短路 0-1规划约束条件 提出问题: 从重庆乘飞机到北京、杭州、桂林、哈尔滨、昆明五个城市做旅游,每个城市去且仅去一次,再回到重庆,问如何安排旅游线路,使总旅程最短。 各城市之间的航线距离如下表: 重庆北京杭州桂林哈尔滨昆明 重庆0 1640 1500 662 2650 649 北京1640 0 1200 1887 1010 2266 杭州1500 1200 0 1230 2091 2089 桂林662 1887 1230 0 2822 859 哈尔滨2650 1010 2091 2822 0 3494 昆明649 2266 2089 859 3494 0 问题分析: 1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先 后到达的关系),有些城市之间就可能没有这种关系,所以给出的两 两城市距离中有些在最后的最短路线距离计算中使用到了,有些则 没有用。这是一个0-1规划的问题,也是一个线性规划的问题。 2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就

导致了这六个城市其中有的两个城市是直接相连的,另外也有两个 城市是不连接的。这就可以考虑设0-1变量,如果两个城市紧接着 去旅游的则为1,否则为0。就如同下图 实线代表两个城市相连为1, 虚线代表没有相连为0 3.因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。 LINGO解法: 为了方便解题,给上面六个城市进行编号,如下表(因为重庆是起点, 将其标为1) 假设:设变量x11。如果x11=1,则表示城市i与城市j直接相连(即先后紧接到达关系),否则若x11=0,则表示城市i与城市j不相连。 特别说明:xij和xji是同一变量,都表示表示城市i与城市j是否有相连的关系。这里取其中xij (i

初二最短路径问题归纳

初二最短路径问题归纳 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

最短路径问题专题学习【基本问题】 m n

在直线l 上求一点P ,使PB PA -的值最小. 【问题10】 作法 图形 原理 在直线l 上求一点P ,使PB PA -的值最大. 作B 关于l 的对称点B '作直线A B ',与l 交点即为 P . 三角形任意两边之 差小于第三边.PB PA -≤ AB '. PB PA -最大值= AB '. 【精品练习】 1.如图所示,正方形ABCD 的面积为12,△ABE 是等边三角形,点E 在正方形ABCD 内,在对角线AC 上有一点P ,使PD +PE 的和最小,则这个最小值为( ) A .23.6 C .3 D 6 2.如图,在边长为2的菱形ABCD 中,∠ABC =60°,若将△ACD 绕点A 旋转,当 AC ′、AD ′分别与BC 、CD 交于点E 、F ,则△CEF 的周长的最小值为( ) A .2 B .32 C .32+ D .4 3.四边形ABCD 中,∠B =∠D =90°,∠C =70°,在BC 、CD 上分别找一点M 、N ,使△AMN 的周长最小 时,∠AMN +∠ANM 的度数为( ) l A B D E A B C A D E P B C D A M A B M N 第2题 第3题 第4

A .120 ° B .130° C .110° D .140° 4.如图,在锐角△ABC 中,AB =4 2 ,∠BAC =45°,∠BAC 的平分线交BC 于点D , M 、N 分别是AD 和AB 上的动点,则BM +MN 的最小值是 . 5.如图,Rt △ABC 中,∠C =90°,∠B =30°,AB =6,点E 在AB 边上,点D 在BC 边上(不与点B 、C 重 合),且ED =AE ,则线段AE 的取值范围是 . 6.如图,∠AOB =30°,点M 、N 分别在边OA 、OB 上,且OM =1,ON =3,点P 、Q 分 别在边OB 、OA 上,则MP +PQ +QN 的最小值是_________. 7.如图,三角形△ABC 中,∠OAB =∠AOB =15°,点B 在x 轴的正半轴,坐标为 B (36,0). OC 平分∠AOB ,点M 在OC 的延长线上,点N 为边OA 上的点,则MA +MN 的最小值 是______. 8.已知A (2,4)、B (4,2).C 在y 轴上,D 在x 轴上,则四边形ABCD 的周长最 小值为 , 此时 C 、D 两点的坐标分别为 . 9.已知A (1,1)、B (4,2). y x B O A y x B A O 第6题 第

图论及其应用(精)

图论及其应用 学时:40 学分:2 课程属性:专业选修课开课单位:理学院 先修课程:高等代数后续课程:无 一、课程的性质 《图论及其应用》是数学与应用数学专业的专业选修课程。 二、教学目的 通过教学,使学生掌握图论及其算法的基本理论和基本技巧,初步掌握图论及其算法的基本应用手段、基本算法设计及编程,并能用所学理论解决一些应用问题。 三、教学内容 1.图的基本概念 2.图的连通性 3.树的基本性质及其应用 4.Euler Graphs and Hamilton Graphs with Applications 5.平面图性质 6.匹配,求最大匹配算法及应用 7.图的染色及应用 8.极图理论 四、学时分配 章课程内容学时 1 图的基本概念 4 2 图的连通性 6 3 树的基本性质及其应用 6 4 Euler Graphs and Hamilton Graphs with Applications 4 5 平面图性质 6 6 匹配,求最大匹配算法及应用 6

7 图的染色及应用 4 8 极图理论 4 合计40 五、教学方式 本课程采用多媒体课堂讲授,结合实际范例深入浅出讲解讨论。 六、考核方式 本课程考核采用平时与期末考核相结合的办法,特别注重平时的考核,作业采用简单练习、论文等形式,期末考试采用简单考题或论文形式。 七、教材及教学参考书 参考教材: [1] J.A.Bondy and U.S.R.Murty. Graph Theory with Applications, The Macmillan Press LTD,1976. [2] 蒋长浩.图论与网络流.北京:中国林业出版社,2000. 参考书目: [1] Bela Bollobas.Modern Graph Theory(现代图论,影印版).北京:科学出版社,2001. [2] 殷剑宏、吴开亚.图论及其算法.合肥:中国科学技术大学出版社,2003. [3] 谢金星、邢文训.网络优化.北京:清华大学出版社.2000. [4] 程理民、吴江、张玉林.运筹学模型与方法教程.北京:清华大学出版社,2000. [5] 三味工作室.SPSS V10.0 for Windows 实用基础教程.北京:北京希望电子出版社2001. [6] 孙魁明、张海彤.Mathematica工具软件大全.北京:中国铁道出版社,1994. [7] 楼顺天、于卫、闫华梁.MATLAB程序设计语言.西安:西安电子科技大学出版社,1997.八、教学基本内容及要求 第一章图的基本概念 1.教学基本要求 掌握的图的基本概念、特殊图概念,了解最短路问题。 2.教学具体内容 图的基本概念,路和圈,最短路问题。

勾股定理之最短路径(填空选择)中考题

一、选择题(共17小题) 1、(2011?广安)如图,圆柱的底面周长为6cm,AC是底面圆的直径,高BC=6cm,点P是母线BC上一点,且PC=BC.一只蚂蚁从A点出发沿着圆柱体的表面爬行到点P的最短距离是() A、B、5cm C、D、7cm 2、(2009?乐山)如图,一圆锥的底面半径为2,母线PB的长为6,D为PB的中点.一只蚂蚁从点A出发,沿着圆锥的侧面爬行到点D,则蚂蚁爬行的最短路程为() A、B、2 C、3 D、3 3、(2009?恩施州)如图,长方体的长为15,宽为10,高为20,点B离点C的距离为5,一只蚂蚁如果要沿着长方体的表面从点A爬到点B,需要爬行的最短距离是() A、5 B、25 C、10+5 D、35 4、(2005?山西)如图,点A和点B分别是棱长为20cm的正方体盒子上相邻面的两个中心.一只蚂蚁在盒子表面由A处向B处爬行,所走的最短路程是()

A、40cm B、20cm C、20cm D、10cm 5、(2005?贵阳)如图A,一圆柱体的底面周长为24cm,高BD为4cm,BC是直径,一只蚂蚁从点D出发沿着圆柱的表面爬行到点C的最短路程大约是() A、6cm B、12cm C、13cm D、16cm 6、(2004?淄博)如图是一块长,宽,高分别是6cm,4cm和3cm的长方体木块一只蚂蚁要从长方体木块的一个顶点A处,沿着长方体的表面到长方体上和A相对的顶点B处吃食物,那么它需要爬行的最短路径的长是() A、(3+2)cm B、cm C、cm D、cm 7、(2004?梅州)如图,一只蚂蚁沿边长为a的正方体表面从顶点A爬到顶点B,则它走过的路程最短为() A、 a B、(1+)a C、3a D、a 8、(2004?济宁)如图,正方体盒子的棱长为2,BC的中点为M,一只蚂蚁从M点沿正方体的表面爬到D1点,蚂蚁爬行的最短距离是()

最短路问题及其应用——最短路径

最短路问题及应用 摘要:主要介绍最短路的两种算法,迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法以及这两种算法在实际问题中的应用和比较。 关键词:最短路获克斯特拉(Dijkstra),弗罗伊德(Floyd)算法 1.引言 图论是应用数学的一个分支,它的概念和结果来源非常广泛,最早起源于一些数 学游戏的难题研究,如欧拉所解决的哥尼斯堡七桥问题,以及在民间广泛流传的一些游戏难题,如迷宫问题、博弈问题、棋盘上马的行走路线问题等。这些古老的难题,当时吸引了很多学者的注意。在这些问题研究的基础上又继续提出了著名的四色猜想 和汉米尔顿(环游世界)数学难题。 1847年,图论应用于分析电路网络,这是它最早应用于工程科学,以后随着科学的发展,图论在解决运筹学,网络理论,信息论,控制论,博弈论以及计算机科学 等各个领域的问题时,发挥出越来越大的作用在实践中,图论已成为解决自然科学、工程技术、社会科学、军事等领域中许多问题的有力工具之一。 最短路问题是图论理论的一个经典问题。寻找最短路径就是在指定网络中两结点 间找一条距离最小的路。最短路不仅仅指一般地理意义上的距离最短,还可以引申到其它的度量,如时间、费用、线路容量等。 最短路径算法的选择与实现是通道路线设计的基础,最短路径算法是计算机科学 与地理信息科学等领域的研究热点,很多网络相关问题均可纳入最短路径问题的范畴之中。经典的图论与不断发展完善的计算机数据结构及算法的有效结合使得新的最短路径算法不断涌现。 2.最短路算法 2.1 最短路的定义 对最短路问题的研究早在上个世纪60年代以前就卓有成效了,其中对赋权图()0 w≥的有效算法是由荷兰著名计算机专家E.W.Dijkstra在1959年首次提出的,该ij 算法能够解决两指定点间的最短路,也可以求解图G中一特定点到其它各顶点的最短

专题训练之最短路径问题(最全面的经典例题)

最短路径问题 1、①如右图是一个棱长为4的正方体木块,一只蚂蚁要从木块的点面 爬到点B处,则它爬行的最短路径是 _______________ 。 ②如右图是一个长方体木块,已知AB=3,BC=4,CD=2假设一只蚂蚁在点A处, 它要沿着木块侧面爬到点D处,则蚂蚁爬行的最短路径是____________________ 。 2、①如图,要在河边修建一个水泵站,分别向张村、李庄送水,水泵站修在河边什么地方可使所用的水管最短。 *李庄 张村. ②如图,直线L同侧有两点A B,已知A、B到直线L的垂直距离分别为1和3, 两点的水平距离为3,要在直线L上找一个点P,使PA+PB勺和最小。请在图中找出点P的位置,并计算PA+P啲最小值。.B A■ _____________________ L ③要在河边修建一个水泵站,向张村、李庄铺设管道送水,若张村、李庄到河边的垂直距离分别为1Km和3Km张村与李庄的水平距离为3Km则所用水管最短长度为。 A沿木块侧 A B

是一个长方体木块,已知 AB=5,BC=3,CD=4假设一只蚂 蚁在点A D 处,则蚂蚁爬行的最短路径是2、 现要在如图所示的圆柱体侧面 A 点与B 点之间缠一条金丝带(金丝带的宽度 忽略不计),圆柱体高为6cm 底面圆周长为16cm ,则所缠金丝带长度的最小值 为 。 3、 如图是一个圆柱体木块,一只蚂蚁要沿圆柱体的表面从 A 点爬到点B 处吃到 食物,知圆柱体的高为5 cm ,底面圆的周长为24cm 则蚂蚁爬行的最短路径 为 。 5、 在菱形ABCD 中 AB=2 / BAD=60,点E 是AB 的中点,P 是对角线 AC 上 的一个动点,贝S PE+PB 勺最小值为 ___________ 。 6、 如图,在△ ABC 中, AC= BC= 2,Z ACB= 90°, D 是 BC 边的中点,E 是 AB 边 上一动点,则EO ED 的最小值为 ____________ 。 7、 AB 是OO 的直径,AB=2 OC 是O O 的半径,OCL AB,点 D 在 AC 上,AD 二 2CD 点P 是半径OC 上的一个动点,贝S AP+PD 勺最小值为 __________ 。 &如图,点P 关于OA OB 的对称点分别为 C D,连接CD 交OA 于M 交OB 于N 若CD= 18cm 则厶PMN 勺周长为 ___________ 。 9、已知,如图DE >^ ABC 的边AB 的垂直平分线,D 为垂足,DE 交BC 于 E ,且 AC= 5, BC= 8,则厶 AEC 的周长为 __________ 。 10、已知,如图,在△ ABC 中, AB

最短路问题(整理版)

最短路问题(short-path problem) 若网络中的每条边都有一个权值值(长度、成本、时间等),则找出两节点(通常是源节点与结束点)之间总权和最小的路径就是最短路问题。最短路问题是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。最短路问题,我们通常归属为三类:单源最短路径问题(确定起点或确定终点的最短路径问题)、确定起点终点的最短路径问题(两节点之间的最短路径) 1、Dijkstra算法: 用邻接矩阵a表示带权有向图,d为从v0出发到图上其余各顶点可能达到的最短路径长度值,以v0为起点做一次dijkstra,便可以求出从结点v0到其他结点的最短路径长度 代码: procedure dijkstra(v0:longint);//v0为起点做一次dijkstra begin//a数组是邻接矩阵,a[i,j]表示i到j的距离,无边就为maxlongint for i:=1 to n do d[i]:=a[v0,i];//初始化d数组(用于记录从v0到结点i的最短路径), fillchar(visit,sizeof(visit),false);//每个结点都未被连接到路径里 visit[v0]:=true;//已经连接v0结点 for i:=1 to n-1 do//剩下n-1个节点未加入路径里; begin min:=maxlongint;//初始化min for j:=1 to n do//找从v0开始到目前为止,哪个结点作为下一个连接起点(*可优化) if (not visit[j]) and (min>d[j]) then//结点k要未被连接进去且最小 begin min:=d[j];k:=j;end; visit[k]:=true;//连接进去 for j:=1 to n do//刷新数组d,通过k来更新到达未连接进去的节点最小值, if (not visit[j]) and (d[j]>d[k]+a[k,j]) then d[j]:=a[k,j]+d[k]; end; writeln(d[n]);//结点v0到结点n的最短路。 思考:在实现步骤时,效率较低需要O(n),使总复杂度达到O(n^2)。对此可以考虑用堆这种数据结构进行优化,使此步骤复杂度降为O(log(n))(总复杂度降为O(n log(n))。 实现:1. 将与源点相连的点加入堆(小根堆),并调整堆。 2. 选出堆顶元素u(即代价最小的元素),从堆中删除,并对堆进行调整。 3. 处理与u相邻(即下一个)未被访问过的,满足三角不等式的顶点 1):若该点在堆里,更新距离,并调整该元素在堆中的位置。 2):若该点不在堆里,加入堆,更新堆。 4. 若取到的u为终点,结束算法;否则重复步骤2、3。 **优化代码:(DIJKSTRA+HEAP) program SSSP;{single source shortest path} {假设一个图的最大节点数为1000,所有运算在integer范围内} {程序目标:给定有向图的邻接表,求出节点1到节点n的最短路径长度} const maxn=1000;{最大节点数} var n:integer;{节点个数} list:array[1..maxn,1..maxn] of integer;{邻接矩阵,表示边的长度}

关于最短路问题算法的一点思考

关于最短路问题算法的一点思考 最短路问题,实际上是P95。也就是我们用一个算法解决SP问题时,就是在找这个加权图G中从s到t的P(s,t)中边权之和最小的P*(s,t). 由定义就可以看出,实际生活中经常有最短路问题的例子。例如: 实例1.某公司在六个城市s,t,a,b都有分公司,公司成员经常往来于它们之间,已知从Vi到Vj的直达航班票价由下述矩阵的第i行,第j列元素给出(∞表示无直达航班),该公司想算出一张任意两个城市之间的最廉价路线航费表。 图+矩阵 实例2.如图的交通网络,每条弧上的数字代表车辆在该路段行驶所需的时间,有向边表示单行道。若有一批货物要从s号顶点运往t号顶点,问运货车应沿哪条线路行驶,才能最快地到达目的地? 图+矩阵 因此怎么样快速又精确的求解一个最短路问题就显得至关重要。下面我们来介绍几种解决SP问题的有效途径。 一、把求最短路问题转化为LP问题 P95 二、最短路问题的原始对偶算法:Dijkstra算法 Pdf最短路+课本P138 综上,即为Dijkstra算法,它的有效实施体现在:P161 对Dijkstra算法的一点思考: 1.关于Dijkstra算法,书中的例子定义了一个使用范围,即寻求有向图中,从一固定顶点到其余各点的最短路径。那么一个简单的推广就是在于,对于无向图或者混合图的情况Dijkstra算法还能否使用?答案应该是肯定的。也就是说,实例2中无论是单行道,双行道的情况都是可以应用Dijkstra算法进行求解的。 2. 作为学习图论的一名学生,Dijkstra算法的本质可以说就是在一个图中,进行标号,每次迭代产生一个永久标号, 从而生长一颗以s为根的最短路树,在这颗树上每个顶点与根s 节点之间的路径皆为最短路径. 3.Dijkstra算法明确要求权(费用)非负,这无疑会限制一些是实际生活中的例子进行求解,若出现的边权为负的情况,Dijkstra算法就要进行修改。并且,如果我们对Dijkstra算法进行编程,即使根据书中拟Algol语言的提示以我现有的水平也根本写不出Matlab的高级程序语言。但是有另外一种算法有效的避免了这个麻烦,它的逻辑更为简单,并允许网络中的弧有负权,能探测网络中负费用圈,与一般的原始对偶算法不同。 三、Floyd-Warshall算法 P164 并且,有一点比较吸引我的地方是在于Floyd-Warshall算法的逻辑较为简单,我可以跟据课本上拟Algol语言,编写出一部分Matlab的程序,但是因为编译程序的水平的限制,每次运行的时候都会出现不同的错误。在与计算数学的同学进行讨论的时候,因为他们偏重绘图而我们偏重优化,导致也为得出有效的解决措施。

最短路径问题

最短路径问题 摘要 在图论当中,任意两点间的最短路径问题,运用Dijkstra 算法,Flord 算法,匈牙利算法等都可以就解决这类相关问题,本文主要就是运用图论相关知识,来分析问题的。 在问题一中,需要为货车司机选择一条从地点1到地点11的最短时间问题,其实际归结为求一个两点间最短路径问题,运用运筹学中的网络模型相关知识,建立了一个一个0-1线性模型,并最终求的其结果,最短时间为21,货车司机的运输路线为1891011v v v v v →→→→。 运用Floyd 算法解决问题二,并且运用Matlab 软件编程,Floyd 算法与Matlab 软件编程所得出的结果一致,最后得出了一个最短航程表,及任意两点间的最短航程图。 本文的最大亮点在于将问题二进行更深一步的拓展,从问题实际出发,从公司的差旅费用最小出发,利用Mtlab 软件编程的出了公司到个城市间差旅费用最小图,从而更能为公司节省成本。 任意城市间差旅费用最小 其次是本文结果的准确性,问题一运用Lingo 软件编程,和WinQSB 软件,所得出结果都是一致的,问题二更是运用Floyd 算法,Matlab 软件编程,WinQSB 软件,大大地保证了结果的准确性,并且十分恰当地运用WinQSB 软件将作图功能,把每一提的最短路径都清晰的描绘出来,更加直观地将结果展现出来。 关键字:Matlab Lingo WinQSB Floyd 算法 0-1规划

一、 问题重述 问题一需要解决的问题是在一个城市交通网络中(图一),如何从地点1找到一条时间最短路径通往地点11,在这个城市交通网络中,有单向道,也有双向道,即如何处理一个有向图与无向图结合的图论问题,并且是一个两点间的最短路径问题: 图(一) 问题二阐述的是某公司员工往来于六个城市间,给出了这六个城市间的直达航班票价(表二),需要为这家公司提供出这六个城市间任意两点间的最小航班费用表 05040251050015202515010204020100102525201005510 2525550∞ ?? ??∞???? ∞∞?????? ∞?? ∞?? 表(二) 二、问题分析

排列组合中的最短路径问题

两个计数原理的应用 一、选择题 1.如图,小明从街道的E处出发,先到F处与小红会合,再一起到位于G处的老年公寓参加志愿者活动,则小明到老年公寓可以选择的最短路径条数为【答案】B (A)24 (B)18 (C)12 (D)9 【解析】 试题分析:由题意,小明从街道的E处出发到F处最短路径的条数为6,再从F处到G ?=,故处最短路径的条数为3,则小明到老年公寓可以选择的最短路径条数为6318 选B. 【考点】计数原理、组合 【名师点睛】分类加法计数原理在使用时易忽视每类中每一种方法都能完成这件事情,类与类之间是相互独立的;分步乘法计数原理在使用时易忽视每步中某一种方法只是完成这件事的一部分,而未完成这件事,步步之间是相互关联的. 2.如图,一只蚂蚁从点出发沿着水平面的线条爬行到点,再由点沿着置于水平面的长方体的棱爬行至顶点,则它可以爬行的不同的最短路径有( B )条

A. 40 B. 60 C. 80 D. 120 【解析】试题分析:蚂蚁从到需要走五段路,其中三纵二竖,共有条路径,从到共有条路径,根据分步计数乘法原理可知,蚂蚁从到可以爬行的不同的最短路径有条,故选B. 考点:分步计数乘法原理. 二、解答题 3.某城市有连接8个小区A、B、C、D、E、F、G、H和市中心O的整齐方格形道路网,每个小方格均为正方形,如图,某人从道路网中随机地选择一条最短路径,由小区A前往H. (1)列出此人从小区A到H的所有最短路径(自A至H依次用所经过的小区的字母表示); (2)求他经过市中心O的概率. 【答案】(1)见解析(2)2 3 【解析】 解:(1)此人从小区A前往H的所有最短路径为:

人教版八年级上册13.4最短路径问题练习题

13.4课题学习最短路径问题 知识点: 1.最短路径问题 (1)求直线异侧的两点与直线上一点所连线段的和最小的问题,只要连接这两点,与直线的交点即为所求. (2)求直线同侧的两点与直线上一点所连线段的和最小的问题,只要找到其中一个点关于这条直线的对称点,连接对称点与另一个点,则与该直线的交点即为所求. 2.运用轴对称解决距离最短问题 运用轴对称及两点之间线段最短的性质,将所求线段之和转化为一条线段的长,是解决距离之和最小问题的基本思路,不论题目如何变化,运用时要抓住直线同旁有两点,这两点到直线上某点的距离和最小这个核心,所有作法都相同.3.利用平移确定最短路径选址 解决连接河两岸的两个点的最短路径问题时,可以通过平移河岸的方法使河的宽度变为零,转化为求直线异侧的两点到直线上一点所连线段的和最小的问题. 同步练习: 1.如图所示,点A,B分别是直线l异侧的两个点,在l上找一个点C,使CA+CB最短,这时点C是直线l与AB的交点. 2.如图所示,点A,B分别是直线l同侧的两个点,在l上找一个点C,使CA+CB最短, B A l 3..在图中直线l上找到一点M,使它到A,B两点的距离和最小.

4. 如图,小河边有两个村庄A,B,要在河边建一自来水厂向A村与B村供水. (1)若要使厂部到A,B村的距离相等,则应选择在哪建厂? (2)若要使厂部到A,B两村的水管最短,应建在什么地方? 5. 如图,从A地到B地经过一条小河(河岸平行),今欲在河上建一座与两岸垂直的桥,应如何选择桥的位置才能使从A地到B地的路程最短?

参考答案: 1. 2.这时先作点B 关于直线l 的对称点B ′,则点C 是直线l 与AB ′的交点. 为了证明点C 的位置即为所求,我们不妨在直线上另外任取一点C ′,连接AC ′,BC ′,B ′C ′,证明AC +CB <AC ′+C ′B .如下: 证明:由作图可知,点B 和B ′关于直线l 对称, 所以直线l 是线段BB ′的垂直平分线. 因为点C 与C ′在直线l 上, 所以BC =B ′C ,BC ′=B ′C ′. 在△AB ′C ′中,AB ′<AC ′+B ′C ′, 所以AC +B ′C <AC ′+B ′C ′, 所以AC +BC <AC ′+C ′B . 3. 解:如图所示:(1)作点B 关于直线l 的对称点B ′; (2)连接AB ′交直线l 于点M . (3)则点M 即为所求的点. 4.解:(1)如图1,取线段AB 的中点G ,过中点G 画AB 的垂线,交EF 于P , 则P 到A ,B 的距离相等.也可分别以A 、B 为圆心,以大于12 AB 为半径画弧,两弧交于两点,过这两点作直线,与EF 的交点P 即为所求. (2)如图2,画出点A 关于河岸EF 的对称点A ′,连接A ′B 交EF 于P ,则P 到A ,B 的距离和最短. 5.解:(1)如图2,过点A 作AC 垂直于河岸,且使AC 等于河宽.

(完整版)初中数学[最短路径问题]典型题型及解题技巧

初中数学[最短路径问题]典型题型及解题技巧 最短路径问题中, 关键在于,我们善于作定点关于动点所在直线的对称点,或利用平移和展开图来处理。这对于我们解决此类问题有事半功倍的作用。理论依据:“两点之间线段最短” ,“垂线段最短”,“点关于线对称”,“线段的平移”“立体图形展开图”。教材中的例题“饮马问题”,“造桥选址问题”“立体展开图”。考的较多的还是“饮马问题” 。 知识点:“两点之间线段最短”,“垂线段最短”,“点关于线对称”,“线段的平移”。“饮马问题”,“造桥选址问题”。考的较多的还是“饮马问题” ,出题背景变式有角、三角形、菱形、矩形、正方形、梯形、圆、坐标轴、抛物线等。解题总思路:找点关于线的对称点实现“折”转“直” ,近两年出现“三折线”转“直”等变式问题考查。 一、两点在一条直线异侧例:已知:如图,A,B在直线L的两侧,在L上求一点P,使得PA+PB 最小。 解:连接AB,线段AB 与直线L 的交点P ,就是所求。(根据:两点之间线段最短.) 二、两点在一条直线同侧 例:图所示,要在街道旁修建一个奶站,向居民区A 、B 提供牛奶,奶站应建在什么地方,才能使从A、B 到它的距离之和最短. 解:只有A、C 、B在一直线上时,才能使AC +BC最小.作点A 关于 直线“街道”的对称点A′,然后连接A ′B,交“街道”于点C,则 点C 就是所求的点. 、一点在两相交直线内部 例:已知:如图A 是锐角∠ MON 内部任意一点,在∠ MON 的两边 OM ,ON 上各取一点B,C ,组成三角形,使三角形周长最小.

解:分别作点A 关于OM ,ON 的对称点A ′,A OM ,ON 于点B、点C ,则点B、点C 即为所求分析:当AB 、BC 和AC 三条边的长度恰好能够体现在一条直线上时,三角形的周长 最小 例:如图,A.B 两地在一条河的两岸,现要在河 上建一座桥MN ,桥造在何处才能使从A 到B 的路径AMNB 最短?(假设河的两岸是平行的直线,桥要与河垂直) 解:1.将点B 沿垂直与河岸的方向平移一个河宽到E, 2.连接AE 交河对岸与点M, 则点M 为建桥的位置,MN 为所建的桥证明:由平移的性质,得 BN∥EM 且BN=EM, MN=CD, BD ∥CE, BD=CE, 所以A.B 两地的距:AM+MN+BN=AM+MN+EM=AE+MN, 若桥的位置建在CD 处,连接AC.CD.DB.CE, 则AB 两地的距离为: AC+CD+DB=AC+CD+CE=AC+CE+MN, 在△ACE 中,∵ AC+CE >AE, ∴AC+CE+MN >AE+MN, 即AC+CD+DB >AM+MN+BN 所以桥的位置建在CD 处,AB 两地的路程最短。 例:如图,A、B 是两个蓄水池,都在河流a 的同侧,为了方便灌溉作物,?要在河边建一个抽水站,将河水送到A、B 两地,问该站建在 连接A ′,A ″,分 别交 B

最短路径问题练习题

13.4课题学习最短路径问题 六街中学:罗云膑1.最短路径问题 (1)求直线异侧的两点与直线上一点所连线段的和最小的问题,只要连接这两点,与直线的交点即为所求. 如图所示,点A,B分别是直线l异侧的两个点,在l上找一个点C,使CA+CB最短,这时点C是直线l与AB的交点. (2)求直线同侧的两点与直线上一点所连线段的和最小的问题,只要找到其中一个点关于这条直线的对称点,连接对称点与另一个点,则与该直线的交点即为所求.如图所示,点A,B分别是直线l同侧的两个点,在l上找一个点C,使CA+CB最短,这时先作点B关于直线l的对称点B′,则点C是直线l与AB′的交点. 为了证明点C的位置即为所求,我们不妨在直线上另外任取一点C′,连接AC′,BC′,B′C′,证明AC+CB<AC′+C′B.如下: 证明:由作图可知,点B和B′关于直线l对称, 所以直线l是线段BB′的垂直平分线. 因为点C与C′在直线l上, 所以BC=B′C,BC′=B′C′. 在△AB′C′中,AB′<AC′+B′C′, 所以AC+B′C<AC′+B′C′, 所以AC+BC<AC′+C′B. 【例1】在图中直线l上找到一点M,使它到A,B两点的距离和最小.

分析:先确定其中一个点关于直线l的对称点,然后连接对称点和另一个点,与直线l 的交点M即为所求的点. 解:如图所示:(1)作点B关于直线l的对称点B′; (2)连接AB′交直线l于点M. (3)则点M即为所求的点. 点拨:运用轴对称变换及性质将不在一条直线上的两条线段转化到一条直线上,然后用“两点之间线段最短”解决问题. 2.运用轴对称解决距离最短问题 运用轴对称及两点之间线段最短的性质,将所求线段之和转化为一条线段的长,是解决距离之和最小问题的基本思路,不论题目如何变化,运用时要抓住直线同旁有两点,这两点到直线上某点的距离和最小这个核心,所有作法都相同. 警误区利用轴对称解决最值问题应注意题目要求根据轴对称的性质、利用三角形的三边关系,通过比较来说明最值问题是常用的一种方法.解决这类最值问题时,要认真审题,不要只注意图形而忽略题意要求,审题不清导致答非所问. 3.利用平移确定最短路径选址 选址问题的关键是把各条线段转化到一条线段上.如果两点在一条直线的同侧时,过两点的直线与原直线的交点处构成线段的差最大,如果两点在一条直线的异侧时,过两点的直线与原直线的交点处构成的线段的和最小,都可以用三角形三边关系来推理说明,通常根据最大值或最小值的情况取其中一个点的对称点来解决. 解决连接河两岸的两个点的最短路径问题时,可以通过平移河岸的方法使河的宽度变为零,转化为求直线异侧的两点到直线上一点所连线段的和最小的问题. 在解决最短路径问题时,我们通常利用轴对称、平移等变换把不在一条直线上的两条线段转化到一条直线上,从而作出最短路径的方法来解决问题. 【例2】如图,小河边有两个村庄A,B,要在河边建一自来水厂向A村与B村供水. (1)若要使厂部到A,B村的距离相等,则应选择在哪建厂? (2)若要使厂部到A,B两村的水管最短,应建在什么地方? 分析:(1)到A,B两点距离相等,可联想到“线段垂直平分线上的点到线段两端点的距离相等”,又要在河边,所以作AB的垂直平分线,与EF的交点即为符合条件的点. (2)要使厂部到A村、B村的距离之和最短,可联想到“两点之间线段最短”,作A(或 B)点关于EF的对称点,连接对称点与B点,与EF的交点即为所求. 解:(1)如图1,取线段AB的中点G,过中点G画AB的垂线,交EF于P,则P到A,

最短路算法

我写的Dijkstra最短路算法通用Matlab程序%dijkstra最短路算法通用程序,用于求从起始点s到其它各点的最短路 %D为赋权邻接矩阵,d为s到其它各点最短路径的长度,DD记载了最短路径生成树function [d,DD]=dijkstra_aiwa(D,s) [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))

for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)

相关文档
最新文档