欢迎来到 翰文编程!专业源码交易平台,海量精品源码任你挑选。
登录 免费注册 帮助中心 收藏本站
个人中心 我的订单
首页 > 行业资讯 > Java用Dijkstra算法实现地图两点的最短路径查询

Java用Dijkstra算法实现地图两点的最短路径查询

行业资讯 来源:翰文编程 源码设计 定制服务 发布日期:2013-09-22 点击率:1
地图上实现最短路径的查询,据我了解的,一般用Dijkstra算法和A*算法来实现。由于这是一个课程项目,时间比较急,而且自己不熟悉A*算法,所以参考网上的Dijkstra算法(http://blog.csdn.net/javaman_chen/article/details/8254309)的代码来实现了地图上任意两点的最短路径的查询。但该demo存在一个很严重的错误,缺了两行非常关键的代码……

  首先,来了解下Dijkstra算法:无向图的最短路径求解算法之——Dijkstra算法 http://www.cnblogs.com/navyifanr/admin/EditPosts.aspx?opt=1 。由此可以看出,Dijkstra算法的效率是很低的,它遍历的点很多,要以起始点为中心向外层层扩展,直到扩展到终点为止,所以数据量很少时不适合Dijkstra算法。处理该算法时,要特别注意在由一个点找到相邻该点最近点的时候,记得要将相邻的点的距离更新。

  Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里是采用第二种方式,也就是采用的贪心法的算法策略,大概过程如下:
  1.定义两个集合:open和close,open用于存储未遍历的节点,close用来存储已遍历的节点;
  2.初始阶段,将初始节点放入close,其他所有节点放入open;
  3.以初始节点为中心向外一层层遍历,获取离指定节点最近的子节点放入close并重新更新相邻点的距离,直至close包含所有子节点;

  此方法由一个点遍历了其他所有点,所以可以知道该点到其他所有点的距离,时间复杂度很高。那个demo是一个一个数据初始化的,我将它改为用数组存储,然后用for循环来初始化,也就是将它封装成我需要的数据接口,并没有很大的优化。

购买须知:请加客服微信咨询购买,本程序源码配有系统运行视频,请联系客服索要视频文件。
服务范围:定制各类计算机程序设计,vue、jsp、java 各类框架;开发工具 eclipse / myeclipse / idea / vs 等;wap、android、ssm、springboot、asp.net、php、python(爬虫、django、flask)、node.js、react、winform、uniapp 小程序等。
Q
客服 QQ
251836457
@
电子邮箱

需要源码或毕设帮助?

扫码添加客服微信,获取源码、演示、报价与一对一技术支持。

客服 顶部