CN113808424A - 基于双向Dijkstra的城市路网K条最短路径的获取方法 - Google Patents
基于双向Dijkstra的城市路网K条最短路径的获取方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/09—Arrangements for giving variable traffic instructions
- G08G1/0962—Arrangements for giving variable traffic instructions having an indicator mounted inside the vehicle, e.g. giving voice messages
- G08G1/0968—Systems involving transmission of navigation instructions to the vehicle
- G08G1/096805—Systems involving transmission of navigation instructions to the vehicle where the transmitted instructions are used to compute a route
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/09—Arrangements for giving variable traffic instructions
- G08G1/0962—Arrangements for giving variable traffic instructions having an indicator mounted inside the vehicle, e.g. giving voice messages
- G08G1/0968—Systems involving transmission of navigation instructions to the vehicle
- G08G1/096833—Systems involving transmission of navigation instructions to the vehicle where different aspects are considered when computing the route
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Abstract
Description
技术领域
本发明属于车载导航路径优化领域,具体的说是一种基于双向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次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合;
定义双向搜索过程中叶子交汇交叉口节点集用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t;
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合再随机选择集合中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点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=(dvmin+ωmin,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=(dmin+ωj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};其中,ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算若即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点vi=(di,vi,pre,vs)和后向搜索出的叶子交叉口节点vi′=(di′,vi′,pre,vt)组成交汇交叉口点对(vi,vi′)并加入集合P,且(vi,vi′)路径长度di,len=di+di′,并转步骤4;若即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件其中,表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即 表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
步骤5:取集合P中所有交汇交叉口节点对的路径长度的点对加入集合中,然后将集合P中点对的路径长度di,len从小到大进行排序,并分别作为第k+1条至第k+n条最短路,其中,n=集合的长度将集合排序后的路径长度di,len依次赋值给至并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合中的交汇交叉口点对,从而更新集合P,更新k为k+n;转步骤6;若找不到的点对,则返回步骤2顺序执行;
步骤6:判断k是否大于等于K,若是,则表示已获得K条最短路,并终止路径搜索,从前k条最短路中取前K条最短路最为结果输出,否则,继续判断P为空,且第t次搜索过程中集合中的每个节点均找不到其他邻接交叉口节点是否成立,若成立,则表示只能获得k条最短路,并终止路径搜索;否则,返回步骤2顺序执行。
与现有技术相比,本发明的有益效果在于:
1、本发明能在不改变道路网络结构以及不通过枚举方法的基础上引入双向搜索算法,利用双向搜索的思想获取城市路网任意起讫点间的K条最短路,二者巧妙结合使算法能够高效处理大规模路网图,节省了资源的同时保证了效率,避免了不必要的时间损耗,为大型路网计算繁杂的难题提供获取K条最短路的优化方法,实质性地提高了计算效率和质量,能够缓解导航规划的计算负担,给予导航使用者更多元的选择,满足了用户现实需求。
2、常用的最短路算法有Dijkstra,因单向搜索的本质特性,在应对复杂大型图时的计算效率不高,在单向搜索的基础上求解k最短路问题往往需要“重构网络”,这将会使得效率急剧降低。本发明考虑分别从起点和终点出发进行双向交替搜索,以效率更高的双向搜索为基础寻找新的k最短路求解优化方法,为解决k-shortestpath问题提供了新的解决方案。
3、本发明在获取K条最短路的方法中,没有选择改变道路网络结构,而是巧妙借用双向搜索中的交汇成路的思想,以及路径树中临时最小值这一路径选择的重要判断因素,使得一条完整路径的选择是通过间断计算当前已覆盖的两个搜索方向中的最小距离值之和来动态决定的,实现了能够按顺序依次获得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,不再做额外标记;
定义双向搜索过程中叶子交汇交叉口节点集用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径,只需记录通过交汇获得的完整路径,而不需考虑从前向探至vs或从后向探至vt而形成的完整路径,因为后者一定在前者的情况中被更早地确定;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t,初始化如图3所示;
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合再随机选择集合中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合如图3所示,其中由于中同时含有不同根交叉口节点属性的叶子交叉口节点,随机取根交叉口节点为vs的那些叶子交叉口节点,这样就得到第t=1次需要向外扩展的交叉口节点;
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点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=(dvmin+ωmin,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=(dmin+ωj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算若即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点vi=(di,vi,pre,vs)和后向搜索出的叶子交叉口节点vi′=(di′,vi′,pre,vt)组成交汇交叉口点对(vi,vi′)并加入集合P,且(vi,vi′)路径长度di,len=di+di′,如图5所示,可以交汇的交叉口节点在图中以虚线连接标出,因此将中叶子交汇交叉口节点进行匹配成对,即得到(v1,v1)和(v2,v2),然后计算(v1,v1)构成路径的长度为dlen=9+9=18,(v2,v2)构成路径的长度为dlen=15+10=25,以路径长度作为节点对的自有属性值,并转步骤4;若即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件保证了每次交汇形成而被加入集合P中的路径一定大于或等于而根据选择并纳入K最短路的必定小于等于因此成为整个算法能够顺序且不遗漏路径规划结果的关键所在。由图5可以计算出第t=4次搜索时,其中,表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即 表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
步骤5:取集合P中所有交汇交叉口节点对的路径长度的点对加入集合中,然后将集合P中点对的路径长度di,len从小到大进行排序,分别作为第k+1条至第k+n条最短路,其中n=集合的长度将排序后的路径长度di,len赋值给至其中中节点对构成的路径的长度一定大于之前已经确定的最短路径长度,且一定小于之后找到的最短路路径长度,同时不会遗漏可能存在的某一条最短路,所以可以将满足小于等于的n条路径一次性确定为n条最短路,这样加速了K最短路的获取速度,并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合中的交汇交叉口点对,图5中由于(v1,v1)的因此这一步确定了最短路径回溯得到路径为vs→v1→v3→vt;在图6中,展示了第t=9次探索时,可以一次性将两条路径确定为最短路,由于此时P集合中(v2,v2)的(v1',v1”)的按从小到大排序后,即可确定第4短路回溯得到路径为vs→v2→v3→vt,第5短路回溯得到路径为vs→v1→v3→v1→v3→v1→v3→vt。从而更新集合P,更新k为k+n,转步骤6;若找不到的点对,则返回步骤2顺序执行;
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次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合;
定义双向搜索过程中叶子交汇交叉口节点集用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集中对应的节点组成叶子交汇交叉口节点对并存入集合P中,用于存储所有产生的连通路径;
定义存储路径树结构中新增的一个叶子交叉口节点vi所在路径的前驱交叉口节点的列表为R(vi);
初始化t=1;并将起点交叉口vs加入当前第t次前向搜索的集合Df,t,将终点交叉口vt加入当前第t次后向搜索的集合Db,t;
步骤2:找出Df,t、Db,t中途经距离值最小的叶子交叉口节点vmin,从而得到当前第t次搜索的集合再随机选择集合中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t+1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合
若根交叉口节点为起点交叉口vs,则从有向路段集合A中依次找出前驱交叉口节点集合中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点vmin所能到达的一个邻接交叉口节点为vj,转步骤2.1;
若根交叉口节点为终点交叉口vt,则从有向路段集合A中依次找出前驱交叉口节点集合中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点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:将邻接交叉口节点记为然后更新集合Df,t+1=Df,t∪{vj};其中,ωmin,j表示前驱交叉口节点vmin到其邻接交叉口节点vj的路段权值,表示前驱交叉口节点vmin到其根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Df,t中将相应的前驱交叉口节点vmin删除,更新Df,t+1=Df,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤2.4:将邻接交叉口节点记为vj=(dmin+ωj,min,vmin,vt),更新集合Db,t+1=Db,t∪{vj};其中,ωj,min表示vmin的邻接交叉口节点vj到前驱交叉口节点vmin的路段权值,表示前驱交叉口节点vmin到它的根交叉口节点的途经距离;
当找完前驱交叉口节点vmin的所有邻接交叉口节点并完成判断后,从Db,t中将相应的前驱交叉口节点vmin删除,更新Db,t+1=Db,t\{vmin};
当找完所有前驱交叉口节点的邻接交叉口节点后,将t+1赋值给t后,执行步骤3;
步骤3:运算若即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点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;若即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;
步骤4:计算第t次双向搜索的最短路判断条件其中,表示第t次前向搜索的叶子交叉口节点集合Df,t中所有叶子交叉口节点的最小途经距离d,即 表示第t次后向搜索的叶子交叉口节点集合Db,t中所有叶子交叉口节点的最小途经距离d,即
步骤5:取集合P中所有交汇交叉口节点对的路径长度的点对加入集合中,然后将集合P中点对的路径长度di,len从小到大进行排序,并分别作为第k+1条至第k+n条最短路,其中,n=集合的长度将集合排序后的路径长度di,len依次赋值给至并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至vs、后向回溯至vt,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合P中删除集合中的交汇交叉口点对,从而更新集合P,更新k为k+n;转步骤6;若找不到的点对,则返回步骤2顺序执行;
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)
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)
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 | 合肥工业大学 | 基于角度限制和双向搜索的城市路网最短路径获取方法 |
-
2021
- 2021-09-28 CN CN202111140784.4A patent/CN113808424B/zh active Active
Patent Citations (8)
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)
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)
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 |