一种最短路径的生成方法及相关装置制造方法及图纸

技术编号:26793058 阅读:40 留言:0更新日期:2020-12-22 17:08
本申请公开了一种最短路径的生成方法及相关装置,该方法首先将边带多个非负权重值的最短路径生成问题简化为边带单个非负权重值的问题,然后根据增量筛选算法,利用有向图中每条边的其他非负权重值对K条候选路径依次进行筛选,以获取K条最终路径,实现了对边带多个非负权重值的问题的解决,且该方法通过增量筛选算法将边带单个非负权重值的最短路径问题还原为边带多个非负权重值的最短路径问题,这个过程中无需引入虚拟节点,避免了引入虚拟节点后图的规模庞大的问题,实现了降低时间复杂度,提高时效性的目的。

【技术实现步骤摘要】
一种最短路径的生成方法及相关装置
本申请涉及路径规划
,更具体地说,涉及一种最短路径的生成方法及相关装置。
技术介绍
最短路径算法是计算图中一个节点中其他所有节点的最短路径的算法,主要特点是以起点为中心向外层层扩展,直到扩展到终点为止。最短路径算法在交通运输、通信、机器人动作规划、计算分子生物学以及Huffman编码等领域都有着非常广泛的应用。以通信领域为例,当一个通信网络中包括多个网络设备时,每个网络设备均需以自身为根节点计算自身到其他网络设备的最短路径,从而生成最短路径优先树(ShortestPathFirstTree,SPFtree),在通信过程中以最短路径优先树为依据与其他网络设备通信,从而提升通信网络的通信效率。现有技术中的最短路径算法均只适用于图中的边带单个非负权重值的情形,为了解决图中的边带多个非负权重值的问题,可通过引入虚拟节点将一条边拆分成多条边,从而使得每条边只带单个权重值,进而利用现有的最短路径算法解决边带多个非负权重值的问题。但是这种方式的弊端在于引入虚拟节点后图的规模非常大,使得最短路径的计算过程的时间复杂度很高,往往不能满足时效性的要求。
技术实现思路
为解决上述技术问题,本申请提供了一种最短路径的生成方法及相关装置,以在解决边带多个非负权重值的问题的基础上,实现降低时间复杂度,提高时效性的目的。为实现上述技术目的,本申请实施例提供了如下技术方案:一种最短路径的生成方法,所述最短路径的生成方法包括:获取原始数据,所述原始数据包括多个有向边起点、多个有向边终点和所述有向边起点到所述有向边终点的非负权重值,其中,至少一个所述有向边起点到所述有向边终点的非负权重值为多个;根据所述原始数据构建有向图,所述有向图中每两个节点构成的边的权重值为这两个节点的非负权重值中最小的非负权重值;计算所述有向图中从起点到终点的前K条最短路径,并将计算获得的前K条最短路径作为候选路径放入第一结果列表中;对于所述有向图中具有多个非负权重值的边,根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径。可选的,所述根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径包括:令第二结果列表等于第一结果列表,令当前筛选路径j=1;计算增量指标上限,所述增量指标上限等于所述第二结果列表中第K条路径的长度减去所述第一结果列表中第j条候选路径的长度;判断所述增量指标上限是否小于或等于0,如果是,则将所述第二结果列表中的前K条路径作为K条所述最终路径输出;如果否,则将所述第一结果列表中的第j条候选路径包含的边的其他非负权重值以组合的方式构成新路径,计算所有新路径相对于所述第一结果列表中的第j条候选路径的增量,所述增量等于所述新路径的长度与所述第一结果列表中的第j条候选路径的长度的差值;将所有所述新路径相对于所述第一结果列表中的第j条候选路径的增量中大于所述增量指标上限的新路径抛弃,将所有所述新路径相对于所述第一结果列表中的第j条候选路径的增量中小于或等于所述增量指标上限的新路径,以升序的方式插入所述第二结果列表中,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径。可选的,所述根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径包括:令第二结果列表等于第一结果列表,令当前筛选路径j=1;计算增量指标上限,所述增量指标上限等于所述第二结果列表中第K条路径的长度减去所述第一结果列表中第j条候选路径的长度;判断所述增量指标上限是否小于或等于0,如果是,则将所述第二结果列表中的前K条路径作为K条所述最终路径输出;如果否,则将所述第一结果列表中的第j条候选路径包含的边的其他非负权重值以组合的方式构成新路径,将所有所述新路径放入待筛选集合中;计算所述待筛选集合中,第i条新路径相对于所述第一结果列表中的第j条候选路径的增量,所述增量等于所述新路径的长度与所述第一结果列表中的第j条候选路径的长度的差值;判断第i条新路径相对于所述第一结果列表中的第j条候选路径的增量是否小于所述增量指标上限,如果否,则将第i条新路径抛弃,在当第i条新路径为所述待筛选集合中的最后一条新路径时,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径;在当第i条新路径不是所述待筛选集合中的最后一条新路径时,令i=i+1,并返回判断第i条新路径相对于所述第一结果列表中的第j条候选路径的增量是否小于所述增量指标上限的步骤;如果是,则将第i条新路径以升序插入所述第二结果列表中,在当第i条新路径不是所述待筛选集合中的最后一条新路径时,更新所述增量指标上限,令i=i+1并返回计算所述待筛选集合中,第i条新路径相对于所述第一结果列表中的第j条候选路径的增量;在当第i条新路径为所述待筛选集合中的最后一条新路径时,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径。可选的,所述计算所述有向图中从起点到终点的前K条最短路径包括:使用Dijkstra算法计算所述有向图中前M条最短路径,M小于K,并将前M条最短路径放入所述第一路径集合中;取所述第一路径集合中第M条最短路径中除终点外的每个节点作为偏离节点,以预设条件为约束,计算每个所述偏离节点到所述终点的最短路径,将每个所述偏离节点到所述终点的最短路径与起点到所述偏离节点的路径拼接为备选路径放入待选集合中;从所述待选集合中选取路径最短的一条备选路径放入所述第一路径集合中,判断M+1是否大于或等于K,如果否,则令M=M+1,并返回取所述第一路径集合中第M条最短路径中除终点外的每个节点作为偏离节点的步骤,如果是,则将所述第一路径集合中的前K条备选路径作为所述有向图中从起点到终点的前K条最短路径;所述预设条件包括:所述偏离节点到所述终点的最短路径不通过第M条最短路径上从起点到偏离节点之间的任何节点;从偏离节点分出的边不与所述第一路径集合中的任何最短路径中从偏离节点分出的边相同。可选的,所述对于所述有向图中具有多个非负权重值的边,根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径之后还包括:将K条最短路径以预设格式输出。一种最短路径的生成系统,所述最短路径的生成系统包括:输入模块,用于获取原始数据,所述原始数据包括多个有向边起点、多个有向边终点和所述有向边起点到所述有向边终点的非负权重本文档来自技高网...

