掌桥专利:专业的专利平台
掌桥专利
首页

路径规划方法、装置、计算机设备和存储介质

文献发布时间:2024-04-18 19:57:31


路径规划方法、装置、计算机设备和存储介质

技术领域

本申请涉及网络技术领域,特别是涉及一种路径规划方法、装置、计算机设备和存储介质。

背景技术

随着网络技术的发展,出现了交通规划、机器人运动控制、游戏AI、无人机航线规划、物流配送、电子地图与导航等应用场景,这些场景中需要对路径进行规划,例如确定最短路径。

传统技术中,采用Dijkstra算法等算法来实现路径规划。

然而,Dijkstra算法等所需的数据存储空间较高,且不支持负数权值。不仅需要更多的空间开销,而且所适用的场景也有限。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

基于此,有必要针对上述技术问题,提供一种能够在更小的空间开销下支持正负权值的路径规划方法、装置、计算机设备和存储介质。

一种路径规划方法,所述方法包括:

从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值;

确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;

基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值;

若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

在一可选实施例中,所述确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值之后,还包括:

若所述当前起始节点是根节点,则以所述当前结束节点为所述根节点的子节点,构造多叉树;

若所述当前起始节点不是根节点,则将所述当前起始节点作为上一节点的子节点,以所述当前结束节点为所述当前起始节点的子节点,构造多叉树;

相应的,所述基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,包括:

确定从根节点到所述当前结束节点中各个路段特征值之和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

在一可选实施例中,所述若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,包括:

若所述待分析路径图中仅存在正路段特征值,或者,所述待分析路径图中存在负路段特征值且需要输出相对最短路径的情况下,则将所述最小连线路径特征值对应的路径确定为目标最短路径;

若所述待分析路径图中存在负路段特征值且需要输出绝对最短路径的情况下,则确定所述最小连线路径特征值对应的所述当前结束节点是否存在子节点,并根据判断结果确定目标最短路径。

在一可选实施例中,所述确定所述最小连线路径特征值对应的所述当前结束节点是否存在子节点,并根据判断结果确定目标最短路径,包括:

若确定所述当前结束节点存在子节点,则将所述最小连线路径特征值对应的所述当前结束节点作为所述当前起始节点并继续确定最小连线路径特征值的步骤,直至当前结束节点中均不存在子节点;

若确定所述当前结束节点不存在子节点,则将所述最小连线路径特征值对应的路径确定为目标最短路径。

在一可选实施例中,所述确定从根节点到所述当前结束节点中各个路段特征值之和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值,包括:

若所述待分析路径图中存在负路段特征值且计算模式为正路段特征值计算模式,则确定从根节点到所述当前结束节点中各个路段特征值绝对值的和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

在一可选实施例中,每次构造或调整多叉树之后,还包括:

若构造或调整得到的多叉树中存在至少两个相同的叶子节点,则确定从根节点分别到这些叶子节点之间的路径的连线路径特征值,仅在多叉树中保留连线路径特征值最小的路径。

在一可选实施例中,若所述待分析路径图中存在负路段特征值,则所述仅在多叉树中保留连线路径特征值最小的路径之后,还包括:

对于任意一个叶子节点,将其作为目标叶子节点;

确定多叉树剩下的路径中是否存在与所述目标叶子节点为同一内容的目标父节点;

若存在,则分别确定从根节点到所述目标叶子节点以及到所述目标父节点之间路径的连线路径特征值;

若所述目标父节点对应的连线路径特征值长于所述目标叶子节点对应的连线路径特征值,则将所述目标父节点下的所有子节点搬移作为所述目标叶子节点的子节点。

一种路径规划装置,所述装置包括:

路径图读取模块,用于从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值;

特征值获取模块,用于确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;

最小特征值确定模块,用于基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值;

最短路径确定模块,用于若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值;

确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;

基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值;

若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值;

确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;

基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值;

若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

