- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
最短路径:地图软件是如何计算出最优出⾏路径的?
本⽂是学习算法的笔记,《数结构与算法之美》,极客时间的课程
今天,从地图软件的路径规划问题讲起,带你看看常⽤的最短路径算法(ShortestPathAlgorithm)。
像Google地图。百度地图、⾼德地图这样的地图软件,应该会经常使⽤吧?如果从家开到公司,你只需要输⼊起始地址、结束地址,地图
就会给你规划⼀条最优路线。这⾥的最优,有很多种定义,⽐如最短路线、最少⽤时路线、最少红灯路线等等。作为⼀名软件开发⼯程师,
你是否想过,地图软件的最优路线是如何计算出来的吗?底层依赖了什么算法?
算法解析
我们刚提到的最优问题包含三个:最短路线、最少⽤时和最少红灯。我们先解决最简单的,最短路线。
解决软件开发中的实际问题,最重要的⼀点是建模,也就是将复杂的场景抽象成具体的数结构。针对这个问题,我们该如何抽象成数结
构呢?
我们之前也提到过,图这咱结构的表达能⼒很强,显然,把地图抽象成图最合适不过了。我们把每个岔路⼝看作⼀个顶点,岔路⼝与岔路⼝
之间的路看作⼀条边,路的长度就是边的权重。如果路是单⾏道,我们就在两个顶点之间画⼀条有向边;如果路是双⾏道,我们就在两顶点
之间画两条⽅向不同的边。这样,整个地图就被抽象成⼀个有向有权图。
具体的代码实现,我放在下⾯了。于是,我们要求解的问题就转化为,在⼀个有向有权图中,求两个顶点的最短路径。
publicclassGraph{//有向权图的邻接表表⽰
privateLinkedListEdgeadj[];//邻接表
privateintv;//顶点个数
publicGraph(intv){
thisv=v;
thisadj=newLinkedList[v];
for(inti=0;iv;i++){
thisadj[i]=newLinkedList();
}
}
publicvoidaddEdge(ints,intt,intw){//添加⼀条边
thisadj[s]add(newEdge(s,t,w));
}
privateclassEdge{
publicintsid;//边的起始顶点编号
publicinttid;//边的终⽌顶点编号
publicintw;//权重
publicEdge(intsid,inttid,intw){
thissid=sid;
thistid=tid;
thisw=w;
}
}
privateclassVertex{
publicintid;//顶点编号ID
publicintdist;//从起始顶点到这个顶点的距离
publicVertex(intid,intdist){
thisid=id;
thisdist=dist;
}
}
}
想要解决这个问题,有⼀个⾮常经典的算法,最短路径算法,更加准确地说,是单源最短路径算法(⼀个顶点到⼀个顶点)。提到最短路径
算法,最出名的莫过于Dijkstra算法了。所以,我们现在来看,Dijkstra算法是怎么⼯作的。咱们直接看代码。
//因为java提供的优先队列,没有暴露更新数的接⼝,所以我们需要重新实现⼀个
privateclassPriorityQueue{//根vertex,dist构建⼩顶堆
您可能关注的文档
- 房屋保全鉴定实施方案.docx
- 路由器与交换机配置与管理.docx
- 土木工程施工期末试卷及答案2套.docx
- 高考病句真题练习带答案.doc
- 丁忧是什么完整版本.docx
- 07ALC墙板施工方案-模板.docx
- 康复评定技术题库.docx
- 《电力建设施工质量验收及评价规程》第4部分-热工仪表及控制装置.doc
- 最新四年级下册四则运算-含有中括号的计算题.doc
- 建筑工人实名制管理承诺.docx
- 苏教版8年级上册数学全册教学课件(2021年10月修订).pptx
- 比师大版数学4年级下册全册教学课件.pptx
- 冀教版5年级上册数学全册教学课件.pptx
- 办公室普通党员2024年组织生活会个人对照检查发言材料供参考.docx
- 领导班子成员2025年组织生活会“四个带头”对照检查材料范文.docx
- 2024年度专题组织生活会个人“四个带头”对照检查材料范文.docx
- 党支部领导班子2025年民主生活会“四个带头”个人对照检查材料范文.docx
- 2024年抓基层党建工作述职报告参考范文.docx
- 2024年度民主生活会征求意见情况的报告范文2篇.docx
- 普通党员2024年组织生活会个人“四个带头”对照检查发言材料2篇.docx
文档评论(0)