[发明专利]改进迪杰斯特拉算法的两点间最短路径搜索方法有效
申请号: | 201611051320.5 | 申请日: | 2016-11-24 |
公开(公告)号: | CN107276896B | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 和敬涵;王紫琪;张大海;李文立;丁凡凡;张秋芳;张义志;任欣玉 | 申请(专利权)人: | 北京交通大学 |
主分类号: | H04L12/721 | 分类号: | H04L12/721 |
代理公司: | 北京鸿元知识产权代理有限公司 11327 | 代理人: | 陈英俊;杨桦 |
地址: | 100044*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 改进 迪杰斯特拉 算法 两点 间最短 路径 搜索 方法 | ||
本发明提供了一种改进迪杰斯特拉算法的两点间最短路径搜索方法,包括有以下步骤:1)引入了图论思想中的邻接矩阵,利用邻接矩阵对搜索过程进行辅助,即每次确定了某一顶点到起始顶点的最短距离后,都查找邻接矩阵中,该顶点所对应的行中元素为1的列;2)只对步骤1)元素为1的列所对应的顶点距离值进行计算分析,有效降低搜索过程的计算量。本发明基于邻接矩阵进行路径分析避免了不相连节点的无用计算过程,有效减小计算量,同时保证了搜索路径最短。
技术领域
本发明涉及电力系统网络、道路交通、通信网络等领域,具体地说,涉及一种改进迪杰斯特拉算法的两点间最短路径搜索方法。
背景技术
求取任意两点间的最短路径,是所有求解路径问题的基础,问题的目标是找到图中任意两个顶点之间的最短路径。它在电力系统网络、道路交通、通信网络寻优等领域具有广泛的用途。
对于两点间的最短路径计算问题,国际上采用较多的方法主要是Dijkstra算法(迪杰斯特拉算法),此算法可以找出网络中从一点到其余各点间的最短路径。Dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
1、Dijkstra算法思想:
按路径长度递增次序产生算法:
把顶点集合V分成两组:
(1)S:已求出的顶点的集合(初始时只含有源点V0)
(2)V-S=T:尚未确定的顶点集合
将T中顶点按递增的次序加入到S中,保证:
(1)从源点V0到S中其他各顶点的长度都不大于从V0到T中任何顶点的最短路径长度
(2)每个顶点对应一个距离值
S中顶点:从V0到此顶点的长度
T中顶点:从V0到此顶点的只包括S中顶点作中间顶点的最短路径长度
依据:可以证明V0到T中顶点Vk的,或是从V0到Vk的直接路径的权值;或是从V0经S中顶点到Vk的路径权值之和
2、算法步骤如下(以搜索V0到V1最短路径为例):
建立拓扑结构图G={V,E}
(1)初始时令S={V0},T=V-S={其余顶点},T中顶点对应的距离值
若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值
若不存在<V0,Vi>,d(V0,Vi)为∞
(2)从T中选取一个与S中顶点有关联边且权值最小的顶点W,加入到S中
(3)对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值缩短,则修改此距离值
重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止。此时V0到V1距离即两个节点间最短距离。搜索过程,距离值变化时历经的节点及路径,即为两点间最短路径。
现有Dijkstra算法每次将顶点放入S中时候,搜索都需要对T中剩余的全部节点进行分析处理,计算量大。
发明内容
本发明旨在克服现有迪杰斯特拉算法的不足,提供一种改进迪杰斯特拉算法的两点间最短路径搜索方法,基于邻接矩阵进行路径分析避免了不相连节点的无用计算过程,有效减小计算量同时保证了搜索路径最短,既可以准确确定最短路径及距离,也能提高运算速度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京交通大学,未经北京交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611051320.5/2.html,转载请声明来源钻瓜专利网。