【技术保护点】
1.一种最短路径的生成方法,其特征在于,所述最短路径的生成方法包括:/n获取原始数据,所述原始数据包括多个有向边起点、多个有向边终点和所述有向边起点到所述有向边终点的非负权重值,其中,至少一个所述有向边起点到所述有向边终点的非负权重值为多个;/n根据所述原始数据构建有向图,所述有向图中每两个节点构成的边的权重值为这两个节点的非负权重值中最小的非负权重值;/n计算所述有向图中从起点到终点的前K条最短路径,并将计算获得的前K条最短路径作为候选路径放入第一结果列表中;/n对于所述有向图中具有多个非负权重值的边,根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径。/n

【技术特征摘要】
1.一种最短路径的生成方法,其特征在于,所述最短路径的生成方法包括:
获取原始数据,所述原始数据包括多个有向边起点、多个有向边终点和所述有向边起点到所述有向边终点的非负权重值,其中,至少一个所述有向边起点到所述有向边终点的非负权重值为多个;
根据所述原始数据构建有向图,所述有向图中每两个节点构成的边的权重值为这两个节点的非负权重值中最小的非负权重值;
计算所述有向图中从起点到终点的前K条最短路径,并将计算获得的前K条最短路径作为候选路径放入第一结果列表中;
对于所述有向图中具有多个非负权重值的边,根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径。


