- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
最短路问题的多种解法
摘要:本文研究的是用动态规划的方法、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?andbroken?ring?operator.It?will?analyze?the?requirements?and?characteristics?of?the?three?ways?by?solving?problems
Keywords:theshortestwayproblems;dynamicprogrammingmethod;Dijkstraalgorithm;Kruskalalgorithm;brokenringoperator
最短路问题是经济管理中经常遇到的问题,如煤气管道铺设,交通运输等等,求解最短路的算法有很多种,本文中就应用动态规划的方法,,Dijkstra算法以及结合求最小树的Kruskal算法和破圈运算,给出求一类最短路问题的一种简单算法来解决遇到的最短路问题。
问题的提出
对于煤气管道铺设问题,我们把它归结为图1所表示的网络,联结各点的线段上的数字表示它们之间的弧长。求A点到E点的最短路程。
5
5
3
3
1
3
4
1
2
3
5
2
4
1
1
5
2
1
3
图1
问题的分析
图1可视为一定阶段最短路问题的标准模型,图1可划分为4个阶段,即n=4.从A点出发到B点为第一阶段,这时有3个选择,一是到,一是到,一是到,假设选择到,那么就是第1阶段决策的结果,它即是这一阶段的路线的终点,又是下一个阶段路线的始点。在第2阶段,再从出发,对于点,有一个可供选择的终点集合,假设选择由至为第2阶段的决策,那么就是第2阶段的终点,同时又是第3阶段的始点,以此类推。
模型的建立与求解
方法一:动态规划法
根据动态规划的正向思维法,从A点开始计算逐步移至E点
设表示第k个阶段的状态变量,表示第k个阶段的决策,表示第k个阶段到起点A的最短路
那么:,,
,
这其中
当时,;
时,;
,;
当时,;
时,;
当时,;
时,;
时,;
当时,;
综上,可得此问题的最短路为:,此最短路的长度为8
方法二:Dijkstra算法
I表示已标号的点的集合,J表示未标号点的集合,M表示始点标号终点未标号的边的集合,一次记A点到点分别为1,2,3……8,9,记点E为u点,表示i点到j点的最短路的长度,表示i点到j点的距离。
给起点A的标号为(0,s)
,;
;
所以:
那么:
给边中未标号的点标以(1,1)
(3),;
所以
那么:
给边中未标号的点标以(2,1)
(4),;
;
所以;
;
那么:;
给边中未标号的点标以(3,1);
给边中未标号的点标以(3,3);
(5),;
;
所以:;
;
;
;
那么:
给边中未标号的点标以(4,5)
(6),;
;
所以:;
那么;
给边中未标号的点标以(5,3);
给边中未标号的点标以(5,5);
(7),;
;
所以:
;
那么:;
给边中未标号的点标以(8,5);
给边中未标号的点标以(8,7);
综上,可以从标号中找到最短路为:,最短距离为8
方法三:结合求最小树的Kruskal算法和破圈运算产生的一种新型算法
算法步骤:
开始把边按权的大小从小到大排列并标号;权最小的边标为1号,权次小的标为2号,以此类推,将剩余的边分别标为3号、4号、....〔权相同的边标号相同〕记i=1;
选取i号边,观察从A到E点是否存在通路;
假设没有路,置i=i+1,转第一步;否那么,转第四步;
假设仅有一条路,停止。这条路即为所求;否那么,转第五步;
破除所有的圈,转第四步。
求解文中例题:
按照以上步骤,如下图:
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
11
1
1
1
1
1
2
2
2
3
3
3
3
1
1
1
1
1
2
2
2
3
3
说明:在圈中,去掉最长边;在圈中,去掉最长边;在圈中,去掉最长边。至此得到最短路为:,最短路程为8
结论
对于动态规划法:这
原创力文档


文档评论(0)