一种基于SPFA算法的城市K则最短路径获取方法技术

技术编号:32460351 阅读:11 留言:0更新日期:2022-02-26 08:47
本发明专利技术公开了一种基于SPFA算法的城市K则最短路径获取方法,包括:1.获取实时城市道路路网图;2.为每个交叉口节点初始化可变列表标签;3.通过Q

【技术实现步骤摘要】
一种基于SPFA算法的城市K则最短路径获取方法


[0001]本专利技术属于车载导航路径优化领域,具体的说是一种基于SPFA算法的城市K则最短路径的获取方法。

技术介绍

[0002]随着城市道路网规模的不断扩大,一对起讫点之间的旅程选择可以有多条不同路径,并且随着当前导航用户的使用量增大,以及导航效果与实时路况的信息时效性息息相关,人们对于算法的要求越来越高。
[0003]常见的导航中为获取最短路径所使用的算法,其计算过程在大规模城市道路网中所涉及的范围非常大,耗时和资源占用随之增大,因此,用资源数量换取效率质量的方法是普遍的应对方案;在进一步解决K则最短路问题上,不同学者设计了如“重构网络”、“删边法”等不同算法来应对,然而这些方法应用在计算机处理器上无疑使得工作负荷量庞大,不适用于对效率有较高要求的实时性导航的理念。
[0004]当今导航用户的现实需求越来越高,在保证求解效率和最优路径质量的基础上,不予遗漏地提供K条最短路选择是城市导航设备发展的趋势之一。

技术实现思路

