动态规划-最短路径问题
4页1、最短路径问题下图给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连 线上的数值代表道路长度。ClBl6C2E38B2D3C43求城市who与城市E的最短距离找到目标城市初始化最短路径为最大S 未访问置访问标志累加城市E至城市Who的路径长度 回溯后,恢复城市i未访问状态 如果最短则记下返回最短路径长度 计算最短路径长度现在,我们想从城市a到达城市E。怎样走才能使得路径最短,最短路径的长度是多少?设DiS x为城市x到城市E的最短路径长度(x表示任意一个城市);mapi, j表示i, j两个城市间的距离,若mapi, j=0,则两个城市不通; 我们可以使用回溯法来计算DiS x: varS:未访问的城市集合;function search(whox): integer;beginif Who = E Then SearchOElse beginmin maxi nt;for i 取遍所有城市 Do if (mapWho, i0有路) and (i then beginS-Si;jmapWho, i+ search(i); S-Si;if jVmin Then min
2、-j; end; thensearch-min;End; elseEnd; searchbeginS-除E外的所有城市;Disa -search(a);输出 Disa;endmain这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城市都 要访问,所以时间复杂度为O (n!),这是一个“指数级”的算法。那么,还有没有效率更 高的解题方法呢?首先,我们来观察上述算法。在求bl到E的最短路径的时候,先求出从C2到E的最短路 径;而在求从b2刭E的最短路径的时候,又求了一遍从C2刭E的最短路径。也就是说,从C2 到E的最短路径求了两遍。同样可以发现,在求从Cl、C2刭E的最短路径的过程中,从Dl到E 的最短路径也被求了两遍。而在整个程序中,从Dl到E的最短路径被求了四遍,这是多么大 的一个浪费啊!如果在求解的过程中,同时将求得的最短路径的距离“记录在案”,以便将 来随时调用,则可以避免这种重复计算。至此,一个新的思路产生了,即由后往前依次推出每个Dis值,直到推出Disa为止。问题是,究竟什么是“由后往前”呢?所谓前后关系是指对于任意一对城市i和j来说, 如果满足“或者城市
《动态规划-最短路径问题》由会员汽***分享,可在线阅读,更多相关《动态规划-最短路径问题》请在金锄头文库上搜索。
园长总结.doc
广州市2020年(春秋版)数学四年级上册第五单元《平行四边形和梯形》单元测试卷B卷
大学物理(下)综合复习资料
兰州大学21秋《数据库原理》与应用在线作业二答案参考37
精馏实验报告
工程竣工资料的审查
高级中学考试理综全国2卷试题和答案解析详细讲解试题和答案解析分开
Protel应用实践课程设计数字钟
东北师范大学21春《创造心理学》在线作业三满分答案71
毕业大学生的实习报告结尾2021
临床医师答题卡
东财21春《建筑力学B》在线作业二满分答案_4
襄阳市物流业与制造业深度融合项目可行性研究报告
施工管理工作报告
福建省交通运输综合保障服务中心公开招聘劳务派遣人员2人模拟试卷【附答案解析】(3)
无功补偿装置讲义
全日制普通高级中学物理教学大纲设计试验修订版
销售经理年度工作安排15篇
2023年辽宁省营口市西市区滨海街道白庙子社区工作人员考试模拟试题及答案
综合性学习“轻叩诗歌的大门”活动总结
2023-07-01 19页
2023-08-07 5页
2023-10-21 10页
2022-11-26 6页
2023-04-20 4页
2023-12-29 55页
2023-07-12 53页
2023-10-18 106页
2024-02-05 4页
2022-08-14 5页