用于道路网的最短路径搜索方法及装置制造方法

文档序号:6625853阅读:203来源:国知局
用于道路网的最短路径搜索方法及装置制造方法
【专利摘要】本发明公开了一种用于道路网的最短路径搜索方法及装置,其中,方法包括以下步骤:将道路网分割为多个子网络;生成树状结构道路网络;计算同一层的子网络的边界节点之间的最短路径;输入查询点和目标点;根据最短路径通过动态规划算法得到查询点和目标点之间的初始最短路径;对初始最短路径进行补充以获取查询点和目标点之间完整的最短路径。本发明实施例的方法通过将道路网分割为多个子网络以生成树状结构道路网络,并且计算同一层的子网络的边界节点之间的最短距离,从而当输入查询点和目标点时,实现快速得到查询点和目标点之间最短路径,不但效率高,而且很好地满足实时性要求。
【专利说明】用于道路网的最短路径搜索方法及装置

【技术领域】
[0001]本发明涉及地图搜索【技术领域】,特别涉及一种用于道路网的最短路径搜索方法及
>J-U ρ?α装直。

【背景技术】
[0002]最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。相关技术中,例如Dijkstra算法是传统的解决方法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。然而,Dijkstra算法虽然能得出最短路径的最优解,但是遍历计算的节点过多,导致效率低,不能很好地满足实时性要求。


【发明内容】

[0003]本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
[0004]为此,本发明的一个目的在于提出一种效率高,能满足实时性要求的用于道路网的最短路径搜索方法。
[0005]本发明的另一个目的在于提出一种用于道路网的最短路径搜索装置。
[0006]为达到上述目的,本发明一方面实施例提出了一种用于道路网的最短路径搜索方法,包括以下步骤:将道路网分割为多个子网络;根据所述多个子网络生成树状结构道路网络,其中,所述树状结构道路网络中每个节点为一个子网络;计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径;输入查询点和目标点;根据所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到所述查询点和目标点之间的初始最短路径;以及对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径。
[0007]根据本发明实施例提出的用于道路网的最短路径搜索方法,通过将道路网分割为多个子网络以生成树状结构道路网络,并且计算同一层的子网络的边界节点之间的最短距离,从而当输入查询点和目标点时,实现快速得到查询点和目标点之间的初始最短路径,并对初始最短路径进行补充以获取完整的最短路径,不但效率高,而且很好地满足实时性要求。
[0008]另外,根据本发明上述实施例的用于道路网的最短路径搜索方法还可以具有如下附加的技术特征:
[0009]进一步地,在本发明的一个实施例中,所述计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径,进一步包括:如果所述边界节点为叶子节点,则计算并保存所述叶子节点的每一个边界点到每一个落在所述叶子节点的道路网络的边界节点之间的最短距离的距离矩阵;如果所述边界节点为中间节点,则计算并保存所述中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
[0010]进一步地,在本发明的一个实施例中,通过以下公式得到所述查询点和目标点之间的初始最短路径,所述公式为:
[0011]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0012]其中,Gi (q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
[0013]进一步地,在本发明的一个实施例中,所述对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径,进一步包括:对所述初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
[0014]进一步地,在本发明的一个实施例中,上述方法还包括:如果所述查询点和所述目标点未处于同一层的子网络,则通过Dijkstra算法获取所述完整的最短路径。
[0015]本发明另一方面实施例提出了一种用于道路网的最短路径搜索方法,包括:生成模块,用于将道路网分割为多个子网络,并根据所述多个子网络生成树状结构道路网络,其中,所述树状结构道路网络中每个节点为一个子网络;计算模块,用于计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径;以及获取模块,当输入查询点和目标点时,用于根据所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到所述查询点和目标点之间的初始最短路径,并且对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径。
[0016]根据本发明实施例提出的用于道路网的最短路径搜索装置,通过将道路网分割为多个子网络以生成树状结构道路网络,并且计算同一层的子网络的边界节点之间的最短距离,从而当输入查询点和目标点时,实现快速得到查询点和目标点之间的初始最短路径,并对初始最短路径进行补充以获取完整的最短路径,不但效率高,而且很好地满足实时性要求。
[0017]另外,根据本发明上述实施例的用于道路网的最短路径搜索装置还可以具有如下附加的技术特征:
[0018]进一步地,在本发明的一个实施例中,所述计算模块还用于:如果所述边界节点为叶子节点,则计算并保存所述叶子节点的每一个边界点到每一个落在所述叶子节点的道路网络的边界节点之间的最短距离的距离矩阵;如果所述边界节点为中间节点,则计算并保存所述中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
[0019]进一步地,在本发明的一个实施例中,通过以下公式得到所述查询点和目标点之间的初始最短路径,所述公式为:
[0020]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0021]其中,Gi(q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
[0022]进一步地,在本发明的一个实施例中,所述获取模块还用于:对所述初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
[0023]进一步地,在本发明的一个实施例中,所述获取模块还用于:如果所述查询点和所述目标点未处于同一层的子网络,则通过Dijkstra算法获取所述完整的最短路径。
[0024]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0025]本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0026]图1为根据本发明一个实施例的用于道路网的最短路径搜索方法的流程图;
[0027]图2为根据本发明一个实施例的动态规划算法示意图;
[0028]图3为根据本发明一个具体实施例的用于道路网的最短路径搜索方法的流程图;以及
[0029]图4为根据本发明一个实施例的用于道路网的最短路径搜索装置的结构示意图。

