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

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

Info

Publication number
CN113808424A
CN113808424A CN202111140784.4A CN202111140784A CN113808424A CN 113808424 A CN113808424 A CN 113808424A CN 202111140784 A CN202111140784 A CN 202111140784A CN 113808424 A CN113808424 A CN 113808424A
Authority
CN
China
Prior art keywords
intersection
node
nodes
leaf
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111140784.4A
Other languages
English (en)
Other versions
CN113808424B (zh
Inventor
丁建勋
颜江楠
樊哲延
殷慧娟
黄林煊
曾嘉涵
查菲菲
徐小明
龙建成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei University of Technology
Original Assignee
Hefei University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hefei University of Technology filed Critical Hefei University of Technology
Priority to CN202111140784.4A priority Critical patent/CN113808424B/zh
Publication of CN113808424A publication Critical patent/CN113808424A/zh
Application granted granted Critical
Publication of CN113808424B publication Critical patent/CN113808424B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/09Arrangements for giving variable traffic instructions
    • G08G1/0962Arrangements for giving variable traffic instructions having an indicator mounted inside the vehicle, e.g. giving voice messages
    • G08G1/0968Systems involving transmission of navigation instructions to the vehicle
    • G08G1/096805Systems involving transmission of navigation instructions to the vehicle where the transmitted instructions are used to compute a route
    • GPHYSICS
    • G08SIGNALLING
    • G08GTRAFFIC CONTROL SYSTEMS
    • G08G1/00Traffic control systems for road vehicles
    • G08G1/09Arrangements for giving variable traffic instructions
    • G08G1/0962Arrangements for giving variable traffic instructions having an indicator mounted inside the vehicle, e.g. giving voice messages
    • G08G1/0968Systems involving transmission of navigation instructions to the vehicle
    • G08G1/096833Systems involving transmission of navigation instructions to the vehicle where different aspects are considered when computing the route
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Abstract

本发明公开了一种基于双向Dijkstra的城市路网K条最短路径的获取方法,包括:1.获取实时城市道路路网图;2.使用Df,t、Db,t记录从前向和后向搜索的各叶子交叉口节点,
Figure DDA0003283833160000011
寻找可扩展节点,然后通过
Figure DDA0003283833160000012
构成交汇交叉口点对存入集合P;3.找出Df,t、Db,t中途径距离最小的交叉口节点,若找出的节点在前后向中都存在,则随机选择一个方向,扩展出其邻接节点;4.扩展后的节点将加入Df,t、Db,t,然后双向交汇的节点加入集合P;5.计算
Figure DDA0003283833160000013
选出集合P中路径长度小于等于
Figure DDA0003283833160000014
的点对回溯成路径作为第k条最短路。本发明能在有效提升大规模路网导航规划的计算效率的同时,满足用户的多路径导航的现实需求。

Description

基于双向Dijkstra的城市路网K条最短路径的获取方法
技术领域
本发明属于车载导航路径优化领域,具体的说是一种基于双向Dijkstra的城市路网K条最短路径的获取方法。
背景技术
随着城市道路网规模的不断扩大,一对起讫点之间的旅程选择可以有多条不同路径,并且随着当前导航用户的使用量增大,以及导航效果与实时路况的信息时效性息息相关,人们对于算法的要求越来越高。常用的最短路算法在大规模城市道路网中使用,尤其是起讫点距离较远时,计算所涉及的范围很广,耗时和资源占用相应增大,这种用资源数量换取效率质量的方法是普遍的应对方案。
在解决K最短路问题上,不同学者设计了不同的算法,通过“重构网络”或者“删边法”等等,然而这些方法使得计算工作量将会明显增大,不适用于实时性导航的理念。
在保证求解效率和最优路径质量的基础上,提供K条最短路选择,是当今导航用户的现实需求之一。有学者提出将双向搜索应用在k-shortestpath问题上的算法,然而仍具有潜在不足之处:完成整个算法流程得到的最终结果并不能保证具有全局最短的性质,并且算法流程不能使得路径长度依次按照从短至长的顺序计算得出结果,需要进行已获得路径的排序。
发明内容
本发明是为了解决上述现有技术存在的不足之处,提出一种基于双向Dijkstra的城市路网K条最短路径的获取方法,以期能在有效提升大规模路网导航规划的计算效率的同时,满足用户的多路径导航需求。
本发明为达到上述发明目的,采用如下技术方案:
本发明一种基于双向Dijkstra的城市路网K条最短路径的获取方法的特点是按如下步骤进行:
步骤1:定义参数并初始化:
获取实时道路网络数据并得到城市路网图G=(V,A),V表示交叉口集合,且V={v1,v2,v3,...,vq,...,vQ},设城市路网图G中需要规划的起点交叉口为vs∈V,终点交叉口为vt∈V,vq表示第q个交叉口,且vq=(dq,vq,pre,vq,root),其中,vq,root表示第q个交叉口vq的所在路径的根交叉口节点,vq,root∈{vs,vt},dq表示从根交叉口节点vq,root到达第q个交叉口vq的途经距离,vq,pre表示第q个交叉口vq的前驱交叉口节点,vq,pre∈V,q=1,2,3...Q,Q表示交叉口的总数,A表示交叉口之间的有向路段集合,且A={aij=(vi,vj)|i,j=1,2,...Q},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的路段,令ωi,j为路段(vi,vj)的权值;
定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;
定义当前搜索次数为t,并定义Df,t、Db,t分别为用于记录当前第t次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合;
定义集合
Figure BDA0003283833140000021
用于记录所有叶子交叉口节点中离自身的根节点距离值最小所对应的叶子交叉口节点;
定义双向搜索过程中叶子交汇交叉口节点集
Figure BDA0003283833140000022
用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集
Figure BDA0003283833140000023
中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
确定所需最短路径条数为K,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为
Figure BDA0003283833140000024
初始化起点交叉口节点
Figure BDA0003283833140000025
终点交叉口节点
Figure BDA0003283833140000026
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合
Figure BDA0003283833140000027
再随机选择集合
Figure BDA0003283833140000028
中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合
Figure BDA0003283833140000029
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure BDA00032838331400000210
中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure BDA00032838331400000211
中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点vmin的一个邻接交叉口节点为vj,转步骤2.1;
步骤2.1:判断每个邻接交叉口节点是否符合要求;
如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口vs,则转步骤2.3;
如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口vt,则转步骤2.4;
如果寻找的路径不允许包含环路,则先将邻接交叉口节点vj的前驱交叉口节点vmin加入列表R(vj)中,然后从前驱交叉口节点vmin开始向根交叉口节点进行回溯,且每回溯一个前驱交叉口节点就加入列表R(vj)中,若R(vj)中存在与邻接交叉口节点vj相同的前驱交叉口节点,则表示vj的引入使得环路存在,直接将邻接交叉口节点vj舍弃,继续判断下一个邻接交叉口节点,否则,表示无环路,并执行步骤2.2;
步骤2.2:当根交叉口节点为起点交叉口vs,则转步骤2.3;当根交叉口节点为终点交叉口vt,则转步骤2.4;
步骤2.3:将邻接交叉口节点记为vj=(dvminmin,j,vmin,vs),然后更新集合Df,t+1=Df,t∪{vj};其中,ωmin,j表示前驱交叉口节点vmin到其邻接交叉口节点vj的路段权值,dvmin表示前驱交叉口节点vmin到其根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Df,t中将相应的前驱交叉口节点vmin删除,更新Df,t+1=Df,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤2.4:将邻接交叉口节点记为vj=(dminj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};其中,ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,
Figure BDA0003283833140000034
表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算
Figure BDA0003283833140000031
Figure BDA0003283833140000032
即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点vi=(di,vi,pre,vs)和后向搜索出的叶子交叉口节点vi′=(di′,vi,pre,vt)组成交汇交叉口点对(vi,vi′)并加入集合P,且(vi,vi′)路径长度di,len=di+di′,并转步骤4;若
Figure BDA0003283833140000033
即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件
Figure BDA0003283833140000041
其中,
Figure BDA0003283833140000042
表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即
Figure BDA0003283833140000043
Figure BDA0003283833140000044
表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
Figure BDA0003283833140000045
步骤5:取集合P中所有交汇交叉口节点对的路径长度
Figure BDA0003283833140000046
的点对加入集合
Figure BDA0003283833140000047
中,然后将集合P中点对的路径长度di,len从小到大进行排序,并分别作为第k+1条至第k+n条最短路,其中,n=集合
Figure BDA0003283833140000048
的长度
Figure BDA0003283833140000049
将集合
Figure BDA00032838331400000410
排序后的路径长度di,len依次赋值给
Figure BDA00032838331400000411
Figure BDA00032838331400000412
并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合
Figure BDA00032838331400000413
中的交汇交叉口点对,从而更新集合P,更新k为k+n;转步骤6;若找不到
Figure BDA00032838331400000414
的点对,则返回步骤2顺序执行;
步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合
Figure BDA00032838331400000415
中的每个节点均找不到其他邻接交叉口节点是否成立,若成立,则表示只能获得k条最短路,并终止路径搜索;否则,返回步骤2顺序执行。
与现有技术相比,本发明的有益效果在于:
1、本发明能在不改变道路网络结构以及不通过枚举方法的基础上引入双向搜索算法,利用双向搜索的思想获取城市路网任意起讫点间的K条最短路,二者巧妙结合使算法能够高效处理大规模路网图,节省了资源的同时保证了效率,避免了不必要的时间损耗,为大型路网计算繁杂的难题提供获取K条最短路的优化方法,实质性地提高了计算效率和质量,能够缓解导航规划的计算负担,给予导航使用者更多元的选择,满足了用户现实需求。
2、常用的最短路算法有Dijkstra,因单向搜索的本质特性,在应对复杂大型图时的计算效率不高,在单向搜索的基础上求解k最短路问题往往需要“重构网络”,这将会使得效率急剧降低。本发明考虑分别从起点和终点出发进行双向交替搜索,以效率更高的双向搜索为基础寻找新的k最短路求解优化方法,为解决k-shortestpath问题提供了新的解决方案。
3、本发明在获取K条最短路的方法中,没有选择改变道路网络结构,而是巧妙借用双向搜索中的交汇成路的思想,以及路径树中临时最小值
Figure BDA00032838331400000416
这一路径选择的重要判断因素,使得一条完整路径的选择是通过间断计算当前已覆盖的两个搜索方向中的最小距离值之和来动态决定的,实现了能够按顺序依次获得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={v1,v2,v3,...,vq,...,vQ},设城市路网图G中需要规划的起点交叉口为vs∈V,终点交叉口为vt∈V,vq表示第q个交叉口,且vq=(dq,vq,pre,vq,root),其中,vq,root表示第q个交叉口vq的所在路径的根交叉口节点,vq,root∈{vs,vt},dq表示从根交叉口节点vq,root到达第q个交叉口vq的途经距离,vq,pre表示第q个交叉口vq的前驱交叉口节点,vq,pre∈V,q=1,2,3...Q,Q表示交叉口的总数,由于路径树图能够表示前驱交叉口节点和根交叉口节点,所以实施例的路径树结构图中都只标记出交叉口节点的途经距离d值,并且为了便于区别清楚相同编号的节点,将用上标'来区分,A表示交叉口之间的有向路段集合,且A={aij=(vi,vj)|i,j=1,2,...Q},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的路段,令ωi,j为路段(vi,vj)的权值;
定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;
定义当前搜索次数为t,并定义Df,t、Db,t分别为用于记录当前第t次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合,为了简便,实施例的路径树从vs出发的一侧的叶子交叉口节点放在Df,t,反之放在Db,t,不再做额外标记;
定义集合
Figure BDA0003283833140000061
用于记录叶子交叉口节点中距离该叶子交叉口节点的根节点距离最小所对应的叶子交叉口节点;
定义双向搜索过程中叶子交汇交叉口节点集
Figure BDA0003283833140000062
用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集
Figure BDA0003283833140000063
中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径,只需记录通过交汇获得的完整路径,而不需考虑从前向探至vs或从后向探至vt而形成的完整路径,因为后者一定在前者的情况中被更早地确定;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
确定所需最短路径条数为K,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为
Figure BDA0003283833140000064
初始化起点交叉口节点
Figure BDA0003283833140000065
终点交叉口节点
Figure BDA0003283833140000066
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t,初始化如图3所示;
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合
Figure BDA0003283833140000067
再随机选择集合
Figure BDA0003283833140000068
中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合
Figure BDA0003283833140000069
如图3所示,其中由于
Figure BDA00032838331400000610
中同时含有不同根交叉口节点属性的叶子交叉口节点,随机取根交叉口节点为vs的那些叶子交叉口节点,这样就得到第t=1次需要向外扩展的交叉口节点;
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure BDA0003283833140000071
中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure BDA0003283833140000072
中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点vmin的一个邻接交叉口节点为vj,转步骤2.1;
步骤2.1:判断每个邻接交叉口节点是否符合要求,本算例以允许包含环路的情况顺序进行;
如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口vs,则转步骤2.3;
如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口vt,则转步骤2.4;
如果寻找的路径不允许包含环路,则先将邻接交叉口节点vj的前驱交叉口节点vmin加入列表R(vj)中,然后从前驱交叉口节点vmin开始向根交叉口节点进行回溯,且每回溯一个前驱交叉口节点就加入列表R(vj)中,若R(vj)中存在与邻接交叉口节点vj相同的前驱交叉口节点,则表示vj的引入使得环路存在,直接将邻接交叉口节点vj舍弃,即对于该邻接交叉口节点将不执行后面全部步骤,继续判断下一个邻接交叉口节点,否则,表示无环路,并执行步骤2.2;
步骤2.2:当根交叉口节点为起点交叉口vs,则转步骤2.3;当根交叉口节点为终点交叉口vt,则转步骤2.4;
步骤2.3:承接上方步骤2的流程,将会进入步骤2.3,以本步骤中的扩展规则将会得到第t=2次搜索的路径树,新扩展出的叶子交叉口节点的连边用粗黑边表示,见图4。将邻接交叉口节点记为vj=(dvminmin,j,vmin,vs),然后更新集合Df,t+1=Df,t∪{vj};其中,ωmin,j表示前驱交叉口节点vmin到它的邻接交叉口节点vj的路段权值,dvmin表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Df,t中将相应的前驱交叉口节点vmin删除,更新Df,t+1=Df,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤2.4:将邻接交叉口节点记为vj=(dminj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,
Figure BDA0003283833140000081
表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算
Figure BDA0003283833140000082
Figure BDA0003283833140000083
即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点vi=(di,vi,pre,vs)和后向搜索出的叶子交叉口节点vi′=(di′,vi,pre,vt)组成交汇交叉口点对(vi,vi′)并加入集合P,且(vi,vi′)路径长度di,len=di+di′,如图5所示,可以交汇的交叉口节点在图中以虚线连接标出,因此
Figure BDA0003283833140000084
Figure BDA0003283833140000085
中叶子交汇交叉口节点进行匹配成对,即得到(v1,v1)和(v2,v2),然后计算(v1,v1)构成路径的长度为dlen=9+9=18,(v2,v2)构成路径的长度为dlen=15+10=25,以路径长度作为节点对的自有属性值,并转步骤4;若
Figure BDA0003283833140000086
即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件
Figure BDA0003283833140000087
保证了每次交汇形成而被加入集合P中的路径一定大于或等于
Figure BDA0003283833140000088
而根据
Figure BDA0003283833140000089
选择并纳入K最短路的必定小于等于
Figure BDA00032838331400000810
因此
Figure BDA00032838331400000811
成为整个算法能够顺序且不遗漏路径规划结果的关键所在。由图5可以计算出第t=4次搜索时,
Figure BDA00032838331400000812
其中,
Figure BDA00032838331400000813
表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即
Figure BDA00032838331400000814
Figure BDA00032838331400000815
表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
Figure BDA00032838331400000816
步骤5:取集合P中所有交汇交叉口节点对的路径长度
Figure BDA00032838331400000817
的点对加入集合
Figure BDA00032838331400000818
中,然后将集合P中点对的路径长度di,len从小到大进行排序,分别作为第k+1条至第k+n条最短路,其中n=集合
Figure BDA00032838331400000819
的长度
Figure BDA00032838331400000820
Figure BDA00032838331400000821
排序后的路径长度di,len赋值给
Figure BDA00032838331400000822
Figure BDA00032838331400000823
其中
Figure BDA00032838331400000824
中节点对构成的路径的长度一定大于之前已经确定的最短路径长度,且一定小于之后找到的最短路路径长度,同时不会遗漏可能存在的某一条最短路,所以可以将满足小于等于
Figure BDA00032838331400000825
的n条路径一次性确定为n条最短路,这样加速了K最短路的获取速度,并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合
Figure BDA0003283833140000091
中的交汇交叉口点对,图5中由于(v1,v1)的
Figure BDA0003283833140000092
因此这一步确定了最短路径
Figure BDA0003283833140000093
回溯得到路径为vs→v1→v3→vt;在图6中,展示了第t=9次探索时,可以一次性将两条路径确定为最短路,由于
Figure BDA0003283833140000094
此时P集合中(v2,v2)的
Figure BDA0003283833140000095
(v1',v1”)的
Figure BDA0003283833140000096
按从小到大排序后,即可确定第4短路
Figure BDA0003283833140000097
回溯得到路径为vs→v2→v3→vt,第5短路
Figure BDA0003283833140000098
回溯得到路径为vs→v1→v3→v1→v3→v1→v3→vt。从而更新集合P,更新k为k+n,转步骤6;若找不到
Figure BDA0003283833140000099
的点对,则返回步骤2顺序执行;
步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合
Figure BDA00032838331400000910
中的每个节点均找不到其他邻接交叉口节点是否成立,若成立,则表示只能获得k条最短路,并终止路径搜索;否则,返回步骤2顺序执行。图7为当出行者需要5条最短路且允许路径包含环路时,获得的路径规划结果。

Claims (1)

1.一种基于双向Dijkstra的城市路网K条最短路径的获取方法,其特征是按如下步骤进行:
步骤1:定义参数并初始化:
获取实时道路网络数据并得到城市路网图G=(V,A),V表示交叉口集合,且V={v1,v2,v3,...,vq,...,vQ},设城市路网图G中需要规划的起点交叉口为vs∈V,终点交叉口为vt∈V,vq表示第q个交叉口,且vq=(dq,vq,pre,vq,root),其中,vq,root表示第q个交叉口vq的所在路径的根交叉口节点,vq,root∈{vs,vt},dq表示从根交叉口节点vq,root到达第q个交叉口vq的途经距离,vq,pre表示第q个交叉口vq的前驱交叉口节点,vq,pre∈V,q=1,2,3...Q,Q表示交叉口的总数,A表示交叉口之间的有向路段集合,且A={aij=(vi,vj)|i,j=1,2,...Q},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的路段,令ωi,j为路段(vi,vj)的权值;
定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;
定义当前搜索次数为t,并定义Df,t、Db,t分别为用于记录当前第t次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合;
定义集合
Figure FDA0003283833130000011
用于记录所有叶子交叉口节点中离自身的根节点距离值最小所对应的叶子交叉口节点;
定义双向搜索过程中叶子交汇交叉口节点集
Figure FDA0003283833130000012
用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集
Figure FDA0003283833130000013
中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
确定所需最短路径条数为K,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为
Figure FDA0003283833130000014
初始化起点交叉口节点
Figure FDA0003283833130000015
终点交叉口节点
Figure FDA0003283833130000016
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合
Figure FDA0003283833130000017
再随机选择集合
Figure FDA0003283833130000018
中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合
Figure FDA0003283833130000021
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure FDA0003283833130000022
中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合
Figure FDA0003283833130000023
中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点vmin的一个邻接交叉口节点为vj,转步骤2.1;
步骤2.1:判断每个邻接交叉口节点是否符合要求;
如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口vs,则转步骤2.3;
如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口vt,则转步骤2.4;
如果寻找的路径不允许包含环路,则先将邻接交叉口节点vj的前驱交叉口节点vmin加入列表R(vj)中,然后从前驱交叉口节点vmin开始向根交叉口节点进行回溯,且每回溯一个前驱交叉口节点就加入列表R(vj)中,若R(vj)中存在与邻接交叉口节点vj相同的前驱交叉口节点,则表示vj的引入使得环路存在,直接将邻接交叉口节点vj舍弃,继续判断下一个邻接交叉口节点,否则,表示无环路,并执行步骤2.2;
步骤2.2:当根交叉口节点为起点交叉口vs,则转步骤2.3;当根交叉口节点为终点交叉口vt,则转步骤2.4;
步骤2.3:将邻接交叉口节点记为
Figure FDA0003283833130000024
然后更新集合Df,t+1=Df,t∪{vj};其中,ωmin,j表示前驱交叉口节点vmin到其邻接交叉口节点vj的路段权值,
Figure FDA0003283833130000025
表示前驱交叉口节点vmin到其根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Df,t中将相应的前驱交叉口节点vmin删除,更新Df,t+1=Df,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤2.4:将邻接交叉口节点记为vj=(dminj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};其中,ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,
Figure FDA0003283833130000026
表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算
Figure FDA0003283833130000031
Figure FDA0003283833130000032
即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点vi=(di,vi,pre,vs)和后向搜索出的叶子交叉口节点v′i=(d′i,v′i,pre,vt)组成交汇交叉口点对(vi,v′i)并加入集合P,且(vi,v′i)路径长度di,len=di+d′i,并转步骤4;若
Figure FDA0003283833130000033
即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件
Figure FDA0003283833130000034
其中,
Figure FDA0003283833130000035
表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即
Figure FDA0003283833130000036
Figure FDA0003283833130000037
表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
Figure FDA0003283833130000038
步骤5:取集合P中所有交汇交叉口节点对的路径长度
Figure FDA0003283833130000039
的点对加入集合
Figure FDA00032838331300000310
中,然后将集合P中点对的路径长度di,len从小到大进行排序,并分别作为第k+1条至第k+n条最短路,其中,n=集合
Figure FDA00032838331300000311
的长度
Figure FDA00032838331300000312
将集合
Figure FDA00032838331300000313
排序后的路径长度di,len依次赋值给
Figure FDA00032838331300000314
Figure FDA00032838331300000315
并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合
Figure FDA00032838331300000316
中的交汇交叉口点对,从而更新集合P,更新k为k+n;转步骤6;若找不到
Figure FDA00032838331300000317
的点对,则返回步骤2顺序执行;
步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合
Figure FDA00032838331300000318
中的每个节点均找不到其他邻接交叉口节点是否成立,若成立,则表示只能获得k条最短路,并终止路径搜索;否则,返回步骤2顺序执行。
CN202111140784.4A 2021-09-28 2021-09-28 基于双向Dijkstra的城市路网K条最短路径的获取方法 Active CN113808424B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111140784.4A CN113808424B (zh) 2021-09-28 2021-09-28 基于双向Dijkstra的城市路网K条最短路径的获取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111140784.4A CN113808424B (zh) 2021-09-28 2021-09-28 基于双向Dijkstra的城市路网K条最短路径的获取方法

Publications (2)

Publication Number Publication Date
CN113808424A true CN113808424A (zh) 2021-12-17
CN113808424B CN113808424B (zh) 2022-07-05

Family

ID=78896939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111140784.4A Active CN113808424B (zh) 2021-09-28 2021-09-28 基于双向Dijkstra的城市路网K条最短路径的获取方法

Country Status (1)

Country Link
CN (1) CN113808424B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115394109A (zh) * 2022-08-30 2022-11-25 合肥工业大学 基于共用计算的k对单源点单汇点最短路搜索方法及应用
WO2024046013A1 (zh) * 2022-08-31 2024-03-07 王举范 一种基于知识图谱最短路径的信息获取方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339352A1 (en) * 2012-05-21 2013-12-19 Kent State University Shortest path computation in large networks
WO2014170442A1 (en) * 2013-04-17 2014-10-23 Tomtom International B.V. Method and apparatus for filtering traffic information
CN109887289A (zh) * 2019-03-28 2019-06-14 南京邮电大学 一种城市交通网络模型的网络车流量最大化方法
CN110516702A (zh) * 2019-07-18 2019-11-29 电子科技大学 一种基于流数据的离散路径规划方法
CN110782178A (zh) * 2019-11-01 2020-02-11 北京航空航天大学 一种交通网络规划辅助决策方法及装置
CN110992697A (zh) * 2019-12-19 2020-04-10 江苏金晓电子信息股份有限公司 一种高精度、高拓展性的用于规划交通最优路径的方法
CN111879329A (zh) * 2020-07-30 2020-11-03 郑州天迈科技股份有限公司 基于a*算法的定制公交可通行最短路径计算方法
CN112991800A (zh) * 2021-03-03 2021-06-18 合肥工业大学 基于角度限制和双向搜索的城市路网最短路径获取方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339352A1 (en) * 2012-05-21 2013-12-19 Kent State University Shortest path computation in large networks
WO2014170442A1 (en) * 2013-04-17 2014-10-23 Tomtom International B.V. Method and apparatus for filtering traffic information
CN109887289A (zh) * 2019-03-28 2019-06-14 南京邮电大学 一种城市交通网络模型的网络车流量最大化方法
CN110516702A (zh) * 2019-07-18 2019-11-29 电子科技大学 一种基于流数据的离散路径规划方法
CN110782178A (zh) * 2019-11-01 2020-02-11 北京航空航天大学 一种交通网络规划辅助决策方法及装置
CN110992697A (zh) * 2019-12-19 2020-04-10 江苏金晓电子信息股份有限公司 一种高精度、高拓展性的用于规划交通最优路径的方法
CN111879329A (zh) * 2020-07-30 2020-11-03 郑州天迈科技股份有限公司 基于a*算法的定制公交可通行最短路径计算方法
CN112991800A (zh) * 2021-03-03 2021-06-18 合肥工业大学 基于角度限制和双向搜索的城市路网最短路径获取方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BAOLIN YI: "Bidirectional Search Algorithm Based-On Index for Shortest Path Problem", 《2010 INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND SOFTWARE ENGINEERING》 *
易颖华 等: "最短路问题的一种新动态规划算法", 《江西科学》 *
殷伟等: "一种基于FCD的城市道路车流速度估计算法", 《中国科学技术大学学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115394109A (zh) * 2022-08-30 2022-11-25 合肥工业大学 基于共用计算的k对单源点单汇点最短路搜索方法及应用
CN115394109B (zh) * 2022-08-30 2023-05-02 合肥工业大学 基于共用计算的k对单源点单汇点最短路搜索方法及应用
WO2024046013A1 (zh) * 2022-08-31 2024-03-07 王举范 一种基于知识图谱最短路径的信息获取方法及装置

Also Published As

Publication number Publication date
CN113808424B (zh) 2022-07-05

Similar Documents

Publication Publication Date Title
CN113808424B (zh) 基于双向Dijkstra的城市路网K条最短路径的获取方法
CN104266656B (zh) 用于道路网的最短路径搜索方法及装置
Liu et al. Energy-efficient UAV crowdsensing with multiple charging stations by deep learning
CN100578152C (zh) 用于处理大规模浮动车数据的启发式路径匹配方法
CN107367278A (zh) 一种室内导航方法及设备
CN110782178B (zh) 一种交通网络规划辅助决策方法及装置
CN107121146B (zh) 基于路链深度的最优路径规划方法
CN106453096A (zh) 一种动态网络社区发现方法及装置
CN106052692A (zh) 一种最短路径规划导航方法及系统
CN112991800B (zh) 基于角度限制和双向搜索的城市路网最短路径获取方法
CN108225333A (zh) 一种用于航线规划的最优路径生成方法
CN113781817B (zh) 一种基于共用计算的城市路网多源最短路径获取方法
CN106447097A (zh) 一种受限最长频繁路径的查询方法
CN112101676A (zh) 一种乘车路径规划方法、装置、计算机设备及存储介质
CN110095134A (zh) 一种以用户的偏好为核心的路径规划和导航的方法及系统
CN113503886A (zh) 一种大规模复杂路网条件下的快速径路搜索优化方法
CN115713856A (zh) 一种基于交通流预测与实际路况的车辆路径规划方法
Sasaki et al. Sequenced route query with semantic hierarchy
CN114969234A (zh) 一种面向全量城市路网的向量表征方法
CN111623790B (zh) 一种面向动态城市交通路网的快速路径规划方法
CN109447312A (zh) 路线规划方法、装置、电子设备及可读存储介质
Chen et al. Itinerary planning via deep reinforcement learning
CN110245271B (zh) 基于属性图的大规模关联数据划分方法及系统
CN115547087B (zh) 基于两阶段法与方向诱导的城市路网最短路径获取方法及应用
He et al. Exploring public transport transfer opportunities for pareto search of multicriteria journeys

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant