版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Dijkstra 算法描述目录一、算法概述 2二、算法原理及计算 22.1 算法原理 22.2 计算过程 22.3 改进的算法( Dijkstra-like )分析 5三、源码分析 5四、接口调用 6、算法概述Dijkstra(迪杰斯特拉)算法是典型的单源最短路径计算算法,用于解决源点 到所有结点最短路径计算的问题,它采用了分治和贪心(动态规划的特殊形式) 的思想搜索全局最优解。本系统采用了主流、 开源的 JAVA 图论库 Jgrapht来解决源点到终点间所 有可能路径输出的问题,它的核心计算引擎采用了一种 Dijkstra-like 算法,由经 典的 Dijkstra (迪杰斯特拉)算法演化
2、和改进而来。、算法原理及计算2.1 算法原理Dijkstra算法思想为:设 G (V , E)是带权有向图, V 代表图中顶点集合, E代表图中含权重的边集合。 将全部顶点集合 V 分成两组, 第一组为已求出最短路 径的顶点集合,用 S表示(初始时 S中只有一个源点,以后每求得一条最短路径, 就将该路径的终点加入到集合 S 中);第二组为其余待确定最短路径的顶点集合, 用U表示。按最短路径长度的递增次序依次把 U 集合的顶点逐个加入到 S集合中, 约束条件是保持从源点 v到S中各顶点的最短路径长度不大于从源点 v到U 中任 何顶点的最短路径长度。算法的终止条件是集合 U 为空集,即集合 U 的
3、顶点全 部加入到集合 S 中。2.2 计算过程以图 1为例讨论 Dijkstra 算法的计算过程,即计算某源点到网络上其余各结 点的最短路径,设源点为,逐步搜索,每次找出一个结点到源点的最短路径, 直至完成所有结点的计算。42333262151图1 带权有向图记D(v) 为源点到某终点 v的距离,是源点到终点 v 某条路径的所有链路 长度之和。记 l (w, v)是源点 w到终点 v的距离。 Dijkstra 算法归纳如下:(1) 初始化,令 S是已求出最短路径的顶点集合, S,U 是其余未确定最短路径的顶点集合, U ,可写出:D(v)l(1,v)(1-1)公式 1-1中, l (1,v)是
4、源点与终点 v的直连路径长度,而 代表源点与终 点 v 不相连 , 初始化结果如表 1 所示;(2) 遍历集合 U 中的所有结点 v并计算 min D(v),D(w) l(w,v) 。所有结点 中寻找一个结点 w ,用最小值 min D (v), D (w) l(w,v) 去更新 D(v) 值,并将其从 集合U 中剔除并加入到集合 S中。(3) 重复步骤( 2),直至集合 U 为空集。表1 针对图 1的最短路径计算过程步骤SUD(2)D(3)D(4)D(5)D(6)初始化241124Add242231Add43Add312442Add12452312Add表 1 是针对图 1 的详细计算步骤的
5、中间结果。具体计算描述如下: 初始化步骤:由于初始选择了源点,因此集合 S 只是结点。观察图 1, 源点到结点、的直连路径长度分别为 2,4 和 1,到结点、不存在直连边因而为 。根据计算结果,集合 U所有结点 D( w)的最小值为 D(4) ,因而将结点从集合 U 中剔除并将其加入到集合 S 中 步骤 1:针对结点, v 2,w 4 ( v是遍历集合 U的某结点, w是集合 S新加入结点),D(v) D(2) 2,而D(w) l(w,v) D(4) l(4,2) 1 2 3 D(2) ,因而源点到结点的最小距离 min D(v),D(w) l(w,v) 为 2;针对结点, v 3,w 4 (
6、 v是遍历集合 U 的某结点, w是集合 S新加入结 点),D(v) D(3) 4,而 D(w) l(w,v) D(4) l(4,3) 1 D(3) ,因而源 点到结点的最小距离 min D(v),D(w) l(w,v) 为 4;针对结点,是集合 S 新加入结点,标记为 Add;针对结点, v 5,w 4 ( v是遍历集合 U 的某结点, w是集合 S新加入结 点), D(v) D(5) ,而 D(w) l(w,v) D(4) l(4,5) 1 1 2 D(5) ,因而源 点到结点的最小距离 min D(v),D(w) l(w,v) 为 2;针对结点, v 6,w 4 ( v是遍历集合 U 的
7、某结点, w是集合 S新加入结点), D(v) D(6) ,而 D(w) l(w,v) D(4) l(4,6) 1 3 4 D(6) ,因而源 点到结点的最小距离 min D(v),D(w) l(w,v) 为 4其余步骤同理所有步骤演算完毕即可得出结点 1 的最短路径路由信息,如图 2 所示步骤1步骤 2步骤 3结点1的路由表目的结点下一跳距离222343441542644232125步骤 5步骤 4图 2 用 Dijkstra 算法得出结点 1的最短路径路由表通过上述 Dijkstra 算法的演算步骤可发现,如需在全局中搜索最短路径的全 局最优解, 每个步骤必须针对其余所有结点进行一次距离的
8、计算, 以搜索出下一 步可能存在的路径。因此, Dijkstra 算法的计算过程实际上提供了一个全局搜索 所有可能路径的思路。换句话说, Dijkstra 算法想要寻找全局最短路径,首先务 必搜索出所有可能的路径。2.3 改进的算法( Dijkstra-like )分析开源的 JAVA 图论库 Jgrapht通过 Dijkstra-like 算法搜索全局所有可能路 径的计算方法实际上是基于经典 Dijkstra 算法的完整计算流程来实现的。但是由 于 Dijkstr 算法先天存在明显的缺陷, Dijkstra-like 算法对其进行了如下改进以满 足时间复杂性、空间复杂性等计算要求:(1)Di
9、jkstra 算法在通过距离计算寻找局部最优路径过程中,将所有可能路 径对比后,若发现该路径不是局部最优解则会将其丢弃。因此, Dijkstra-like 算 法在搜索所有可能路径则需要将可能结果记录下来并参与到下一步骤的计算;(2)Dijkstr 算法处理过程中,在搜索所有可能路径时需要遍历所有结点进 行一次距离计算, 哪怕是没有直连关系且距离为 的结点也参与计算, 对于网络 拓朴图庞大的应用场景,这将产生大量的计算资源浪费。因此, Dijkstra-like 算 法每次针对结点计算时, 首先获取该结点相连的边, 只计算有直连关系的结点从 而过滤掉距离为 的一类结点,大大节约计算资源。、源码
10、分析public ListGraphPath getAllPaths(SetsourceVertices,SettargetVertices,boolean simplePathsOnly ,Integer maxPathLength )/ Decorate the edges with the minimum path lengths through them Map edgeMinDistancesFromTargets = edgeMinDistancesBackwards( targetVertices , maxPathLength );/ Generate all the path
11、sListGraphPath allPaths = generatePaths(sourceVertices ,targetVertices , simplePathsOnly , maxPathLength , edgeMinDistancesFromTargets );return allPaths ; edgeMinDistancesBackwards()函数传入终点和最大搜索路径长度,从终点开 始逐步往前搜索生成网络拓朴图中所有边距离该终点的链路长度, 直至拓朴图搜 索完毕或者达到最大搜索长度时结束,准备进行下一步骤计算。generatePaths(函) 数传入源点、 终点和最大路径长度等信息,基于上一步骤的 搜索结果从源点开始逐步往后搜索到终点, 直至找到该终点或者达到最大路径长 度时结束。搜索过程中保存每一条存在的路径并将最终结果返回出来。四、接口调用ListGraphPath getAllPaths(Set sourceVertices, Set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售业财务经理招聘面试全解析
- 快递行业调度员岗位面试解析
- 2026 主流网红推广平台评测榜单
- 护理服务中的技术创新与应用
- 护理交接班报告案例分析集
- 护理课件评估的量化与质性方法
- 危重患者血糖监测与管理
- 医护护理伦理与实践
- 护理人员职业发展规划
- 税务稽查2026年鉴定合同协议
- 2026年及未来5年市场数据中国旅游食品行业发展运行现状及发展趋势预测报告
- 2026年商业银行支行行长竞聘管理能力面试问题含答案
- 2025年湖南中烟考试笔试及答案
- 主题一 学生实验 化学实验基本操作(课件)-【中职专用】高中化学同步课堂(高教版2023·农林牧渔类)
- 2026年度交通运输部所属事业单位第三批统一公开招聘参考考试试题及答案解析
- 雨课堂学堂在线学堂云商务英语翻译(Business English Translation Interpretation)西北工业大学单元测试考核答案
- 2025年人工智能数据中心建设项目可行性研究报告
- 分众化健康传播:不同人群的科普策略
- 高值耗材销售管理制度(3篇)
- 2025医疗器械验证和确认管理制度
- 《交易心理分析》中文
评论
0/150
提交评论