CN115394109B - 基于共用计算的k对单源点单汇点最短路搜索方法及应用 - Google Patents

基于共用计算的k对单源点单汇点最短路搜索方法及应用 Download PDF

Info

Publication number
CN115394109B
CN115394109B CN202211058176.3A CN202211058176A CN115394109B CN 115394109 B CN115394109 B CN 115394109B CN 202211058176 A CN202211058176 A CN 202211058176A CN 115394109 B CN115394109 B CN 115394109B
Authority
CN
China
Prior art keywords
intersection
source
sink
current
distance
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.)
Active
Application number
CN202211058176.3A
Other languages
English (en)
Other versions
CN115394109A (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 CN202211058176.3A priority Critical patent/CN115394109B/zh
Publication of CN115394109A publication Critical patent/CN115394109A/zh
Application granted granted Critical
Publication of CN115394109B publication Critical patent/CN115394109B/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
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种基于共用计算的K对单源点单汇点最短路搜索方法及应用,包括:1.由实时路况信息构建城市网络;2.获取目标源汇点交叉口对集合;3.参数定义及初始化;4.在当前源汇点下的向前搜索;5.根据当前搜索交叉口对应的B中的元素值,判断是否已经找到最短路径并进行B的更新。本发明考虑通过二维数组B来储存搜索得到的最短路径距离,从而能提高减少计算资源浪费,提高路径搜索效率,为实现更快速导航等提供支持。

Description

基于共用计算的K对单源点单汇点最短路搜索方法及应用
技术领域
本发明属于最短路径搜索领域,具体的说是一种基于共用计算的K对单源点单汇点最短路径获取方法及应用。
背景技术
随着如今城市规模的不断扩张,城市道路也变得愈发四通八达,城市路网的规模相应地不断扩大,交叉口节点数量相较以前大量增加。现有的最短路径算法主要可以分为单源最短路径算法和全源最短路径算法,这两种最短路径算法在解决大规模路网时工作效率都不高,难以满足当今人群对导航快速响应的需求。
如果用单源最短路径算法来搜索最短路径,会重复计算已经搜索到最短路权重,则会造成大量算力浪费,导致导航反应速度慢;而如果采用全源最短路径算法,则会对许多没有出行需求的交叉口点进行路径搜索,这将产生不必要的资源浪费,降低搜索效率,搜索时间变长,消耗手机等导航设备内存巨大,导致导航反应速度慢。
发明内容
本发明是为了解决上述现有技术存在的不足之处,提出一种基于共用计算的K对单源点单汇点最短路搜索方法及应用,以期能通过共用计算的思想来提高最短路径搜索效率,缩短最短路径搜索时间,从而能满足有K个出行需求的单源点单汇点对的路径搜索需求,为实现更快速导航等提供支持。
本发明为达到上述发明目的,采用如下技术方案:
本发明一种基于共用计算的K对单源点单汇点最短路搜索方法的特点在于,包括如下步骤:
步骤一:构建城市路网;
获取实时道路网络数据并得到城市路网G=(V,A,W),V表示交叉口集合,且V={v1,v2,v3,…,vi,…,vR},vi表示第i个交叉口,i=1,2,3,…,R,R为所述城市路网G中的交叉口总数,A表示交叉口之间的路段集合,且A={(vi,vj)|i,j=1,2,3,…,R},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的有向路段,W表示交叉口之间路段的权重集合,W={wij|i,j=1,2,3,…,R},wij为有向路段(vi,vj)的权重,若第i个交叉口vi到第j个交叉口vj之间存在有向路段(vi,vj),则第j个交叉口vj为第i个交叉口vi的邻居交叉口,第i个交叉口vi为第j个交叉口vj的前驱交叉口,且ωij>0;若第i个交叉口vi到第j个交叉口vj之间不存在有向路段(vi,vj),则令ωij=+∞;
步骤2:获取目标源汇点交叉口对集合;
将待计算最短路的K个源汇点交叉口对加入目标源汇点交叉口集合
Figure BDA0003825655600000021
1<K<R,其中,
Figure BDA0003825655600000022
表示第k个源汇点交叉口对;
Figure BDA0003825655600000023
Figure BDA0003825655600000024
表示目标源汇点交叉口集合VOD中第sk个源点交叉口和第ek个汇点交叉口;
步骤3:参数定义及初始化;
定义当前第i个交叉口vi的前向距离为源点交叉口到当前第i个交叉口的最短距离,定义前向距离的数组集合F={Fk(vi)|i=1,2…R;k=1,2…K};Fk(vi)为第k个源汇点交叉口对
Figure BDA0003825655600000025
中的第sk个源点交叉口
Figure BDA0003825655600000026
到第i个交叉口vi的最短距离;
定义当前第i个交叉口vi的后向距离为当前第i个交叉口vi到汇点交叉口的最短距离,定义维度为R×R的后向距离矩阵B={Bxj|x,j=1,2,3…R};其中,Bkj表示任意第x个交叉口vx到任意第j个交叉口vj的最短距离,令
Figure BDA0003825655600000027
表示从当前第i个交叉口vi到第ek个终点交叉口的后向距离;若
Figure BDA0003825655600000028
则表示没有找到从当前第i个交叉口vi到第ek个终点交叉口
Figure BDA0003825655600000029
的最短路径;若
Figure BDA00038256556000000210
则表示已经找到从当前第i个交叉口vi到第ek个终点交叉口
Figure BDA00038256556000000211
的最短路径;
定义当前第i个交叉口vi的估价函数Tk(vi)为第k个源汇点交叉口对
Figure BDA00038256556000000212
中的第i个交叉口vi的前向距离Fk(vi)和后向距离
Figure BDA00038256556000000213
之和,定义估价函数的数组集合T={Tk(vi)|i=1,2,…R;k=1,2,…K};
定义Q为在搜索过程中估价函数值最小的交叉口集合;
将第k个源汇点交叉口对
Figure BDA00038256556000000214
中第sk个源点交叉口
Figure BDA00038256556000000215
到第ek个终点交叉
Figure BDA00038256556000000216
之间的最短路径上第i个交叉口vi的前驱交叉口记为λk(vi),定义前驱交叉口数组集合λ={λk(vi)|i=1,2,…R;k=1,2,…K};
初始化B={Bij=0|i,j=1,2,3…R},λ={λk(vi)=φ|i=1,2,…R;k=1,2,…K},k=1;
步骤4:当前第k个源汇点交叉口对
Figure BDA00038256556000000217
的向前搜索;
步骤4.1初始化;
获取第k个源汇点交叉口对
Figure BDA00038256556000000218
Figure BDA00038256556000000219
令当前交叉口记为vc,初始化第sk个源点交叉口
Figure BDA00038256556000000220
为当前交叉口vc,初始化Fk(vi)={+∞|i=1,2,…R};
步骤4.2:若当前交叉口vc不是第ek个汇点交叉口
Figure BDA0003825655600000031
则遍历满足(vc,vn)∈A的邻居交叉口vn,若Fk(vc)+wcn<Fk(vn),则将Fk(vc)+wcn赋值给Fk(vn),将
Figure BDA0003825655600000032
赋值给Tk(vn),其中,Fk(vc)、Fk(vn)分别为计算k个源汇点交叉口对
Figure BDA0003825655600000033
时交叉口vc、vn的前向距离,wcn表示交叉口vc到交叉口vn的路段(vc,vn)的权重,
Figure BDA0003825655600000034
为计算k个源汇点交叉口对
Figure BDA0003825655600000035
时邻居交叉口vn的后向距离;设置vn的前驱交叉口λk(vn)为当前交叉口vc
若当前交叉口vc是第ek个汇点交叉口
Figure BDA0003825655600000036
则表示找到第k个源汇点交叉口对
Figure BDA0003825655600000037
的最短路径,并将vc的估价函数Tk(vc)赋值给源点
Figure BDA0003825655600000038
与汇点
Figure BDA0003825655600000039
的后向距离
Figure BDA00038256556000000310
将第k个源汇点交叉口对
Figure BDA00038256556000000311
从源汇点交叉口对集合VOD中移除后,转入步骤6;
步骤4.3:设交叉口vl为满足
Figure BDA00038256556000000312
vl∈V/Q的交叉口,其中,Tk(vl)为计算k个源汇点交叉口对
Figure BDA00038256556000000313
时交叉口vl的估价函数,Fk(vl)为计算k个源汇点交叉口对
Figure BDA00038256556000000314
时交叉口vl的前向距离,
Figure BDA00038256556000000315
为计算k个源汇点交叉口对
Figure BDA00038256556000000316
时交叉口vl的后向距离,将交叉口vl加入估价函数值最小的交叉口集合Q中;
步骤4.4:若交叉口vl到第ek个汇点交叉口
Figure BDA00038256556000000317
的后向距离
Figure BDA00038256556000000318
则设置交叉口vl为当前交叉口vc,并转入步骤5;
步骤4.5:若交叉口vl到第ek个汇点交叉口
Figure BDA00038256556000000319
的后向距离
Figure BDA00038256556000000320
则表示找到源汇点交叉口对
Figure BDA00038256556000000321
最短路径,并将vl的估价函数Tk(vl)赋值给源点
Figure BDA00038256556000000322
与汇点
Figure BDA00038256556000000323
的后向距离
Figure BDA00038256556000000324
将第k个源汇点交叉口对
Figure BDA00038256556000000325
从源汇点交叉口对集合VOD中移除后,转入步骤6;
步骤5:当前交叉口vc的后向距离
Figure BDA00038256556000000326
时,更新后向距离矩阵B;
步骤5.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure BDA00038256556000000327
则将当前交叉口vc的前向距离Fk(vc)赋值给当前交叉口vc与源汇点交叉口
Figure BDA00038256556000000328
之间的后向距离
Figure BDA00038256556000000329
转入步骤4.2;否则转入步骤5.2;
步骤5.2将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fk(λ(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure BDA00038256556000000330
步骤5.3:将当前前驱交叉口的前驱交叉口λkk(vc))赋值给前驱交叉口λk(vc)后,转入步骤5.1;
步骤6:当前交叉口vc的后向距离
Figure BDA00038256556000000331
时,更新后向距离矩阵B;
步骤6.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure BDA0003825655600000041
则转入步骤7;否则转入步骤6.2;
步骤6.2:计算当前交叉口vc与其前驱交叉口之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fkk(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure BDA0003825655600000042
若当前交叉口vc为第ek个汇点交叉口
Figure BDA0003825655600000043
则转入步骤6.4;否则,执行步骤6.3;
步骤6.3:计算当前交叉口vc及其前驱交叉口λk(vc)与第ek个汇点交叉口
Figure BDA0003825655600000044
之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的估价函数Tk(vc)赋值给源点交叉口
Figure BDA0003825655600000045
与第ek个汇点交叉口
Figure BDA0003825655600000046
之间的后向距离
Figure BDA0003825655600000047
将源点交叉口
Figure BDA0003825655600000048
与第ek个汇点交叉口
Figure BDA0003825655600000049
之间的后向距离
Figure BDA00038256556000000410
减去当前交叉口vc的前驱交叉口λk(vc)的前向距离后再赋值给前驱交叉口λk(vc)与第ek个终点交叉口
Figure BDA00038256556000000411
之间的后向距离
Figure BDA00038256556000000412
步骤6.4:将λkk(vc))赋值给λk(vc)后,转入步骤6.1;
步骤7:判断是否已经找到所有源汇点交叉口对的最短路径:
如果源汇点交叉口对集合VOD=φ,则表示已找到所有源汇点交叉口对的最短路径;并根据前驱交叉口,逐个将K对源汇点交叉口对之间最短路径输出;
如果源汇点交叉口对集合VOD≠φ,则表示未找到所有源汇点交叉口对的最短路径,令源汇点交叉口对的次序k+1赋值给k后,转入步骤4。
本发明一种电子设备,包括存储器以及处理器,其特点在于,所述存储器用于存储支持处理器执行权利要求1所述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
本发明一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特点在于,所述计算机程序被处理器运行时执行所述方法的步骤。
与现有最短路径算法相比,本算法的优点在于:
1、本发明提出了的最短路径方法应用了共用计算思想,对前面迭代得到的交叉口之间的最短路径权重进行重复利用,这使在迭代搜索最短路径时,省去了许多不必要的与前面迭代重复的搜索,缩短了搜索路径所需时间,从而提高了路径搜索的效率。
2、本发明所提出的方法在应用于大规模路网时具有更加出色的搜索效率,现有导航算法在面对大规模路网时会产生许多不必要的计算资源浪费,而本发明提出的算法借用共用计算的思想,节省了计算资源的同时,保证了运算效率,可以提高导航软件的响应速度,缩小响应时间,为人们提供更好的导航服务。
3、本发明提出的方法可以在路径搜索迭代时更新交叉口之间的最短路径权重,根据最短路径的子路径同样是最短路径这一定理,可以在得到一条最短路径时对该条最短路径上的交叉口之间的最短路径权重进行及时地更新,减少后面迭代运行次数,从而减少了手机等导航设备内存消耗,优化导航体验。
4、本发明提出的方法可以解决K个对单源点单汇点对之间的最短路径搜索问题,这更加符合现实的导航需求。在大规模路网上,很容易同时存在许多单源点单汇点对之间存在出行需求,单源最短路径算法需要对这些单源点单汇点对逐一解决,而全源最短路径算法则会对许多不必要的单源点单汇点对进行搜索,而本发明提出的方法则会减少不必要的搜索,更加符合多用户进行路径规划需求。
附图说明
图1为本发明流程图;
图2为本发明路网节点示意图;
图3为本发明参数初始化图;
图4为本发明以第四个节点为当前节点进行搜索图;
图5为本发明以第二个节点为当前节点进行搜索图;
图6为本发明以第一个节点为当前节点进行搜索图;
图7为本发明以第三个节点为当前节点进行搜索图;
图8为本发明进行搜索以及二维数组B的更新图;
图9为本发明搜索到最短路径图;
图10为本发明第二轮单源点单汇点对节点搜索参数初始化图;
图11为本发明第二轮从起始节点开始搜索图;
图12为本发明以第六个节点为当前节点进行搜索图;
图13为本发明继续边界扩张图;
图14为本发明利用共用计算思想图;
图15为本发明第二轮搜索结束图。
具体实施方式
本实施例中,一种基于共用计算的K对单源点单汇点最短路搜索方法的整体框架流程图如图1所示,具体包括如下步骤:
步骤一:构建城市路网;
获取实时道路网络数据并得到城市路网G=(V,A,W),V表示交叉口集合,且V={v1,v2,v3,…,vi,…,vR},vi表示第i个交叉口,i=1,2,3,…,R,R为城市路网G中的交叉口总数,A表示交叉口之间的路段集合,且A={(vi,vj)|i,j=1,2,3,…,R},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的有向路段,W表示交叉口之间路段的权重集合,W={wij|i,j=1,2,3,…,R},wij为有向路段(vi,vj)的权重,若第i个交叉口vi到第j个交叉口vj之间存在有向路段(vi,vj),则第j个交叉口vj为第i个交叉口vi的邻居交叉口,第i个交叉口vi为第j个交叉口vj的前驱交叉口,且ωij>0;若第i个交叉口vi到第j个交叉口vj之间不存在有向路段(vi,vj),则令ωij=+∞。本实施例中,构建城市路网如图2所示,路网中交叉口总数R=8;
步骤2:获取目标源汇点交叉口对集合;
将待计算最短路的K个源汇点交叉口对加入目标源汇点交叉口集合
Figure BDA0003825655600000061
1<K<R,其中,
Figure BDA0003825655600000062
表示第k个源汇点交叉口对;
Figure BDA0003825655600000063
Figure BDA0003825655600000064
表示目标源汇点交叉口集合VOD中第sk个源点交叉口和第ek个汇点交叉口。本实例中,求解的目标源汇点对交叉口集合为VOD={<v4,v8>,<v1,v8>},K=2;
步骤3:参数定义及初始化;
定义当前第i个交叉口vi的前向距离为源点交叉口到当前第i个交叉口的最短距离,定义前向距离的数组集合F={Fk(vi)|i=1,2…R;k=1,2…K};Fk(vi)为第k个源汇点交叉口对
Figure BDA0003825655600000065
中的第sk个源点交叉口
Figure BDA0003825655600000066
到第i个交叉口vi的最短距离;
定义当前第i个交叉口vi的后向距离为当前第i个交叉口vi到汇点交叉口的最短距离,定义维度为R×R的后向距离矩阵B={Bxj|x,j=1,2,3…R};其中,Bkj表示任意第x个交叉口vx到任意第j个交叉口vj的最短距离,令
Figure BDA0003825655600000067
表示从当前第i个交叉口vi到第ek个终点交叉口的后向距离;若
Figure BDA0003825655600000068
则表示没有找到从当前第i个交叉口vi到第ek个终点交叉口
Figure BDA0003825655600000069
的最短路径;若
Figure BDA00038256556000000610
则表示已经找到从当前第i个交叉口vi到第ek个终点交叉口
Figure BDA00038256556000000611
的最短路径;定义当前第i个交叉口vi的估价函数Tk(vi)为第k个源汇点交叉口对
Figure BDA00038256556000000612
中的第i个交叉口vi的前向距离Fk(vi)和后向距离
Figure BDA00038256556000000613
之和,定义估价函数的数组集合T={Tk(vi)|i=1,2,…R;k=1,2,…K};
定义Q为在搜索过程中估价函数值最小的交叉口集合;
将第k个源汇点交叉口对
Figure BDA0003825655600000071
中第sk个源点交叉口
Figure BDA0003825655600000072
到第ek个终点交叉
Figure BDA0003825655600000073
之间的最短路径上第i个交叉口vi的前驱交叉口记为λk(vi),定义前驱交叉口数组集合λ={λk(vi)|i=1,2,…R;k=1,2,…K};
初始化B={Bij=0|i,j=1,2,3…R},λ={λk(vi)=φ|i=1,2,…R;k=1,2,…K},k=1;
步骤4:当前第k个源汇点交叉口对
Figure BDA0003825655600000074
的向前搜索;
步骤4.1初始化;
获取第k个源汇点交叉口对
Figure BDA0003825655600000075
Figure BDA0003825655600000076
令当前交叉口记为vc,初始化第sk个源点交叉口
Figure BDA0003825655600000077
为当前交叉口vc,初始化Fk(vi)={+∞|i=1,2,…R},Tk(vi)={+∞|i=1,2,…R};当k=1时,如图3所示,获取第一个汇源点交叉口对<v4,v8>,令Q={v4},v4为当前交叉口vc,初始化F1(vi)={+∞|i=1,2,…8},T1(vi)={+∞|i=1,2,…R};当k=2时,如图10所示,获取第二个汇源点交叉口对<v1,v8>,令Q={v1},v1为当前交叉口vc,初始化F2(vi)={+∞|i=1,2,…8},T2(vi)={+∞|i=1,2,…R};
步骤4.2:若当前交叉口vc不是第ek个汇点交叉口
Figure BDA0003825655600000078
则遍历满足(vc,vn)∈A的邻居交叉口vn,若Fk(vc)+wcn<Fk(vn),则将Fk(vc)+wcn赋值给Fk(vn),将
Figure BDA0003825655600000079
赋值给Tk(vn),其中,Fk(vc)、Fk(vn)分别为计算k个源汇点交叉口对
Figure BDA00038256556000000710
时交叉口vc、vn的前向距离,wcn表示交叉口vc到交叉口vn的路段(vc,vn)的权重,
Figure BDA00038256556000000711
为计算k个源汇点交叉口对
Figure BDA00038256556000000712
时邻居交叉口vn的后向距离;设置vn的前驱交叉口λk(vn)为当前交叉口vc。当k=1时,在如图3所示当前交叉口为v4,继续向前搜索v4的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v2为当前交叉口如图4所示;继续向前搜索v2的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v1为当前交叉口如图5所示;继续向前搜索v1的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v6为当前交叉口如图6所示;继续向前搜索v6的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v3为当前交叉口如图7所示;继续向前搜索v3的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v5为当前交叉口如图8所示;继续向前搜索v5的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v8为当前交叉口如图9所示,此时当前交叉口为汇点交叉口v8为会汇点交叉口,停止继续搜索;当k=2时,在如图10所示当前交叉口为v1,继续向前搜索v1的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v6为当前交叉口如图11所示;继续向前搜索v6的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v2为当前交叉口如图12所示;继续向前搜索v2的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v3为当前交叉口如图13所示;继续向前搜索v3的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v7为当前交叉口如图14所示;继续向前搜索v7的邻居交叉口,更新各邻居交叉口的前向距离,估价函数及矩阵B,选择当前估价函数最小的交叉口v8为当前交叉口如图14所示,此时当前交叉口为汇点交叉口v8为会汇点交叉口,停止继续搜索;
若当前交叉口vc是第ek个汇点交叉口
Figure BDA0003825655600000081
则表示找到第k个源汇点交叉口对
Figure BDA0003825655600000082
的最短路径,并将vc的估价函数Tk(vc)赋值给源点
Figure BDA0003825655600000083
与汇点
Figure BDA0003825655600000084
的后向距离
Figure BDA0003825655600000085
将第k个源汇点交叉口对
Figure BDA0003825655600000086
从源汇点交叉口对集合VOD中移除后,如图9-10所示,转入步骤6;
步骤4.3:设交叉口vl为满足
Figure BDA0003825655600000087
vl∈V/Q的交叉口,其中,Tk(vl)为计算k个源汇点交叉口对
Figure BDA0003825655600000088
时交叉口vl的估价函数,Fk(vl)为计算k个源汇点交叉口对
Figure BDA0003825655600000089
时交叉口vl的前向距离,
Figure BDA00038256556000000810
为计算k个源汇点交叉口对
Figure BDA00038256556000000811
时交叉口vl的后向距离,将交叉口vl加入估价函数值最小的交叉口集合Q中,如图4Q中加入v2,图5Q中加入v1,图6Q中加入v6,图7Q中加入v3,图8Q中加入v5,图9Q中加入v7及汇点交叉口v8,图11Q中加入v6,图12Q中加入v2,图13Q中加入v3,图14Q中加入v7,图15Q中加入v4
步骤4.4:若交叉口vl到第ek个汇点交叉口
Figure BDA00038256556000000812
的后向距离
Figure BDA00038256556000000813
图4-7及图11-13当前节点的后向距离均为0,则设置交叉口vl为当前交叉口vc,并转入步骤5;
步骤4.5:若交叉口vl到第ek个汇点交叉口
Figure BDA00038256556000000814
的后向距离
Figure BDA00038256556000000815
如图8,图14当前节点的后向距离均为0,则表示找到源汇点交叉口对
Figure BDA00038256556000000816
最短路径,并将vl的估价函数Tk(vl)赋值给源点
Figure BDA00038256556000000817
与汇点
Figure BDA00038256556000000818
的后向距离
Figure BDA00038256556000000819
将第k个源汇点交叉口对
Figure BDA00038256556000000820
从源汇点交叉口对集合VOD中移除后,转入步骤6;
步骤5:当前交叉口vc的后向距离
Figure BDA0003825655600000091
时,更新后向距离矩阵B;
步骤5.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure BDA0003825655600000092
则将当前交叉口vc的前向距离Fk(vc)赋值给当前交叉口vc与源汇点交叉口
Figure BDA0003825655600000093
之间的后向距离
Figure BDA0003825655600000094
转入步骤4.2;否则转入步骤5.2;
步骤5.2将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fk(λ(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure BDA0003825655600000095
步骤5.3:将当前前驱交叉口的前驱交叉口λkk(vc))赋值给前驱交叉口λk(vc)后,转入步骤5.1;
步骤6:当前交叉口vc的后向距离
Figure BDA0003825655600000096
时,更新后向距离矩阵B;
步骤6.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure BDA0003825655600000097
则转入步骤7;否则转入步骤6.2;
步骤6.2:计算当前交叉口vc与其前驱交叉口之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fkk(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure BDA0003825655600000098
若当前交叉口vc为第ek个汇点交叉口
Figure BDA0003825655600000099
则转入步骤6.4;否则,执行步骤6.3;
步骤6.3:计算当前交叉口vc及其前驱交叉口λk(vc)与第ek个汇点交叉口
Figure BDA00038256556000000910
之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的估价函数Tk(vc)赋值给源点交叉口
Figure BDA00038256556000000911
与第ek个汇点交叉口
Figure BDA00038256556000000912
之间的后向距离
Figure BDA00038256556000000913
将源点交叉口
Figure BDA00038256556000000914
与第ek个汇点交叉口
Figure BDA00038256556000000915
之间的后向距离
Figure BDA00038256556000000916
减去当前交叉口vc的前驱交叉口λk(vc)的前向距离后再赋值给前驱交叉口λk(vc)与第ek个终点交叉口
Figure BDA00038256556000000917
之间的后向距离
Figure BDA00038256556000000918
步骤6.4:将λkk(vc))赋值给λk(vc)后,转入步骤6.1;
步骤7:判断是否已经找到所有源汇点交叉口对的最短路径:
如果源汇点交叉口对集合VOD=φ,则表示已找到所有源汇点交叉口对的最短路径;并根据前驱交叉口,逐个将K对源汇点交叉口对之间最短路径输出;
如果源汇点交叉口对集合VOD≠φ,则表示未找到所有源汇点交叉口对的最短路径,令源汇点交叉口对的次序k+1赋值给k后,转入步骤4;
本实施例中,一种电子设备,包括存储器以及处理器,该存储器用于存储支持处理器执行上述K对单源点单汇点最短路搜索方法的程序,该处理器被配置为用于执行所述存储器中存储的程序。
本实施例中,一种计算机可读存储介质,是在计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述K对单源点单汇点最短路搜索方法的步骤。
综上所述,本方案采用共用计算的思想,利用前次源汇点交叉口对计算更新的后向距离矩阵B,为后续源汇点交叉口计算最短路径提供精确后向距离估算,在A*框架之下,解决现有算法后向距离估计不精确且计算复杂的问题,快速获得新的精确后向距离,从而减少不必要计算、提高了K多次单源点单汇点最短路径计效率,为路径导航等应用提供技术支持,提高其反应速度,缩短反应时间,更好地为人们服务。

Claims (3)

1.一种基于共用计算的K对单源点单汇点最短路搜索方法,其特征在于,包括如下步骤:
步骤一:构建城市路网;
获取实时道路网络数据并得到城市路网G=(V,A,W),V表示交叉口集合,且V={v1,v2,v3,…,vi,…,vR},vi表示第i个交叉口,i=1,2,3,…,R,R为所述城市路网G中的交叉口总数,A表示交叉口之间的路段集合,且A={(vi,vj)|i,j=1,2,3,…,R},(vi,vj)表示第i个交叉口vi到第j个交叉口vj之间的有向路段,W表示交叉口之间路段的权重集合,W={wij|i,j=1,2,3,…,R},wij为有向路段(vi,vj)的权重,若第i个交叉口vi到第j个交叉口vj之间存在有向路段(vi,vj),则第j个交叉口vj为第i个交叉口vi的邻居交叉口,第i个交叉口vi为第j个交叉口vj的前驱交叉口,且ωij>0;若第i个交叉口vi到第j个交叉口vj之间不存在有向路段(vi,vj),则令ωij=+∞;
步骤2:获取目标源汇点交叉口对集合;
将待计算最短路的K个源汇点交叉口对加入目标源汇点交叉口集合
Figure FDA0004139562890000011
其中,
Figure FDA0004139562890000012
表示第k个源汇点交叉口对;
Figure FDA0004139562890000013
Figure FDA0004139562890000014
表示目标源汇点交叉口集合VOD中第sk个源点交叉口和第ek个汇点交叉口;
步骤3:参数定义及初始化;
定义当前第i个交叉口vi的前向距离为源点交叉口到当前第i个交叉口的最短距离,定义前向距离的数组集合F={Fk(vi)|i=1,2…R;k=1,2…K};Fk(vi)为第k个源汇点交叉口对
Figure FDA0004139562890000015
中的第sk个源点交叉口
Figure FDA0004139562890000016
到第i个交叉口vi的最短距离;
定义当前第i个交叉口vi的后向距离为当前第i个交叉口vi到汇点交叉口的最短距离,定义维度为R×R的后向距离矩阵B={Bxj|x,j=1,2,3…R};其中,Bxj表示任意第x个交叉口vx到任意第j个交叉口vj的最短距离,令
Figure FDA0004139562890000017
表示从当前第i个交叉口vi到第ek个终点交叉口的后向距离;若
Figure FDA0004139562890000018
则表示没有找到从当前第i个交叉口vi到第ek个终点交叉口
Figure FDA0004139562890000019
的最短路径;若
Figure FDA00041395628900000110
则表示已经找到从当前第i个交叉口vi到第ek个终点交叉口
Figure FDA00041395628900000111
的最短路径;
定义当前第i个交叉口vi的估价函数Tk(vi)为第k个源汇点交叉口对
Figure FDA00041395628900000112
中的第i个交叉口vi的前向距离Fk(vi)和后向距离
Figure FDA00041395628900000113
之和,定义估价函数的数组集合T={Tk(vi)|i=1,2,…R;k=1,2,…K};
定义Q为在搜索过程中估价函数值最小的交叉口集合;
将第k个源汇点交叉口对
Figure FDA0004139562890000021
中第sk个源点交叉口
Figure FDA0004139562890000022
到第ek个终点交叉口
Figure FDA0004139562890000023
之间的最短路径上第i个交叉口vi的前驱交叉口记为λk(vi),定义前驱交叉口数组集合λ={λk(vi)|i=1,2,…R;k=1,2,…K};
初始化B={Bij=0|i,j=1,2,3…R},λ={λk(vi)=φ|i=1,2,…R;k=1,2,…K},k=1;
步骤4:当前第k个源汇点交叉口对
Figure FDA0004139562890000024
的向前搜索;
步骤4.1初始化;
获取第k个源汇点交叉口对
Figure FDA0004139562890000025
Figure FDA0004139562890000026
令当前交叉口记为vc,初始化第sk个源点交叉口
Figure FDA0004139562890000027
为当前交叉口vc,初始化Fk(vi)={+∞|i=1,2,…R};
步骤4.2:若当前交叉口vc不是第ek个汇点交叉口
Figure FDA0004139562890000028
则遍历满足(vc,vn)∈A的邻居交叉口vn,若Fk(vc)+wcn<Fk(vn),则将Fk(vc)+wcn赋值给Fk(vn),将
Figure FDA0004139562890000029
赋值给Tk(vn),其中,Fk(vc)、Fk(vn)分别为计算k个源汇点交叉口对
Figure FDA00041395628900000210
时交叉口vc、vn的前向距离,wcn表示交叉口vc到交叉口vn的路段(vc,vn)的权重,
Figure FDA00041395628900000211
为计算k个源汇点交叉口对
Figure FDA00041395628900000212
时邻居交叉口vn的后向距离;设置vn的前驱交叉口λk(vn)为当前交叉口vc
若当前交叉口vc是第ek个汇点交叉口
Figure FDA00041395628900000213
则表示找到第k个源汇点交叉口对
Figure FDA00041395628900000214
的最短路径,并将vc的估价函数Tk(vc)赋值给源点
Figure FDA00041395628900000215
与汇点
Figure FDA00041395628900000216
的后向距离
Figure FDA00041395628900000217
将第k个源汇点交叉口对
Figure FDA00041395628900000218
从源汇点交叉口对集合VOD中移除后,转入步骤6;
步骤4.3:设交叉口vl为满足
Figure FDA00041395628900000219
vl∈V/Q的交叉口,其中,Tk(vl)为计算k个源汇点交叉口对
Figure FDA00041395628900000220
时交叉口vl的估价函数,Fk(vl)为计算k个源汇点交叉口对
Figure FDA00041395628900000221
时交叉口vl的前向距离,
Figure FDA00041395628900000222
为计算k个源汇点交叉口对
Figure FDA00041395628900000223
时交叉口vl的后向距离,将交叉口vl加入估价函数值最小的交叉口集合Q中;
步骤4.4:若交叉口vl到第ek个汇点交叉口
Figure FDA00041395628900000224
的后向距离
Figure FDA00041395628900000225
则设置交叉口vl为当前交叉口vc,并转入步骤5;
步骤4.5:若交叉口vl到第ek个汇点交叉口
Figure FDA00041395628900000226
的后向距离
Figure FDA00041395628900000227
则表示找到源汇点交叉口对
Figure FDA00041395628900000228
最短路径,并将vl的估价函数Tk(vl)赋值给源点
Figure FDA00041395628900000229
与汇点
Figure FDA00041395628900000230
的后向距离
Figure FDA00041395628900000231
将第k个源汇点交叉口对
Figure FDA00041395628900000232
从源汇点交叉口对集合VOD中移除后,转入步骤6;
步骤5:当前交叉口vc的后向距离
Figure FDA00041395628900000233
时,更新后向距离矩阵B;
步骤5.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure FDA0004139562890000031
则将当前交叉口vc的前向距离Fk(vc)赋值给当前交叉口vc与源汇点交叉口
Figure FDA0004139562890000032
之间的后向距离
Figure FDA0004139562890000033
转入步骤4.2;否则转入步骤5.2;
步骤5.2将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fk(λ(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure FDA0004139562890000034
步骤5.3:将当前前驱交叉口的前驱交叉口λkk(vc))赋值给前驱交叉口λk(vc)后,转入步骤5.1;
步骤6:当前交叉口vc的后向距离
Figure FDA0004139562890000035
时,更新后向距离矩阵B;
步骤6.1:若当前交叉口vc的前驱交叉口λk(vc)为源点交叉口
Figure FDA0004139562890000036
则转入步骤7;否则转入步骤6.2;
步骤6.2:计算当前交叉口vc与其前驱交叉口之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的前向距离Fk(vc)减去当前交叉口vc的前驱交叉口λk(vc)的前向距离Fkk(vc))后赋值给前驱交叉口λk(vc)与当前交叉口vc之间的后向距离
Figure FDA0004139562890000037
若当前交叉口vc为第ek个汇点交叉口
Figure FDA0004139562890000038
则转入步骤6.4;否则,执行步骤6.3;
步骤6.3:计算当前交叉口vc及其前驱交叉口λk(vc)与第ek个汇点交叉口
Figure FDA0004139562890000039
之间的最短路径值以更新B中对应元素的值,将当前交叉口vc的估价函数Tk(vc)赋值给源点交叉口
Figure FDA00041395628900000310
与第ek个汇点交叉口
Figure FDA00041395628900000311
之间的后向距离
Figure FDA00041395628900000312
将源点交叉口
Figure FDA00041395628900000313
与第ek个汇点交叉口
Figure FDA00041395628900000314
之间的后向距离
Figure FDA00041395628900000315
减去当前交叉口vc的前驱交叉口λk(vc)的前向距离后再赋值给前驱交叉口λk(vc)与第ek个终点交叉口
Figure FDA00041395628900000316
之间的后向距离
Figure FDA00041395628900000317
步骤6.4:将λkk(vc))赋值给λk(vc)后,转入步骤6.1;
步骤7:判断是否已经找到所有源汇点交叉口对的最短路径:
如果源汇点交叉口对集合VOD=φ,则表示已找到所有源汇点交叉口对的最短路径;并根据前驱交叉口,逐个将K对源汇点交叉口对之间最短路径输出;
如果源汇点交叉口对集合VOD≠φ,则表示未找到所有源汇点交叉口对的最短路径,令源汇点交叉口对的次序k+1赋值给k后,转入步骤4。
2.一种电子设备,包括存储器以及处理器,其特征在于,所述存储器用于存储支持处理器执行权利要求1所述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
3.一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1所述方法的步骤。
CN202211058176.3A 2022-08-30 2022-08-30 基于共用计算的k对单源点单汇点最短路搜索方法及应用 Active CN115394109B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211058176.3A CN115394109B (zh) 2022-08-30 2022-08-30 基于共用计算的k对单源点单汇点最短路搜索方法及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211058176.3A CN115394109B (zh) 2022-08-30 2022-08-30 基于共用计算的k对单源点单汇点最短路搜索方法及应用

Publications (2)

Publication Number Publication Date
CN115394109A CN115394109A (zh) 2022-11-25
CN115394109B true CN115394109B (zh) 2023-05-02

Family

ID=84124999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211058176.3A Active CN115394109B (zh) 2022-08-30 2022-08-30 基于共用计算的k对单源点单汇点最短路搜索方法及应用

Country Status (1)

Country Link
CN (1) CN115394109B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106340194A (zh) * 2016-09-06 2017-01-18 江苏智通交通科技有限公司 应急车辆信号优先控制方法
CN112991800A (zh) * 2021-03-03 2021-06-18 合肥工业大学 基于角度限制和双向搜索的城市路网最短路径获取方法
CN113781817A (zh) * 2021-09-28 2021-12-10 合肥工业大学 一种基于共用计算的城市路网多源最短路径获取方法
CN113808424A (zh) * 2021-09-28 2021-12-17 合肥工业大学 基于双向Dijkstra的城市路网K条最短路径的获取方法
CN114001747A (zh) * 2021-11-18 2022-02-01 合肥工业大学 基于共用计算和dijkstra算法的城市路网多源最短路径获取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2757504B1 (en) * 2013-01-17 2022-06-01 Google LLC Route planning

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106340194A (zh) * 2016-09-06 2017-01-18 江苏智通交通科技有限公司 应急车辆信号优先控制方法
CN112991800A (zh) * 2021-03-03 2021-06-18 合肥工业大学 基于角度限制和双向搜索的城市路网最短路径获取方法
CN113781817A (zh) * 2021-09-28 2021-12-10 合肥工业大学 一种基于共用计算的城市路网多源最短路径获取方法
CN113808424A (zh) * 2021-09-28 2021-12-17 合肥工业大学 基于双向Dijkstra的城市路网K条最短路径的获取方法
CN114001747A (zh) * 2021-11-18 2022-02-01 合肥工业大学 基于共用计算和dijkstra算法的城市路网多源最短路径获取方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
NA WANG 等.Shortest Path Routing With Risk Control for Compromised Wireless Sensor Networks.《IEEE Access》.2019,全文. *
丁建勋 等.基于改进K最短路算法的公交线网优化研究.《合肥工业大学学报》.2019,第第42卷卷(第第10期期),全文. *
马学森 ; 宫帅 ; 朱建 ; 唐昊 ; .动态凸包引导的偏优规划蚁群算法求解TSP问题.通信学报.2018,(第10期),全文. *

Also Published As

Publication number Publication date
CN115394109A (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
US9500487B2 (en) Shortest path determination for large graphs
Li et al. Topology-aware neural model for highly accurate QoS prediction
US20110251789A1 (en) Method and system for time-dependent routing
US20210124860A1 (en) High-throughput computational material simulation optimisation method and apparatus based on time prediction
Amin et al. iHPSA: An improved bio-inspired hybrid optimization algorithm for task mapping in Network on Chip
CN112328877B (zh) 时间依赖路网上多用户的skyline查询的方法
CN114967694A (zh) 一种移动机器人协同环境探索方法
CN111510334A (zh) 一种基于粒子群算法的vnf在线调度方法
CN115394109B (zh) 基于共用计算的k对单源点单汇点最短路搜索方法及应用
CN110689174A (zh) 基于公共交通的人员路线规划方法及装置
CN111623790B (zh) 一种面向动态城市交通路网的快速路径规划方法
KR20220037738A (ko) 분산전원 연계 경로 생성 장치 및 그 방법
CN117436627A (zh) 任务分配方法、装置、终端设备及介质
CN115547087B (zh) 基于两阶段法与方向诱导的城市路网最短路径获取方法及应用
CN115270377B (zh) 一种基于改进蚁群算法的多电缆最佳路径规划方法
CN111527734B (zh) 节点流量占比预测方法及装置
JP5049316B2 (ja) ネットワークトポロジ設計装置、ネットワークトポロジ設計方法、およびプログラム
CN110083780B (zh) 基于复杂网络模型中社团划分的个性化推荐方法
CN113065073A (zh) 一种城市的有效路径集搜索方法
CN105488289A (zh) 分布式环境下动态图结构匹配的方法
CN114093188B (zh) 一种基于spfa算法的城市k则最短路径获取方法
Kang et al. Learning scalable and transferable multi-robot/machine sequential assignment planning via graph embedding
Abeywickrama et al. Bipartite matching: What to do in the real world when computing assignment costs dominates finding the optimal assignment
CN105550765B (zh) 一种路网距离计算中的代表元选取方法
CN104881426B (zh) 一种关键字查询方法与装置

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