掌桥专利:专业的专利平台
掌桥专利
首页

基于双向Dijkstra的城市路网K条最短路径的获取方法

文献发布时间:2023-06-19 13:45:04


基于双向Dijkstra的城市路网K条最短路径的获取方法

技术领域

本发明属于车载导航路径优化领域,具体的说是一种基于双向Dijkstra的城市路网K条最短路径的获取方法。

背景技术

随着城市道路网规模的不断扩大,一对起讫点之间的旅程选择可以有多条不同路径,并且随着当前导航用户的使用量增大,以及导航效果与实时路况的信息时效性息息相关,人们对于算法的要求越来越高。常用的最短路算法在大规模城市道路网中使用,尤其是起讫点距离较远时,计算所涉及的范围很广,耗时和资源占用相应增大,这种用资源数量换取效率质量的方法是普遍的应对方案。

在解决K最短路问题上,不同学者设计了不同的算法,通过“重构网络”或者“删边法”等等,然而这些方法使得计算工作量将会明显增大,不适用于实时性导航的理念。

在保证求解效率和最优路径质量的基础上,提供K条最短路选择,是当今导航用户的现实需求之一。有学者提出将双向搜索应用在k-shortestpath问题上的算法,然而仍具有潜在不足之处:完成整个算法流程得到的最终结果并不能保证具有全局最短的性质,并且算法流程不能使得路径长度依次按照从短至长的顺序计算得出结果,需要进行已获得路径的排序。

发明内容

本发明是为了解决上述现有技术存在的不足之处,提出一种基于双向Dijkstra的城市路网K条最短路径的获取方法,以期能在有效提升大规模路网导航规划的计算效率的同时,满足用户的多路径导航需求。

本发明为达到上述发明目的,采用如下技术方案:

本发明一种基于双向Dijkstra的城市路网K条最短路径的获取方法的特点是按如下步骤进行:

步骤1:定义参数并初始化:

获取实时道路网络数据并得到城市路网图G=(V,A),V表示交叉口集合,且V={v

定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;

定义当前搜索次数为t,并定义D

定义集合

定义双向搜索过程中叶子交汇交叉口节点集

定义存储路径树结构中新增的一个叶子交叉口节点v

确定所需最短路径条数为K,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为

初始化t=1;并将起点交叉口v

步骤2:找出D

若根交叉口节点为起点交叉口v

若根交叉口节点为终点交叉口v

步骤2.1:判断每个邻接交叉口节点是否符合要求;

如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口v

如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口v

如果寻找的路径不允许包含环路,则先将邻接交叉口节点v

步骤2.2:当根交叉口节点为起点交叉口v

步骤2.3:将邻接交叉口节点记为v

当找完前驱交叉口节点v

当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;

步骤2.4:将邻接交叉口节点记为v

当找完前驱交叉口节点v

当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;

步骤3:运算

步骤4:计算第t次双向搜索的最短路判断条件

步骤5:取集合P中所有交汇交叉口节点对的路径长度

步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合

与现有技术相比,本发明的有益效果在于:

1、本发明能在不改变道路网络结构以及不通过枚举方法的基础上引入双向搜索算法,利用双向搜索的思想获取城市路网任意起讫点间的K条最短路,二者巧妙结合使算法能够高效处理大规模路网图,节省了资源的同时保证了效率,避免了不必要的时间损耗,为大型路网计算繁杂的难题提供获取K条最短路的优化方法,实质性地提高了计算效率和质量,能够缓解导航规划的计算负担,给予导航使用者更多元的选择,满足了用户现实需求。

2、常用的最短路算法有Dijkstra,因单向搜索的本质特性,在应对复杂大型图时的计算效率不高,在单向搜索的基础上求解k最短路问题往往需要“重构网络”,这将会使得效率急剧降低。本发明考虑分别从起点和终点出发进行双向交替搜索,以效率更高的双向搜索为基础寻找新的k最短路求解优化方法,为解决k-shortestpath问题提供了新的解决方案。

3、本发明在获取K条最短路的方法中,没有选择改变道路网络结构,而是巧妙借用双向搜索中的交汇成路的思想,以及路径树中临时最小值

4、本发明分别从起点和终点出发进行双向交替搜索,由于该双向搜索算法的特性,可以同时扩展符合条件的叶子交叉口节点,所以本发明为多线程条件下的并行化计算提供了可能,为后续的城市路网导航规划工作中并行双向搜索奠定基础,并且便于与并行图划分技术相配合,为规划效率提速。

5、本发明在过程中可以根据使用者的要求,可以分别求解允许存在环路或不允许存在环路的k最短路径的情况,给予出行者更多行程选择。

附图说明

图1为本发明的流程图;

图2为本发明简单城市路网图;

图3为本发明初始化的路径树结构;

图4为本发明第t=2次探索得到的路径树结构;

图5为本发明第t=4次探索时处理交汇交叉口节点对以及对应路径长度信息的示意图;

图6为本发明第t=9次搜索时同时获得多条最短路的示意图;

图7为本发明的K条最短路获取结果图。

具体实施方式

本实施例中,从双向搜索算法求解K条最短路的想法出发,提出一种基于双向Dijkstra的城市路网K条最短路径的获取方法,是在导航规划的K最短路问题中加入双向Dijkstra搜索方法来处理,具体流程如图1所示,按如下步骤进行:

步骤1:定义参数并初始化:

获取实时道路网络数据并得到城市路网图G=(V,A),以图2为简易路网图为例,V表示交叉口集合,且V={v

定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;

定义当前搜索次数为t,并定义D

定义集合

定义双向搜索过程中叶子交汇交叉口节点集

定义存储路径树结构中新增的一个叶子交叉口节点v

确定所需最短路径条数为K,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为

初始化t=1;并将起点交叉口v

步骤2:找出D

若根交叉口节点为起点交叉口v

若根交叉口节点为终点交叉口v

步骤2.1:判断每个邻接交叉口节点是否符合要求,本算例以允许包含环路的情况顺序进行;

如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口v

如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口v

如果寻找的路径不允许包含环路,则先将邻接交叉口节点v

步骤2.2:当根交叉口节点为起点交叉口v

步骤2.3:承接上方步骤2的流程,将会进入步骤2.3,以本步骤中的扩展规则将会得到第t=2次搜索的路径树,新扩展出的叶子交叉口节点的连边用粗黑边表示,见图4。将邻接交叉口节点记为v

当找完前驱交叉口节点v

当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;

步骤2.4:将邻接交叉口节点记为v

当找完前驱交叉口节点v

当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;

步骤3:运算

步骤4:计算第t次双向搜索的最短路判断条件

步骤5:取集合P中所有交汇交叉口节点对的路径长度

步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合

技术分类

06120113790731