上述路径规划方法,读取待分析路径图并提取待分析路径图中各个路段线携带的路段特征值;确定当前起始节点与各个当前结束节点之间的当前路段线,并获取当前路段线的路段特征值;基于当前路段线的路段特征值,确定从目标起始节点到当前结束节点的连线路径特征值,并在连线路径特征值中确定最小连线路径特征值;若最小连线路径特征值对应的当前结束节点为目标结束节点,则根据最小连线路径特征值对应的路径确定目标最短路径,并输出目标最短路径。在包含正负路段特征值的情况下,仅需极少的空间开销,就可以高效确定最短路径。相应地,本申请提供的路径规划装置、设备及存储介质,也同样具有上述技术效果。

附图说明

图1为一个实施例中路径规划方法的流程示意图;

图2为一个实施例中待分析路径图的示意图;

图3为一个实施例中构造多叉树的示意图;

图4为另一个实施例中构造多叉树的示意图;

图5为又一个实施例中构造多叉树的示意图;

图6为一个实施例中节点迁移的示意图;

图7为一个实施例中路径规划装置的结构框图;

图8为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种路径规划方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

本实施例中,该方法包括以下步骤:

S101,从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值。

为了追求极致的计算性能,在海量的循环计算内提高性能,本申请实施例采用以下技术:1)一次性分配内存,尽可能避免甚至完全不要动态分配内存,即使是在栈上;2)尽量降低循环次数;3)尽量找到提前结束循环的条件;4)尽量减少运算、比较和赋值;5)采用优先队列替代遍历。可一次性分配节点,尽管是多叉树的形式,但是每个节点不会发生重复,因此只需要一次分配内存即可,计算过程中只需要更新节点指针指向即可。因此,本申请实施例在需要进行路径规划时,直接一次性从内存中读取待分析路径图,不仅可以提高数据存储时的性能,也可以提高数据读取时的性能,进而提高路径规划效率。

待分析路径图的示意图如图2所示,该待分析路径图中包含A/B/C/D/E/F六个节点,节点之间存在连接线,这些连接线就是路段线,各个路段线上携带有路段特征值。其中,路段特征值为连接线上的权值,可以为正值也可以为负值,图2中的路段特征值均为正值。可选的,路段线可以包含方向也可以不包含方向,在路段线包含方向时,待分析路径图为有向图,在路段线均不包含方向时,待分析路径图为无向图。路段线的方向在其实际应用场景中有其实际含义,例如,A→E表示由A到E的单向路段,其对应的路段特征值可以表示由A行驶到E的路程,如果由E行驶到A,则路段特征值可能不同。图2中各个路段线包含方向,因此图2中的待分析路径图为有向图。

在一可选实施例中,所述从内存中一次性读取待分析路径图之后还包括:从所述待分析路径图确定孤立节点,并将所述孤立节点从所述待分析路径图中滤除;其中,所述孤立节点为所述待分析路径图中存在一条及以下路段线的节点。如图2所示,节点F至存在一条与E连接的路段线,为孤立节点,将其滤除,在后续确定最短路径的过程中不再纳入考虑范围。

为便于说明,后续以目标起始节点为A,目标结束节点为D为例进行说明。即,在无特别说明时,本申请实施例的目标为确定A→D的最短路径。

S102,确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点。

如图3所示,假设当前起始节点为A,则与之存在连接关系的节点B/D/E就是当前结束节点。获取这三条路段线对应的路段特征值分别为30/100/50。

可选的,当前结束节点可以为当前起始节点的子节点,但不能为父节点。进一步地,在有向图中,当前结束节点可以为当前起始节点所指向的子节点。

S103,基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值。

若当前起始节点就是目标起始节点,如图3所示,则对应的连线路径特征值就是当前路段线的路段特征值,即30/100/50。若当前起始节点不是目标起始节点,则可以确定从目标起始节点开始到当前结束节点的各个路段线,根据这些路段线的路段特征值得到连线路径特征值,经过数值大小比较确定其中的最小连线路径特征值。

S104,若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

若最小连线路径特征值对应的当前结束节点为目标结束节点,说明已经找到从目标起始节点到目标结束节点之间的路径,而且该条路径为所找到的所有路径中的最短路径,因此,将该路径确定为目标最短路径并进行输出。

可选的,输出目标最短路径可以是将目标最短路径通过图片、音视频等方式进行输出。进一步的,可以结合实际的应用场景来输出目标最短路径,以导航场景为例,在得到目标最短路径之后,通过路径指引的方式在屏幕输出对应的导航指引线路,以引导用户从A地以最快地速度到达D地。

可选的,在确定目标最短路径的过程中,还可以结合路径节点数量来进行。在路径节点数量对应层级的节点中,如果存在目标结束节点,则直接将该目标结束节点对应的路径认为是符合要求的目标最短路径。进一步的,如果要求最小路径节点数量,则只要找到从目标起始节点到目标结束节点的路径,则将该路径作为目标最短路径输出。这种处理方式对于节点层级较多时,可以有效简化计算量。

上述路径规划方法中,读取待分析路径图并提取待分析路径图中各个路段线携带的路段特征值;确定当前起始节点与各个当前结束节点之间的当前路段线,并获取当前路段线的路段特征值;基于当前路段线的路段特征值,确定从目标起始节点到当前结束节点的连线路径特征值,并在连线路径特征值中确定最小连线路径特征值;若最小连线路径特征值对应的当前结束节点为目标结束节点,则根据最小连线路径特征值对应的路径确定目标最短路径,并输出目标最短路径。在包含正负路段特征值的情况下,其空间复杂度为节点级,即仅有节点数量确定,并没有循环处理等复杂逻辑,仅需极少的空间开销,就可以高效确定最短路径。而且,采用本方案还可以有效降低时间复杂度,时间复杂度可以达到O(N),其中N为节点个数。

在一可选实施例中,所述确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值之后,还包括:若所述当前起始节点是根节点,则以所述当前结束节点为所述根节点的子节点,构造多叉树;若所述当前起始节点不是根节点,则将所述当前起始节点作为上一节点的子节点,以所述当前结束节点为所述当前起始节点的子节点,构造多叉树;相应的,所述基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,包括:确定从根节点到所述当前结束节点中各个路段特征值之和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

如图3所示,当前起始节点为A,A也为目标起始节点,则直接以A为根节点,B/D/E为子节点构造多叉树。如图4所示,在前期已经对A节点对应的多叉树进行了分析而当前起始节点为B的情况下,将B作为A的子节点,与B连接的C和E作为B的子节点,进而构造多叉树。可选地,本申请实施例通过逐层构造多叉树的方式,能够实现逐层路径筛选,在多叉树的构造过程中就可以确定最短路径,路径规划效率高。

进一步地,基于所构造的多叉树确定从目标起始节点到所述当前结束节点的连线路径特征值。如图3所示,从目标起始节点到当前结束节点的连线路径特征值分别为A→B/A→D/A→E:30/100/50。如图4所示,从目标起始节点到当前结束节点的连线路径特征值分别为A→B→C/A→D/A→E:70/100/50。

在一可选实施例中,所述若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,包括:若所述待分析路径图中仅存在正路段特征值,或者,所述待分析路径图中存在负路段特征值且需要输出相对最短路径的情况下,则将所述最小连线路径特征值对应的路径确定为目标最短路径;若所述待分析路径图中存在负路段特征值且需要输出绝对最短路径的情况下,则确定所述最小连线路径特征值对应的所述当前结束节点是否存在子节点,并根据判断结果确定目标最短路径。

在一可选实施例中,所述确定所述最小连线路径特征值对应的所述当前结束节点是否存在子节点,并根据判断结果确定目标最短路径,包括:若确定所述当前结束节点存在子节点,则将所述最小连线路径特征值对应的所述当前结束节点作为所述当前起始节点并继续确定最小连线路径特征值的步骤,直至当前结束节点中均不存在子节点;若确定所述当前结束节点不存在子节点,则将所述最小连线路径特征值对应的路径确定为目标最短路径。

可选地,继续确定最小连线路径特征值的步骤即为,继续执行以下步骤:确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值。

其中,待分析路径图支持负路段特征值。而且待分析路径图默认存在正路段特征值,负路段特征值有时存在有时则不存在。本申请实施例支持负路段特征值,并且对存在负路段特征值和不存在负路段特征值时进行针对性不同的处理,以保证路径划分的准确可靠。

可选地,本申请实施例提供以下计算方式:

1)支持相对最短路径(注意:在只有正权值的有向图中,该模式得到的就是绝对最短路径);

2)支持绝对最短路径(注意:在只有正权值的有向图中,尽量不使用该模式,否则会带来没有意义的额外开销)。

对相对最短路径进行解释说明:通过上面对算法计算模式的描述可知,相对最短路径是针对支持负权值的有向图的,正权值有向图得到的就是绝对最短路径(在正权值有向图中,已有最短路径后,不会有更优解,因此其就是最优解)。而何为支持负权值有向图的相对最短路径,可以理解为:在某一个结果集里,已经得到了最短路径,但是在之后的计算中可能仍然存在更优解,但不再继续往后运算,而是以当前的最佳结果作为路径规划的结果。

可选的,如图5所示,在当前起始点为E的情况下构造多叉树,树中最短路径是A→E→D:60,由于已经达到了目的地,且是树中最短的路径(小于其他支路,A→B→C:70),因此不需要再进行辐射,至此寻路结束。在支持负权值的情况,若需要相对最短路径,也可以结束;但是如果需要绝对最短路径,仍然需要继续辐射,直到没有节点可以继续添加为止。

在一可选实施例中,所述确定从根节点到所述当前结束节点中各个路段特征值之和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值,包括:若所述待分析路径图中存在负路段特征值且计算模式为正路段特征值计算模式,则确定从根节点到所述当前结束节点中各个路段特征值绝对值的和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

其中,正路段特征值计算模式指的是,在该模式下,所有的路段特征值的正负号会被忽略,都会被当做正路段特征值。

由于在支持正权值和负权值行有所差异,为了避免出现参数中有向图存在负权值而计算模式指定为正权值的情况,默认不区分正权值和负权值,按统一的算法运行。在针对正权值的场景,这种处理方式不会带来额外的开销。

在一可选实施例中,每次构造或调整多叉树之后,还包括:若构造或调整得到的多叉树中存在至少两个相同的叶子节点,则确定从根节点分别到这些叶子节点之间的路径的连线路径特征值,仅在多叉树中保留连线路径特征值最小的路径。

如图3所示,构造多叉树之后对各个路径进行分析,确定最短路径为A→B。以B点为出发点继续辐射(不能辐射到父节点),如图4所示,此时E点被访问两次(A→B→E和A→E),但是A→B→E的开销大于A→E,因此丢弃掉分支A→B→E。

此时树中最短分支是:A→E,因此以E点进行辐射。如图5所示,E点发射到B和D均是已经出现过的,根据上一条的规则知道,A→D和A→E→B这两条路径将被丢弃:A→D大于A→E→D,A→E→B大于A→B。此后树中最短路径是A→E→D:60。由于已经达到了目的地,且是树中最短的路径(小于其他支路,A→B→C:70),因此不需要再进行辐射,至此寻路结束。

在一可选实施例中,若所述待分析路径图中存在负路段特征值,则所述仅在多叉树中保留连线路径特征值最小的路径之后,还包括:对于任意一个叶子节点,将其作为目标叶子节点;确定多叉树剩下的路径中是否存在与所述目标叶子节点为同一内容的目标父节点;若存在,则分别确定从根节点到所述目标叶子节点以及到所述目标父节点之间路径的连线路径特征值;若所述目标父节点对应的连线路径特征值长于所述目标叶子节点对应的连线路径特征值,则将所述目标父节点下的所有子节点搬移作为所述目标叶子节点的子节点。

本申请实施例在执行过程中会缓存并更新一些信息,如到根节点的权值、子节点的权值等,基于所缓存的根节点的权值、子节点的权值等即可将对应的数据进行嫁接。如图6所示,以E点为出发点,辐射至B点导致B点重复,而A→B:80是大于A→E→B:70的,且原本B点有子树。此时可以将B点子树搬移到新的B点下即可,此时发现A→D已经是树中最短路径的话,即可结束辐射,最短路径即为A→D:100。但是实际上,容易想到在正权值得到有向图中不可能发生该情况,但是在支持负权值的有向图中,是存在该可能的。

本申请还提供一种路径规划方法,包括以下步骤:

1)以此图2为例:求解A→D的最短路。

2)首先,A出发的可达目的地有B、D、E,将其构造成如图3中右侧小图所示的一棵多叉树。

3)可以发现,从A已经到达D点,但是可能并不是最优的(此时并不是树中的最短路径,如果指定算法的计算模式为最少节点个数,则在添加节点D时,已经可以结束了,此时路径就是A→D)。此时,最短路径是A→B,因此以B点为出发点继续辐射得到如图4中间小图所示的多叉树。此时E点被访问两次,但是A→B→E的开销大于A→E,因此丢弃掉分支A→B→E,得到图4最右侧小图的多叉树。

4)此时树中最短分支是:A→E,因此以E点进行辐射得到如图5中间小图所示的多叉树。可以看到,E点发射到B和D均是已经出现过的,根据上一条的规则知道,A→D和A→E→B这两条路径将被丢弃:A→D大于A→E→D,A→E→B大于A→B,得到图5最右侧小图的多叉树。

5)此后树中最短路径是A→E→D:60,由于已经达到了目的地,且是树中最短的路径(小于其他支路,A→B→C:70),因此不需要再进行辐射,至此寻路结束。在支持负权值的情况,若需要相对最短路径,也可以结束;但是如果需要绝对最短路径,任然需要继续辐射,直到没有节点可以继续添加为止。

对于例外情况,如果发生如图6所示的情况,如何进行剪枝呢?

即,如果以E点为出发点,辐射至B点导致B点重复,而A→B:80是大于A→E→B:70的,且原本B点有子树。本实施例中,将B点子树搬移到新的B点下即可,此时发现A→D已经是树中最短路径,即可结束辐射,最短路径即为A→D:100。

将上述实施例的方案与其他方案进行性能对比:

用Golang同时实现上述实施例的方案、Dijkstra算法和Dijkstra算法的优先队列优化。对比方式:随机生成10000个节点,每个随机节点[0,16)条边,然后对比几个算法的性能,针对同一个有向图,随机生成20对节点(起点+终点),针对每个算法分别求解这20对节点的最短路径,统计耗时,由于Dijkstra不支持负权值,因此随机生成的地图不包含负权值。统计耗时情况如下:本算法耗时140ms,Dijkstra算法耗时9805ms,Dijkstra算法的优先队列优化耗时2687ms。即:Dijkstra优先队列优化版本比非优化版本时间开销节约:77.29%;本算法比Dijkstra优先队列优化版本时间开销节约:93.71%;本算法比Dijkstra非优化版本时间开销节约:98.57%。随着数据量的增加,本算法性能远超Dijkstra算法及其优化版本。

进一步地,本方案可以做到只需要O(E*N)的空间存储数据,其中N为节点个数,E为每个节点平均边数;空间复杂度为O(N),时间复杂度为O(N),在大多数的应用场景里,E趋于常数,如交通十字路口,每个节点通常是4条边,更复杂的场景一般也最多8条边。以下验证本算法的时间复杂度趋于O(N)。

验证方案:针对一定数量的节点,随机[0,16)条边,求解随机两点间的最短距离。依次测试几组数据,将节点数量设置为10000、20000、40000、100000,运行结果如下:

可见,10万个节点,本方案求解随机两个节点间的最短路径只需要不到200ms,且时间开销确实在一定程度是趋于O(N)的,根据上面数据推算,求解100万节点任意两点间的最短路径,只需要数秒即可完成。

应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于与上述实施例中的路径规划方法相同的思想,本发明还提供路径规划装置,该装置可用于执行上述路径规划方法。为了便于说明,路径规划装置实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

在一个实施例中,如图7所示,提供了一种路径规划装置700,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:

路径图读取模块701,用于从内存中一次性读取待分析路径图并提取所述待分析路径图中各个路段线携带的路段特征值;所述待分析路径图为由多个节点和连接所述多个节点的路段线构成的连接图,所述待分析路径图包含至少一条从目标起始节点到目标结束节点的路径;所述路段特征值具有正负值;

特征值获取模块702,用于确定当前起始节点与各个当前结束节点之间的当前路段线,并获取所述当前路段线的路段特征值;所述当前结束节点为与所述当前起始节点存在连接关系的节点;

最小特征值确定模块703,用于基于所述当前路段线的路段特征值,确定从所述目标起始节点到所述当前结束节点的连线路径特征值,并在所述连线路径特征值中确定最小连线路径特征值;

最短路径确定模块704,用于若所述最小连线路径特征值对应的所述当前结束节点为所述目标结束节点,则根据所述最小连线路径特征值对应的路径确定目标最短路径,并输出所述目标最短路径。

上述路径规划装置中,读取待分析路径图并提取待分析路径图中各个路段线携带的路段特征值;确定当前起始节点与各个当前结束节点之间的当前路段线,并获取当前路段线的路段特征值;基于当前路段线的路段特征值,确定从目标起始节点到当前结束节点的连线路径特征值,并在连线路径特征值中确定最小连线路径特征值;若最小连线路径特征值对应的当前结束节点为目标结束节点,则根据最小连线路径特征值对应的路径确定目标最短路径,并输出目标最短路径。在包含正负路段特征值的情况下,仅需极少的空间开销,就可以高效确定最短路径。

在一可选实施例中,所述装置还包括:第一多叉树构造模块,用于若所述当前起始节点是根节点,则以所述当前结束节点为所述根节点的子节点,构造多叉树;第二多叉树构造模块,用于若所述当前起始节点不是根节点,则将所述当前起始节点作为上一节点的子节点,以所述当前结束节点为所述当前起始节点的子节点,构造多叉树;相应的,最小特征值确定模块,还用于确定从根节点到所述当前结束节点中各个路段特征值之和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

在一可选实施例中,最短路径确定模块,包括:第一最短路径确定子模块,用于若所述待分析路径图中仅存在正路段特征值,或者,所述待分析路径图中存在负路段特征值且需要输出相对最短路径的情况下,则将所述最小连线路径特征值对应的路径确定为目标最短路径;第二最短路径确定子模块,用于若所述待分析路径图中存在负路段特征值且需要输出绝对最短路径的情况下,则确定所述最小连线路径特征值对应的所述当前结束节点是否存在子节点,并根据判断结果确定目标最短路径。

在一可选实施例中,第二最短路径确定子模块,包括:子节点存在单元,用于若确定所述当前结束节点存在子节点,则将所述最小连线路径特征值对应的所述当前结束节点作为所述当前起始节点并继续确定最小连线路径特征值的步骤,直至当前结束节点中均不存在子节点;子节点不存在单元,用于若确定所述当前结束节点不存在子节点,则将所述最小连线路径特征值对应的路径确定为目标最短路径。

在一可选实施例中,最小特征值确定模块,还用于若所述待分析路径图中存在负路段特征值且计算模式为正路段特征值计算模式,则确定从根节点到所述当前结束节点中各个路段特征值绝对值的和,得到从所述目标起始节点到所述当前结束节点的连线路径特征值。

在一可选实施例中,每次构造或调整多叉树之后,还包括:路径删除模块,用于若构造或调整得到的多叉树中存在至少两个相同的叶子节点,则确定从根节点分别到这些叶子节点之间的路径的连线路径特征值,仅在多叉树中保留连线路径特征值最小的路径。

在一可选实施例中,若所述待分析路径图中存在负路段特征值,则所述装置还包括:对于任意一个叶子节点,将其作为目标叶子节点;父节点确定模块,用于确定多叉树剩下的路径中是否存在与所述目标叶子节点为同一内容的目标父节点;特征值确定模块,用于若存在,则分别确定从根节点到所述目标叶子节点以及到所述目标父节点之间路径的连线路径特征值;子节点搬移模块,用于若所述目标父节点对应的连线路径特征值长于所述目标叶子节点对应的连线路径特征值,则将所述目标父节点下的所有子节点搬移作为所述目标叶子节点的子节点。

关于路径规划装置的具体限定可以参见上文中对于路径规划方法的限定,在此不再赘述。上述路径规划装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种路径规划方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种路径规划方法、装置及计算机可读存储介质
  • 巡检路径规划方法、装置、无人机和计算机可读存储介质
  • 路径规划方法、装置、电子设备及存储介质
  • 一种配送路径规划方法、装置及设备、存储介质
  • 路径规划方法、路径规划系统、电子设备及计算机存储介质
  • 路径规划方法、路径规划系统、电子设备及计算机存储介质
技术分类

06120116458565