Dijkstra 计算两地间的最短距离
这里使用Dijkstra(戴克斯特拉)算法,该算法起始点实际计算出到任一点的距离,计算两城市间的距离实际是一个副产物,所有一下图为例来说明,该图为无向图,顶点间所标数字即为两点之间的距离。
问题:求点D到点A的距离。
初始状态:
集合S中 D(0):D到D的距离为0;
集合U中 A(∞):D不能直接到达A;B(∞) :D不能直接到达B;C(3):D直接到达C的距离为3;E(4):D直接到达E的距离为4;F(∞):D不能直接到达F;G(∞):D不能直接到达G。
第1步:由初始条件可以看出U集合中C到D的距离最小,故将C添加到集合S中,更新后,两集合关系如下:
D到C的最小距离为:3,D到C的路线为:
第2步:逐个判断集合S中元素到集合U中的距离,并将距离最小的点添加到集合S中
对A点 :
对B点:
对E点:
对F点:
对G点:
由上可以看出 距离最小为4,将E添加到集合S中,更新后的集合如下:
更新后,D到E的最短距离:4,D到E的最短路线为:
第3步,逐个判断集合S中元素到集合U中的距离,并将距离最小的点添加到集合S中
对A点:
对B点:
对F点:
对G点:
由上可以看出,距离最小为6,故将F点加入到S集合中,更新后S和U分别为
跟新后,D到F的最短距离为:6,最短路线为:
第4步:逐个判断集合S中元素到集合U中的距离,并将距离最小的点添加到集合S中
对A点:
对B点:
对G点:
由上可以看出,距离最小为12,故将G点加入到S集合中,更新后S和U分别为
更新后,D到G的距离最短:12,最短路线:
第5步:逐个判断集合S中元素到集合U中的距离,并将距离最小的点添加到集合S中
对A点:
对B点:
由上可以看出,或距离最小为13,故将G点加入到S集合中,更新后S和U分别为
更新后,D到B的最短路线为:13,D到B最短路线为
或
第6步:逐个判断集合S中元素到集合U中的距离,并将距离最小的点添加到集合S中
对A点(D到B的最短路线有2条,我们可以任选一条,这里选D→C→B)
由上可以看出, 距离最小为22,故将G点加入到S集合中,更新后S和U分别为
更新后,D到A的最短路线为:22,D到B最短路线为
Dijkstra 计算两地间的最短距离相关推荐
- java获取一定距离以内的经纬度值_java 根据经纬度计算两地间的距离
现在网站上都流行贴出地理坐标位置,可以看出精度纬度,如果再结合GPS, 就可以定位出用户所在地的经纬度,自然可以计算出大概距离,下面是一段小代码,根据经纬度坐标直接计算出两地间的距离package c ...
- 给定经纬度计算距离_根据经纬度计算两地间的距离
import java.util.HashMap; import java.util.Map; public class MapDistance { private static double EAR ...
- 欧几里得最短距离公式_推荐算法原理(二)欧几里得距离计算物品间相似度
在上篇文章中介绍了如何利用余弦定理计算两个物品间的相似度:KiKlaus:推荐算法原理(一)余弦定理计算物品间相似度zhuanlan.zhihu.com 这种计算方法虽然简单,但是在衡量空间两个向量 ...
- 根据经纬度计算两地距离
最近工作需要,网上搜索了下根据经纬度计算两地距离的方法,发现要么是几何法,画图.作一堆辅助线,然后证明推理,要么二话不说直接套公式.这篇文章介绍一种容易理解的方式来求这个距离. 0b00 思路 地球是 ...
- php地图距离计算,php百度地图计算两地现实距离
请自行到百度地图官网申请您的ak <!--前端获取手机经纬度的代码--> <!--<!DOCTYPE html>--> <!--<html lang=& ...
- 根据两个位置的经纬度,来计算两地的距离(单位为KM)
上代码 /*** 根据两个位置的经纬度,来计算两地的距离(单位为KM)* 参数为double类型* long1 位置1经度* lat1 位置1纬度* long2 位置2经度* lat2 位置2纬度*/ ...
- 根据地球上任意两点的经纬度计算两点间的距离
http://blog.chinaunix.net/u/6776/showart_694778.html 地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米, ...
- python计算两地之间的开车时间,保存到Excel中
文章目录 一.去[百度地图开发平台](https://lbsyun.baidu.com/apiconsole/key/create#/home)申请API的AK 二.代码 三.效果 四.生成可执行的e ...
- 1815. 计算两点间的距离
水题也要注意一点,确实简单,不过还是错了,错在格式化输出! 1815. 计算两点间的距离 总提交数量: 5934 通过数量: 1093 评价: 1.9/5.0(38 票) 012345 ...
最新文章
- jmeter提取多个变量的多个值_jmeter用一个正则提取器提取多个值的两种方法
- Hackerrank - The Grid Search
- Lesson 6.动态计算图与梯度下降入门
- Web MVC Rest 处理流程分析
- 公开课 | 如何轻松上手华为最新开源框架MindSpore?
- 【Pytorch神经网络理论篇】 14 过拟合问题的优化技巧(一):基本概念+正则化+数据增大
- Apollo 分布式配置中心 搭建篇
- 我的Android进阶之旅------解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist....
- mybatis-generator逆向工程设置不生成Example类
- 《HelloGitHub》第 13 期
- json字符生成Java实体类--用好bejson
- UI设计作品中经常会用到的设计技巧?|优漫动游
- iphone8引发的AR大事件
- RabbitMQ高可用--Quorum Queue(仲裁队列)的用法
- 分数的加法,有理数加法
- iOS 通过定位获取常驻后台
- Win10更新后连不上网,电脑win10系统更新后连不上网
- 前端HTTP、浏览器面试题
- QSPI Flash驱动代码分析 (QSPI控制器初始化)
- 华为服务器1u系列,1u服务器是什么意思
热门文章
- 单片机控制灯光亮度c语言程序,基于51单片机控制LED灯光亮度并报警
- 2台电脑一根网线传文件_Iphone 和PC如何共享文件
- 客制化键盘编程_客制化键盘劝退指南
- 485光纤转换器产品分类介绍
- 光纤模块与光纤收发器的区别
- 【渝粤教育】国家开放大学2018年秋季 0653-21T机电控制与可编程控制技术 参考试题
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑工程概预算10326k2
- 【渝粤题库】陕西师范大学202011 微观经济学 作业 (专升本、高起本)
- java 正则表达式 替换括号,Java正则表达式:如何替换方括号内的所有字符?
- catia钣金根据线段折弯_钣金折弯加工注意事项有哪些?钣金折弯要点介绍