2.根据权利要求1所述的最短路径的生成方法,其特征在于,所述根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径包括:
令第二结果列表等于第一结果列表,令当前筛选路径j=1;
计算增量指标上限,所述增量指标上限等于所述第二结果列表中第K条路径的长度减去所述第一结果列表中第j条候选路径的长度;
判断所述增量指标上限是否小于或等于0,如果是,则将所述第二结果列表中的前K条路径作为K条所述最终路径输出;
如果否,则将所述第一结果列表中的第j条候选路径包含的边的其他非负权重值以组合的方式构成新路径,计算所有新路径相对于所述第一结果列表中的第j条候选路径的增量,所述增量等于所述新路径的长度与所述第一结果列表中的第j条候选路径的长度的差值;
将所有所述新路径相对于所述第一结果列表中的第j条候选路径的增量中大于所述增量指标上限的新路径抛弃,将所有所述新路径相对于所述第一结果列表中的第j条候选路径的增量中小于或等于所述增量指标上限的新路径,以升序的方式插入所述第二结果列表中,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径。


3.根据权利要求1所述的最短路径的生成方法,其特征在于,所述根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径包括:
令第二结果列表等于第一结果列表,令当前筛选路径j=1;
计算增量指标上限,所述增量指标上限等于所述第二结果列表中第K条路径的长度减去所述第一结果列表中第j条候选路径的长度;
判断所述增量指标上限是否小于或等于0,如果是,则将所述第二结果列表中的前K条路径作为K条所述最终路径输出;
如果否,则将所述第一结果列表中的第j条候选路径包含的边的其他非负权重值以组合的方式构成新路径,将所有所述新路径放入待筛选集合中;
计算所述待筛选集合中,第i条新路径相对于所述第一结果列表中的第j条候选路径的增量,所述增量等于所述新路径的长度与所述第一结果列表中的第j条候选路径的长度的差值;
判断第i条新路径相对于所述第一结果列表中的第j条候选路径的增量是否小于所述增量指标上限,如果否,则将第i条新路径抛弃,在当第i条新路径为所述待筛选集合中的最后一条新路径时,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径;在当第i条新路径不是所述待筛选集合中的最后一条新路径时,令i=i+1,并返回判断第i条新路径相对于所述第一结果列表中的第j条候选路径的增量是否小于所述增量指标上限的步骤;
如果是,则将第i条新路径以升序插入所述第二结果列表中,在当第i条新路径不是所述待筛选集合中的最后一条新路径时,更新所述增量指标上限,令i=i+1并返回计算所述待筛选集合中,第i条新路径相对于所述第一结果列表中的第j条候选路径的增量;在当第i条新路径为所述待筛选集合中的最后一条新路径时,令j=j+1并在j小于或等于K时返回计算增量指标上限的步骤,在j大于K时,将所述第二结果列表中的前K条路径作为K条所述最终路径。


4.根据权利要求1所述的最短路径的生成方法,其特征在于,所述计算所述有向图中从起点到终点的前K条最短路径包括:
使用Dijkstra算法计算所述有向图中前M条最短路径,M小于K,并将前M条最短路径放入所述第一路径集合中;
取所述第一路径集合中第M条最短路径中除终点外的每个节点作为偏离节点,以预设条件为约束,计算每个所述偏离节点到所述终点的最短路径,将每个所述偏离节点到所述终点的最短路径与起点到所述偏离节点的路径拼接为备选路径放入待选集合中;
从所述待选集合中选取路径最短的一条备选路径放入所述第一路径集合中,判断M+1是否大于或等于K,如果否,则令M=M+1,并返回取所述第一路径集合中第M条最短路径中除终点外的每个节点作为偏离节点的步骤,如果是,则将所述第一路径集合中的前K条备选路径作为所述有向图中从起点到终点的前K条最短路径;
所述预设条件包括:所述偏离节点到所述终点的最短路径不通过第M条最短路径上从起点到偏离节点之间的任何节点;从偏离节点分出的边不与所述第一路径集合中的任何最短路径中从偏离节点分出的边相同。


5.根据权利要求1所述的最短路径的生成方法,其特征在于,所述对于所述有向图中具有多个非负权重值的边,根据增量筛选算法,利用所述有向图中每两个节点构成的边的其他非负权重值对第一结果列表中的K条候选路径依次进行筛选,以获取K条最终路径之后还包括:
将K条最短路径以预设格式输出。


6.一种最短路径的生成系统,其特征在于,所述最短路径的生成系统包括:
输入模块,用于获取原始数据,所述原始数据包括多个有向边...

【专利技术属性】
技术研发人员:李友金忠孝
申请(专利权)人:上海汽车集团股份有限公司上海汽车工业集团总公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1