【具体实施方式】
[0030]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0031]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0032]在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0033]在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
[0034]下面在描述根据本发明实施例提出的用于道路网的最短路径搜索方法及装置之前,先来简单描述一下相关技术中为了能够支持导航等地图实时性要求而提出的最短路径搜索方法。
[0035]相关技术中,为了能够支持导航等地图的实时性需求,一些基于Dijkstra的启发式算法被相继提出。其中,应用相对广泛的是A*算法,A*算法是一种静态路网中求解最短路最有效的方法,其通过在每一个网络中的点上设置从初始点经由该节点到达目的点的估价函数来指导最短路径搜索的方向,因而比传统的Dijkstra算法大大缩小了搜索空间。此外,还有支持含负权图的单源最短路径Bellman-Ford算法,以及基于邻接矩阵乘法的Floyd-warshall 算法。
[0036]另外,Contract1n Hierarchies (CH)算法则是通过事先离线计算并保存原始网络图的层次结构,然后通过这些事先计算好的特征点和这些点之间的路径来对搜索空间进行快速剪枝,因而相比其他的算法能够更快的找到目的点。
[0037]本发明正是基于上述方法,而提出了一种用于道路网的最短路径搜索方法与一种用于道路网的最短路径搜索装置。本发明实施例同样采用了离线缓存来加速在线查询的思路,并提出了相应的缓存算法框架,实现快速地给出道路网络中任意两点间的最短路径,从而为商用的导航功能提供了方便。
[0038]下面参照附图描述根据本发明实施例提出的用于道路网的最短路径搜索方法及装置,首先将参照附图描述根据本发明实施例提出的用于道路网的最短路径搜索方法。参照图1所示,该方法包括以下步骤:
[0039]S101,将道路网分割为多个子网络。
[0040]S102,根据多个子网络生成树状结构道路网络,其中,树状结构道路网络中每个节点为一个子网络。
[0041]在本发明的一个实施例中,首先在离线模式分割道路网络并建立有层次的树状结构RoadTree即树状结构道路网络,树中每个节点代表道路网络中的一个子网络。
[0042]具体地,整个道路网络作为RoadTree的根节点,设定叶子节点的容量(能够包含的道路网络的节点数)不超过r,以及每个树节点(子网络)所能包含的孩子节点(子网络)的个数f。进一步地,从RoadTree的根节点开始,对每一个树节点(子网络)依据其包含的道路网络节点数量平分成f个新的(树节点)子网络作为原来树节点的f个孩子节点,并且每个子网络拥有相同的道路网节点数。进一步地,依次执行直至孩子节点包含的道路网络节点数量多于r (为叶子节点)。
[0043]S103,计算树状结构道路网络中同一层的子网络的边界节点之间的最短路径。
[0044]在本发明的一个实施例中,计算树状结构道路网络中同一层的子网络的边界节点之间的最短路径,进一步包括:如果边界节点为叶子节点,则计算并保存叶子节点的每一个边界点到每一个落在叶子节点的道路网络的边界节点之间的最短距离的距离矩阵;如果边界节点为中间节点,则计算并保存中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
[0045]在本发明的一个实施例中,事先计算并保存子网络之间的边界节点的最短路径。举例而言,对于子网络中的每一个点U,如果存在一条边连接u与其它同层次的子网络(即在RoadTree树上的层级相同的节点)中的点,那么u就是这个子网络中的一个边界点。
[0046]具体地,如果是叶子节点,计算并保存一个距离矩阵,其中每一个叶子节点包含的道路网络节点作为一行,每一个叶子节点的边界点作为一列。计算并保存该叶子节点的每一个边界点到每一个落在该叶子节点的道路网络的节点之间的最短距离。出于内存占用的考虑,此处并没有保存具体的路径。此处计算最短路径可由经典的Dijkstra算法得到。
[0047]进一步地,如果是中间节点,计算并保存一个距离矩阵。该中间节点的所有子节点(子网络)的边界点组成一个集合,计算并保存该集合中每两个边界点之间的最短距离。出于内存占用的考虑,此处并没有保存具体的路径。此处计算最短路径也可由经典的Dijkstra算法得到。
[0048]S104,输入查询点和目标点。
[0049]在本发明的一个实施例中,其次在在线模式进行查询,即先得到实时查询的查询点q和目的点t。
[0050]S105,根据树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到查询点和目标点之间的初始最短路径。
[0051]在本发明的实施例中,利用上述步骤得到的保存在每一个RoadTree节点上的最短距离矩阵组合由各个RoadTree节点(子网络)中的边界点组成的q到t的不完整的最短路径。其中,这个步骤可以分为两种情况,一种为查询点和目标点处于同一层的子网络,另一种为查询点和目标点未处于同一层的子网络。
[0052]在本发明的一个实施例中,通过以下公式得到查询点和目标点之间的初始最短路径,公式为:
[0053]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0054]其中,Gi(q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
[0055]具体地,当查询点和目标点处于同一层的子网络时,即q和t在RoadTree不同的叶子节点(子网络)之中。这种情况下可以用动态规划算法求解。如果要理解这个过程,首先我们要观察出一个规律:
[0056]对于RoadTree上的一个树节点(子网络),其中的每一个道路网络节点到任意一个不在这个子网络中的其他道路网络节点的最短路径一定会经过这个子网络的边界点。
[0057]在有了这个规律之后,本发明实施例就可以将已经计算并保存的边界点之间的最短路径拼接而得到查询点和目标点之间的最短路径。
[0058]在本发明的一个实施例中,参照图2所示,q和t分别在各自的叶子节点(Gn(q)、Gm(t))中,首先找到口和t的最小公共祖先(Least Common Ancestor,LCA)。LCA是最小的同时包含了 q和t的子网络。其中,依据之前的规律,从q到t的最短路径一定会是沿着箭头所指的方向,先从包含q的根节点起层层往上通过更大的子网络的边界点,最后越过LCA的边界点转而向下经过逐步逼近t的边界点。在这个过程中可以得到一个动态规划算法的基本条件,也就是最短路径在每一次两个子网络之间的跳转都是只和前一次而和之前的选择无关。用公式来总结,假定从q到t的最短路径minPath (q, t)依次经过RoadTree的节点(子网络)<Gn(q),Gn-l(q),...,Gl(q),Gl(t),...,Gm-l(t),Gm(t)>,那么就有:
[0059]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0060]其中,Border (Gi (q))表示Gi (q)中的所有边界点.。如图2为例,假设已知从q到G2 (q)的最短路径minPath (q, G2 (q)),那么从q到Gl (q)的最短路径就等于G2 (q)加上G2(q)通过边界点到Gl (I)的路径之和最短的那条路径,而G2(q)到Gl (q)的边界点的距离已经如上述计算并保存在RoadTree的Gl (q)节点上了。
[0061]进一步地,在本发明的一个实施例中,上述方法还包括:如果查询点和目标点未处于同一层的子网络,则通过Dijkstra算法获取所述完整的最短路径。
[0062]具体地,当查询点和目标点未处于同一层的子网络时,即q和t正好在同一个RoadTree的叶子节点(子网络)之中。由于事先设定了叶子节点能够容纳的最多的道路网络节点数,叶子节点的规模可以被控制得足够小,因此运行传统的Dijkstra算法就能够满足效率的要求。
[0063]S106,对初始最短路径进行补充以获取查询点和目标点之间完整的最短路径。即言,补充步骤S105得到的仅由边界点组成的初始路径,从而得到最终的完整路径。
[0064]在本发明的一个实施例中,对初始最短路径进行补充以获取查询点和目标点之间完整的最短路径,进一步包括:对初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
[0065]具体地,由于从步骤S105得到的最短路径是不完整的,仅仅由边界点连接而成,边界点之间的最短路径并没有在初始化RoadTree的时候得到,所以还需要“recover”这些边界点之间的具体路径。因此,本发明实施例采用Divide-and-Conquer的思路,对最短路径每一对边界点之间的路径可以进一步差分,从对应的子网络的距离矩阵中引入新的边界点使得到这两点的最短路径之和等于步骤S105算出来的值,从而就将两个边界点的路径扩展到了 3个,这个过程可以一直持续直到路径上所有的点之间都有道路网络上的边(路)相连。
[0066]道路网上任意两点间的最短路径搜索在地图查询、检索领域有着极其重要的意义,它能够为导航应用提供支持。最短路径搜索在导航的应用中必须满足实时性、准确性,并且能够支持道路网中任意两点间路径的搜索,这就为系统数据结构的设计带来了挑战。相关技术中的基于Dijkstra的算法无法满足实时的要求,而本发明实施例充分利用了道路网络分区的特性,线下计算并保存了能够重复利用的最短路径信息,从而满足了实时搜索道路网络中任意两点间最短路径的需求。
[0067]在本发明的一个具体实施例中,参照图3所示,本发明实施例的总体流程包括以下步骤:
[0068]S3OI,划分路网,建立 RoadTree。
[0069]S302,计算并保存RoadTree上的距离矩阵。
[0070]在正式查询之前,需要分割道路网络并建立有层次的树状结构RoadTree,树中每个节点代表道路网络中的一个子网络.对于子网络中的每一个点U,如果存在一条边连接u与其它同层次的子网络(即在RoadTree树上的层级相同的节点)中的点,那么u就是这个子网络中的一个边界点.,边界点之间的最短路径可以离线计算并保存在RoadTree上的距离矩阵之中。
[0071]S303,查询q到t的最短路径。
[0072]S304,找到q和t所在的RoadTree叶子节点。
[0073]S305,判断q和t是否在同一个RoadTree叶子节点。如果是,则进入步骤S309 ;如果否,则进入步骤S306。
[0074]S306,找到 q 和 t 在 RoadTree 上的 LCA。
[0075]S307,利用动态规划算法平拼接由边界点组成的最短路径。
[0076]S308,恢复完整路径,并进入步骤S310。
[0077]S309,直接调用Di jkstra算法,并进入步骤S310。
[0078]S310,结束,返回最短路径。
[0079]当接收一个从q到t的最短路径查询时,首先从RoadTree上找到各自所在的叶子节点,如果是在同一个叶子节点之中,则两者距离很近,直接调用Dijkstra算法即可,否则就依据RoadTree上的距离矩阵通过动态规划算法得到由RoadTree上的边界点组成的不完整的最短路径,最后再通过Divide-and-Conquer的办法将不完整的路径补全,即可得到最终符合要求的最短路径。
[0080]本发明实施例充分利用了道路网络的拓扑结构,设计了有层次结构的剪枝策略,使得能够高效的回答一个复杂的道路网络上任意两个节点之间的最短路径问题。本发明实施例依次包含有以下几个步骤:将一个道路网络整体划分为有层次的树状结构,每一个树节点代表一个子网络;同时树中同一层次的子网络之间的边界节点的最短路径能够事先计算并保存,以供在线实时查询的剪枝策略使用;实时的查询使用动态规划算法拼接事先计算好的边界点之间的最短路径,得到仅由边界点串连的查询点和目标点之间不完整的最短路径;最后补充上这条路径上的边界点之间的路径,从而得到最终的完整路径。
[0081]根据本发明实施例提出的用于道路网的最短路径搜索方法,通过将道路网分割为多个子网络以生成树状结构道路网络,并且计算同一层的子网络的边界节点之间的最短距离,从而当输入查询点和目标点时,实现快速得到查询点和目标点之间的初始最短路径,并对初始最短路径进行补充以获取完整的最短路径,不但效率高,而且很好地满足实时性要求。另外,本发明实施例能很直观地扩展,例如加入道路的实时交通信息等,很好地满足用户的使用需求,提高使用体验。
[0082]其次将参照附图描述根据本发明实施例提出的用于道路网的最短路径搜索装置。参照图4所示,该装置100包括:生成模块10、计算模块20和获取模块30。
[0083]其中,生成模块10用于将道路网分割为多个子网络,并根据多个子网络生成树状结构道路网络,其中,树状结构道路网络中每个节点为一个子网络。计算模块20用于计算树状结构道路网络中同一层的子网络的边界节点之间的最短路径。当输入查询点和目标点时,获取模块30用于根据树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到查询点和目标点之间的初始最短路径,并且对初始最短路径进行补充以获取查询点和目标点之间完整的最短路径。
[0084]在本发明的一个实施例中,首先在离线模式分割道路网络并建立有层次的树状结构RoadTree即树状结构道路网络,树中每个节点代表道路网络中的一个子网络。
[0085]具体地,整个道路网络作为RoadTree的根节点,设定叶子节点的容量(能够包含的道路网络的节点数)不超过r,以及每个树节点(子网络)所能包含的孩子节点(子网络)的个数f。进一步地,从RoadTree的根节点开始,对每一个树节点(子网络)依据其包含的道路网络节点数量平分成f个新的(树节点)子网络作为原来树节点的f个孩子节点,并且每个子网络拥有相同的道路网节点数。进一步地,依次执行直至孩子节点包含的道路网络节点数量多于r (为叶子节点)。
[0086]进一步地,在本发明的一个实施例中,计算模块20还用于:如果边界节点为叶子节点,则计算并保存叶子节点的每一个边界点到每一个落在叶子节点的道路网络的边界节点之间的最短距离的距离矩阵;如果边界节点为中间节点,则计算并保存中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
[0087]在本发明的一个实施例中,事先计算并保存子网络之间的边界节点的最短路径。举例而言,对于子网络中的每一个点U,如果存在一条边连接u与其它同层次的子网络(即在RoadTree树上的层级相同的节点)中的点,那么u就是这个子网络中的一个边界点。
[0088]具体地,如果是叶子节点,计算并保存一个距离矩阵,其中每一个叶子节点包含的道路网络节点作为一行,每一个叶子节点的边界点作为一列。计算并保存该叶子节点的每一个边界点到每一个落在该叶子节点的道路网络的节点之间的最短距离。出于内存占用的考虑,此处并没有保存具体的路径。此处计算最短路径可由经典的Dijkstra算法得到。
[0089]进一步地,如果是中间节点,计算并保存一个距离矩阵。该中间节点的所有子节点(子网络)的边界点组成一个集合,计算并保存该集合中每两个边界点之间的最短距离。出于内存占用的考虑,此处并没有保存具体的路径。此处计算最短路径也可由经典的Dijkstra算法得到。
[0090]在本发明的一个实施例中,其次在在线模式进行查询,即先得到实时查询的查询点q和目的点t。
[0091]具体地,在本发明的一个实施例中,利用上述得到的保存在每一个RoadTree节点上的最短距离矩阵组合由各个RoadTree节点(子网络)中的边界点组成的q到t的不完整的最短路径。其中,本发明实施例可以分为两种情况,一种为查询点和目标点处于同一层的子网络,另一种为查询点和目标点未处于同一层的子网络。
[0092]在本发明的一个实施例中,通过以下公式得到查询点和目标点之间的初始最短路径,公式为:
[0093]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0094]其中,Gi(q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
[0095]具体地,当查询点和目标点处于同一层的子网络时,即q和t在RoadTree不同的叶子节点(子网络)之中。这种情况下可以用动态规划算法求解。如果要理解这个过程,首先我们要观察出一个规律:
[0096]对于RoadTree上的一个树节点(子网络),其中的每一个道路网络节点到任意一个不在这个子网络中的其他道路网络节点的最短路径一定会经过这个子网络的边界点。
[0097]在有了这个规律之后,本发明实施例就可以将已经计算并保存的边界点之间的最短路径拼接而得到查询点和目标点之间的最短路径。
[0098]在本发明的一个实施例中,参照图2所示,q和t分别在各自的叶子节点(Gn(q)、Gm(t))中,首先找到口和t的最小公共祖先(Least Common Ancestor,LCA)。LCA是最小的同时包含了 q和t的子网络。其中,依据之前的规律,从q到t的最短路径一定会是沿着箭头所指的方向,先从包含q的根节点起层层往上通过更大的子网络的边界点,最后越过LCA的边界点转而向下经过逐步逼近t的边界点。在这个过程中可以得到一个动态规划算法的基本条件,也就是最短路径在每一次两个子网络之间的跳转都是只和前一次而和之前的选择无关。用公式来总结,假定从q到t的最短路径minPath (q, t)依次经过RoadTree的节点(子网络)<Gn(q),Gn-l(q),...,Gl(q),Gl(t),...,Gm-l(t),Gm(t)>,那么就有:
[0099]minPath(q, G1-1(q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi,G1-l(q))),
[0100]其中,Border (Gi (q))表示Gi (q)中的所有边界点.。如图2为例,假设已知从q到G2 (q)的最短路径minPath (q, G2 (q)),那么从q到Gl (q)的最短路径就等于G2 (q)加上G2(q)通过边界点到Gl (I)的路径之和最短的那条路径,而G2(q)到Gl (q)的边界点的距离已经如上述计算并保存在RoadTree的Gl (q)节点上了。
[0101]进一步地,在本发明的一个实施例中,获取模块30还用于:如果查询点和目标点未处于同一层的子网络,则通过Dijkstra算法获取所述完整的最短路径。
[0102]具体地,当查询点和目标点未处于同一层的子网络时,即q和t正好在同一个RoadTree的叶子节点(子网络)之中。由于事先设定了叶子节点能够容纳的最多的道路网络节点数,叶子节点的规模可以被控制得足够小,因此运行传统的Dijkstra算法就能够满足效率的要求。
[0103]在本发明的一个实施例中,获取模块30还用于:对初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
[0104]具体地,由于前面得到的最短路径是不完整的,仅仅由边界点连接而成,边界点之间的最短路径并没有在初始化RoadTree的时候得到,所以还需要“recover”这些边界点之间的具体路径。因此,本发明实施例采用Divide-and-Conquer的思路,对最短路径每一对边界点之间的路径可以进一步差分,从对应的子网络的距离矩阵中引入新的边界点使得到这两点的最短路径之和等于步骤S105算出来的值,从而就将两个边界点的路径扩展到了 3个,这个过程可以一直持续直到路径上所有的点之间都有道路网络上的边(路)相连。
[0105]道路网上任意两点间的最短路径搜索在地图查询、检索领域有着极其重要的意义,它能够为导航应用提供支持。最短路径搜索在导航的应用中必须满足实时性、准确性,并且能够支持道路网中任意两点间路径的搜索,这就为系统数据结构的设计带来了挑战。相关技术中的基于Dijkstra的算法无法满足实时的要求,而本发明实施例充分利用了道路网络分区的特性,线下计算并保存了能够重复利用的最短路径信息,从而满足了实时搜索道路网络中任意两点间最短路径的需求。
[0106]在本发明的一个具体实施例中,参照图3所示,本发明实施例的总体流程包括以下步骤:
[0107]S301,划分路网,建立 RoadTree。
[0108]S302,计算并保存RoadTree上的距离矩阵。
[0109]在正式查询之前,需要分割道路网络并建立有层次的树状结构RoadTree,树中每个节点代表道路网络中的一个子网络.对于子网络中的每一个点U,如果存在一条边连接u与其它同层次的子网络(即在RoadTree树上的层级相同的节点)中的点,那么u就是这个子网络中的一个边界点.,边界点之间的最短路径可以离线计算并保存在RoadTree上的距离矩阵之中。
[0110]S303,查询q到t的最短路径。
[0111]S304,找到q和t所在的RoadTree叶子节点。
[0112]S305,判断q和t是否在同一个RoadTree叶子节点。如果是,则进入步骤S309 ;如果否,则进入步骤S306。
[0113]S306,找到 q 和 t 在 RoadTree 上的 LCA。
[0114]S307,利用动态规划算法平拼接由边界点组成的最短路径。
[0115]S308,恢复完整路径,并进入步骤S310。
[0116]S309,直接调用Di jkstra算法,并进入步骤S310。
[0117]S310,结束,返回最短路径。
[0118]当接收一个从q到t的最短路径查询时,首先从RoadTree上找到各自所在的叶子节点,如果是在同一个叶子节点之中,则两者距离很近,直接调用Dijkstra算法即可,否则就依据RoadTree上的距离矩阵通过动态规划算法得到由RoadTree上的边界点组成的不完整的最短路径,最后再通过Divide-and-Conquer的办法将不完整的路径补全,即可得到最终符合要求的最短路径。
[0119]本发明实施例充分利用了道路网络的拓扑结构,设计了有层次结构的剪枝策略,使得能够高效的回答一个复杂的道路网络上任意两个节点之间的最短路径问题。本发明实施例依次包含有以下几个步骤:将一个道路网络整体划分为有层次的树状结构,每一个树节点代表一个子网络;同时树中同一层次的子网络之间的边界节点的最短路径能够事先计算并保存,以供在线实时查询的剪枝策略使用;实时的查询使用动态规划算法拼接事先计算好的边界点之间的最短路径,得到仅由边界点串连的查询点和目标点之间不完整的最短路径;最后补充上这条路径上的边界点之间的路径,从而得到最终的完整路径。
[0120]根据本发明实施例提出的用于道路网的最短路径搜索装置,通过将道路网分割为多个子网络以生成树状结构道路网络,并且计算同一层的子网络的边界节点之间的最短距离,从而当输入查询点和目标点时,实现快速得到查询点和目标点之间的初始最短路径,并对初始最短路径进行补充以获取完整的最短路径,不但效率高,而且很好地满足实时性要求。另外,本发明实施例能很直观地扩展,例如加入道路的实时交通信息等,很好地满足用户的使用需求,提高使用体验。
[0121]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0122]在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(R0M),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0123]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0124]本【技术领域】的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0125]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0126]上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0127]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0128]尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【权利要求】
1.一种用于道路网的最短路径搜索方法,其特征在于,包括以下步骤: 将道路网分割为多个子网络; 根据所述多个子网络生成树状结构道路网络,其中,所述树状结构道路网络中每个节点为一个子网络; 计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径; 输入查询点和目标点; 根据所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到所述查询点和目标点之间的初始最短路径;以及 对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径。
2.如权利要求1所述的用于道路网的最短路径搜索方法,其特征在于,所述计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径,进一步包括: 如果所述边界节点为叶子节点,则计算并保存所述叶子节点的每一个边界点到每一个落在所述叶子节点的道路网络的边界节点之间的最短距离的距离矩阵; 如果所述边界节点为中间节点,则计算并保存所述中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
3.如权利要求2所述的用于道路网的最短路径搜索方法,其特征在于,通过以下公式得到所述查询点和目标点之间的初始最短路径,所述公式为:
minPath (q, G1-1 (q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi, G1-1(q))), 其中,Gi(q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
4.如权利要求2所述的用于道路网的最短路径搜索方法,其特征在于,所述对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径,进一步包括: 对所述初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
5.如权利要求1所述的用于道路网的最短路径搜索方法,其特征在于,还包括: 如果所述查询点和所述目标点未处于同一层的子网络,则通过Di jkstra算法获取所述完整的最短路径。
6.一种用于道路网的最短路径搜索装置,其特征在于,包括: 生成模块,用于将道路网分割为多个子网络,并根据所述多个子网络生成树状结构道路网络,其中,所述树状结构道路网络中每个节点为一个子网络; 计算模块,用于计算所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径;以及 获取模块,当输入查询点和目标点时,用于根据所述树状结构道路网络中同一层的子网络的边界节点之间的最短路径通过动态规划算法得到所述查询点和目标点之间的初始最短路径,并且对所述初始最短路径进行补充以获取所述查询点和目标点之间完整的最短路径。
7.如权利要求6所述的用于道路网的最短路径搜索装置,其特征在于,所述计算模块还用于: 如果所述边界节点为叶子节点,则计算并保存所述叶子节点的每一个边界点到每一个落在所述叶子节点的道路网络的边界节点之间的最短距离的距离矩阵; 如果所述边界节点为中间节点,则计算并保存所述中间节点的所有子节点的边界点中每两个边界点之间的最短距离的距离矩阵。
8.如权利要求7所述的用于道路网的最短路径搜索装置,其特征在于,通过以下公式得到所述查询点和目标点之间的初始最短路径,所述公式为:
minPath (q, G1-1 (q)) = min qi in Border(Gi(q))(minPath(q, qi)+minPath(qi, G1-1(q))), 其中,Gi(q)表示边界节点,Border (Gi (q)表示Gi (q)中的所有边界点。
9.如权利要求7所述的用于道路网的最短路径搜索装置,其特征在于,所述获取模块还用于: 对所述初始最短路径的每一对边界点之间的路径进行差分,并从对应的子网络的距离矩阵中引入新的边界点进行补充。
10.如权利要求1所述的用于道路网的最短路径搜索装置,其特征在于,所述获取模块还用于: 如果所述查询点和所述目标点未处于同一层的子网络,则通过Di jkstra算法获取所述完整的最短路径。
【文档编号】G06F19/00GK104266656SQ201410446777
【公开日】2015年1月7日 申请日期:2014年9月3日 优先权日:2014年9月3日
【发明者】李国良, 冯建华, 陈硕, 朱璇 申请人:清华大学, 北京三星通信技术研究有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1