一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2021-12-17 22:06:00 来源:中国专利 TAG:

技术特征:
1.一种基于双向dijkstra的城市路网k条最短路径的获取方法,其特征是按如下步骤进行:步骤1:定义参数并初始化:获取实时道路网络数据并得到城市路网图g=(v,a),v表示交叉口集合,且v={v1,v2,v3,...,v
q
,...,v
q
},设城市路网图g中需要规划的起点交叉口为v
s
∈v,终点交叉口为v
t
∈v,v
q
表示第q个交叉口,且v
q
=(d
q
,v
q,pre
,v
q,root
),其中,v
q,root
表示第q个交叉口v
q
的所在路径的根交叉口节点,v
q,root
∈{v
s
,v
t
},d
q
表示从根交叉口节点v
q,root
到达第q个交叉口v
q
的途经距离,v
q,pre
表示第q个交叉口v
q
的前驱交叉口节点,v
q,pre
∈v,q=1,2,3...q,q表示交叉口的总数,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
)的权值;定义叶子交叉口节点为双向搜索过程中,由根交叉口节点探索出的路径树结构中度为“1”的节点;定义当前搜索次数为t,并定义d
f,t
、d
b,t
分别为用于记录当前第t次搜索的路径树结构中,从前向和后向搜索的各叶子交叉口节点的集合;定义集合用于记录所有叶子交叉口节点中离自身的根节点距离值最小所对应的叶子交叉口节点;定义双向搜索过程中叶子交汇交叉口节点集用于记录在当前第t次搜索下所有能够双向交汇的叶子交叉口节点;将叶子交汇交叉口节点集中对应的节点组成叶子交汇交叉口节点对并存入集合p中,用于存储所有产生的连通路径;定义存储路径树结构中新增的一个叶子交叉口节点v
i
所在路径的前驱交叉口节点的列表为r(v
i
);确定所需最短路径条数为k,定义当前最短路径条数为k,并初始化k=0,第k条最短路径的路程记为初始化起点交叉口节点终点交叉口节点初始化t=1;并将起点交叉口v
s
加入当前第t次前向搜索的集合d
f,t
,将终点交叉口v
t
加入当前第t次后向搜索的集合d
b,t
;步骤2:找出d
f,t
、d
b,t
中途经距离值最小的叶子交叉口节点v
min
,从而得到当前第t次搜索的集合再随机选择集合中的叶子交叉口节点中根交叉口节点相同的所有叶子交叉口节点,并依次将第t次搜索时根交叉口节点相同的叶子交叉口节点,作为第t 1次所要搜索得到的叶子交叉口节点的前驱交叉口节点放入集合若根交叉口节点为起点交叉口v
s
,则从有向路段集合a中依次找出前驱交叉口节点集合中每个前驱交叉口节点所能到达的邻接交叉口节点;其中,记任意一个前驱交叉口节点v
min
所能到达的一个邻接交叉口节点为v
j
,转步骤2.1;若根交叉口节点为终点交叉口v
t
,则从有向路段集合a中依次找出前驱交叉口节点集合中能够达到每个前驱交叉口节点的邻接交叉口节点;其中,记达到任意一个前驱交叉口节点v
min
的一个邻接交叉口节点为v
j
,转步骤2.1;
步骤2.1:判断每个邻接交叉口节点是否符合要求;如果寻找的路径允许包含环路,且根交叉口节点为起点交叉口v
s
,则转步骤2.3;如果寻找的路径允许包含环路,且根交叉口节点为终点交叉口v
t
,则转步骤2.4;如果寻找的路径不允许包含环路,则先将邻接交叉口节点v
j
的前驱交叉口节点v
min
加入列表r(v
j
)中,然后从前驱交叉口节点v
min
开始向根交叉口节点进行回溯,且每回溯一个前驱交叉口节点就加入列表r(v
j
)中,若r(v
j
)中存在与邻接交叉口节点v
j
相同的前驱交叉口节点,则表示v
j
的引入使得环路存在,直接将邻接交叉口节点v
j
舍弃,继续判断下一个邻接交叉口节点,否则,表示无环路,并执行步骤2.2;步骤2.2:当根交叉口节点为起点交叉口v
s
,则转步骤2.3;当根交叉口节点为终点交叉口v
t
,则转步骤2.4;步骤2.3:将邻接交叉口节点记为然后更新集合d
f,t 1
=d
f,t
∪{v
j
};其中,ω
min,j
表示前驱交叉口节点v
min
到其邻接交叉口节点v
j
的路段权值,表示前驱交叉口节点v
min
到其根交叉口节点的途经距离;当找完前驱交叉口节点v
min
的所有邻接交叉口节点并完成判断后,从d
f,t
中将相应的前驱交叉口节点v
min
删除,更新d
f,t 1
=d
f,t
\{v
min
};当找完所有前驱交叉口节点的邻接交叉口节点后,将t 1赋值给t后,执行步骤3;步骤2.4:将邻接交叉口节点记为v
j
=(d
min
ω
j,min
,v
min
,v
t
),更新集合d
b,t 1
=d
b,t
∪{v
j
};其中,ω
j,min
表示v
min
的邻接交叉口节点v
j
到前驱交叉口节点v
min
的路段权值,表示前驱交叉口节点v
min
到它的根交叉口节点的途经距离;当找完前驱交叉口节点v
min
的所有邻接交叉口节点并完成判断后,从d
b,t
中将相应的前驱交叉口节点v
min
删除,更新d
b,t 1
=d
b,t
\{v
min
};当找完所有前驱交叉口节点的邻接交叉口节点后,将t 1赋值给t后,执行步骤3;步骤3:运算若即表示存在一组或多组交汇交叉口节点,则将其中每一组交汇交叉口节点所对应的前向搜索出的叶子交叉口节点v
i
=(d
i
,v
i,pre
,v
s
)和后向搜索出的叶子交叉口节点v