[0005]本专利技术是为了解决上述现有技术存在的不足之处,提出一种基于SPFA算法的城市K则最短路径的获取方法,以期能在有效提升大规模路网导航规划的计算效率的同时,满足用户的多路径导航需求。
[0006]本专利技术为达到上述专利技术目的,采用如下技术方案:
[0007]本专利技术一种基于SPFA算法的城市K则最短路径获取方法的特点是按如下步骤进行:
[0008]步骤1:定义参数并初始化;r/>[0009]获取实时道路网络数据并得到城市路网图G=(V,A),V表示交叉口节点集合,且V={v1,v2,v3,...,v
n
,...,v
N
},v
n
表示第n个交叉口节点,n=1,2,3...N,N表示交叉口节点的总数;令v
s
表示起点交叉口节点,v
e
表示终点交叉口节点;任意第n个交叉口节点v
n
具有可变列表标签D(v
n
),其中,第k个子标签为(d
k
(v
n
),p
k
(v
n
)),d
k
(v
n
)表示从起点交叉口节点v
s
到达城市路网图G中第n个交叉口节点v
n
的当前第k短路径距离值,p
k
(v
n
)表示到达第n个交叉口节点v
n
所需路径距离值d
k
(v
n
)所对应的v
n
的前驱交叉口节点子标签信息;A表示交叉口节点之间的有向路段集合,且A={a
ij
=(v
i
,v
j
)|i,j=1,2,...Q},(v
i
,v
j
)表示第i个交叉口v
i
到第j个交叉口v
j
之间的路段,令ω
i,j
为路段(v
i
,v
j
)的权值,若交叉口节点v
i
和v
j
之间没有路段相连,则令ω
i,j
=+∞;
[0010]定义所需最短路径条数为K;
[0011]定义列表R,用于任意交叉口节点在路径回溯过程中,存储其所在路径的每一个前驱交叉口节点;
[0012]定义列表用于存储当前第t次迭代时,更新终点交叉口节点v
e
的第k条最短路径的交叉口节点所对应的可变列表标签中的子标签;
[0013]定义集合用于暂存备用交叉口节点所对应的可变列表标签中的子标签;
[0014]初始化可变列表标签D(v
n
),n∈N,v
n
≠v
s
,其中第一个子标签(d1(v
n
),p1(v
n
))为即最短路径距离值d1(v
n
)初始化为+∞,并记其前驱交叉口点p1(v
n
)初始化为其余所有子标签均为空;初始化起点交叉口节点v
s
的可变列表标签D(v
s
)的第一个子标签为
[0015]初始化k=1,t=1;
[0016]初始化列表即加入起点交叉口节点v
s
的第一个子标签;
[0017]步骤2:计算第k短路径;
[0018]当时,转步骤2.6;否则,从中取得第一个子标签1≤k'≤k;然后创建集合N(v
first
),并加入当前交叉口节点v
first
的所有邻接交叉口节点;
[0019]步骤2.1:前向搜索:
[0020]取出N(v
first
)中第一个邻接交叉口节点,记作v
first,next
,然后转步骤2.1.1;
[0021]步骤2.1.1:环路检测;
[0022]步骤2.1.1.1:清空R后,通过v
first,next
的前驱交叉口节点v
first
的第k'个子标签取出前驱交叉口节点子标签信息其对应的节点作为v
first
的前驱交叉口节点v
first,pre
,并将v
first,pre
存入列表R中;
[0023]步骤2.1.1.2:再根据步骤2.1.1.1中取出的v
first,pre
的子标签1≤k”≤k';取出前驱交叉口节点子标签信息其对应的节点作为v
first,pre
的前驱交叉口节点并存入列表R中。同理继续回溯寻找前驱交叉口节点,直到所取出的前驱交叉口节点子标签信息为即回溯至起点交叉口v
s
时为止;
[0024]步骤2.1.1.3:若即完成v
first
的所有邻接交叉口节点的更新,转步骤2.5;若且列表R内包含通过前向更新得到的邻接交叉口节点v
first,next
,则表明v
first,next
的引入使得环路存在,并返回步骤2.1;否则,转步骤2.1.2继续执行;
[0025]步骤2.1.2:更新邻接交叉口节点的距离值;
[0026]根据子标签中的计算从起点交叉口节点v
s
经过v
first
到达v
first,next
的临时距离值其中,ω
first,next
表示从v
first
到达v
first,next
的相连路径的路段权值;
[0027]步骤2.2:插入排序;
[0028]将临时距离值d
t
(v
first,next
)与v
f本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于SPFA算法的城市K则最短路径获取方法,其特征是按如下步骤进行:步骤1:定义参数并初始化;获取实时道路网络数据并得到城市路网图G=(V,A),V表示交叉口节点集合,且V={v1,v2,v3,...,v
n
,...,v
N
},v
n
表示第n个交叉口节点,n=1,2,3...N,N表示交叉口节点的总数;令v
s
表示起点交叉口节点,v
e
表示终点交叉口节点;任意第n个交叉口节点v
n
具有可变列表标签D(v
n
),其中,第k个子标签为(d
k
(v
n
),p
k
(v
n
)),d
k
(v
n
)表示从起点交叉口节点v
s
到达城市路网图G中第n个交叉口节点v
n
的当前第k短路径距离值,p
k
(v
n
)表示到达第n个交叉口节点v
n
所需路径距离值d
k
(v
n
)所对应的v
n
的前驱交叉口节点子标签信息;A表示交叉口节点之间的有向路段集合,且A={a
ij
=(v
i
,v
j
)|i,j=1,2,...Q},(v
i
,v
j
)表示第i个交叉口v
i
到第j个交叉口v
j
之间的路段,令ω
i,j
为路段(v
i
,v
j
)的权值,若交叉口节点v
i
和v
j
之间没有路段相连,则令ω
i,j
=+∞;定义所需最短路径条数为K;定义列表R,用于任意交叉口节点在路径回溯过程中,存储其所在路径的每一个前驱交叉口节点;定义列表用于存储当前第t次迭代时,更新终点交叉口节点v
e
的第k条最短路径的交叉口节点所对应的可变列表标签中的子标签;定义集合用于暂存备用交叉口节点所对应的可变列表标签中的子标签;初始化可变列表标签D(v
n
),n∈N,v
n
≠v
s
,其中第一个子标签(d1(v
n
),p1(v
n
))为即最短路径距离值d1(v
n
)初始化为+∞,并记其前驱交叉口点p1(v
n
)初始化为其余所有子标签均为空;初始化起点交叉口节点v
s
的可变列表标签D(v
s
)的第一个子标签为初始化k=1,t=1;初始化列表即加入起点交叉口节点v
s
的第一个子标签;步骤2:计算第k短路径;当时,转步骤2.6;否则,从中取得第一个子标签中取得第一个子标签然后创建集合N(v
first
),并加入当前交叉口节点v
first
的所有邻接交叉口节点;步骤2.1:前向搜索:取出N(v
first
)中第一个邻接交叉口节点,记作v
first,next
,然后转步骤2.1.1;步骤2.1.1:环路检测;步骤2.1.1.1:清空R后,通过v
first,next
的前驱交叉口节点v
first
的第k'个子标签取出前驱交叉口节点子标签信息其对应的节点作为v
first
的前驱交叉口节点v
first,pre
,并将v
first,pre
存入列表R中;步骤2.1.1.2:再根据步骤2.1.1.1中取出的v
first,pre
的子标签的子标签取出前驱交叉口节点子标签信息
其对应的节点作为v
first,pre
的前驱交叉口节点并存入列表R...

【专利技术属性】
技术研发人员:丁建勋樊哲延颜江楠曾嘉涵殷慧娟黄林煊樊银超徐小明龙建成
申请(专利权)人:合肥工业大学
类型:发明
国别省市:

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

1