i
=(d

i
,v

i,pre
,v
t
)组成交汇交叉口点对(v
i
,v

i
)并加入集合p,且(v
i
,v

i
)路径长度d
i,len
=d
i
d

i
,并转步骤4;若即表示没有新的交汇交叉口点对构成新路径,并返回步骤2顺序执行;步骤4:计算第t次双向搜索的最短路判断条件其中,表示第t次前向搜索的叶子交叉口节点集合d
f,t
中所有叶子交叉口节点的最小途经距离d,即中所有叶子交叉口节点的最小途经距离d,即表示第t次后向搜索的叶子交叉口节点集合d
b,t
中所有叶子交叉口节点的最小途经距离d,即步骤5:取集合p中所有交汇交叉口节点对的路径长度的点对加入集合中,然后将集合p中点对的路径长度d
i,len
从小到大进行排序,并分别作为第k 1条至第k n条最短路,其中,n=集合的长度将集合排序后的路径长度d
i,len
依次赋值给
至并分别从路径长度所对应的交汇交叉口点对开始分别前向回溯至v
s
、后向回溯至v
t
,并将回溯过程中的所有交叉口节点连接形成为一条完整路径,最后从集合p中删除集合中的交汇交叉口点对,从而更新集合p,更新k为k n;转步骤6;若找不到的点对,则返回步骤2顺序执行;步骤6:判断k是否大于等于k,若是,则表示已获得k条最短路,并终止路径搜索,从前k条最短路中取前k条最短路最为结果输出,否则,继续判断p为空,且第t次搜索过程中集合中的每个节点均找不到其他邻接交叉口节点是否成立,若成立,则表示只能获得k条最短路,并终止路径搜索;否则,返回步骤2顺序执行。

技术总结
本发明公开了一种基于双向Dijkstra的城市路网K条最短路径的获取方法,包括:1.获取实时城市道路路网图;2.使用D


技术研发人员:丁建勋 颜江楠 樊哲延 殷慧娟 黄林煊 曾嘉涵 查菲菲 徐小明 龙建成
受保护的技术使用者:合肥工业大学
技术研发日:2021.09.28
技术公布日:2021/12/16
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献