导航系统中必经点最短路径的获取方法

文档序号:6186063阅读:545来源:国知局
导航系统中必经点最短路径的获取方法
【专利摘要】本发明揭示了一种导航系统中必经点最短路径的获取方法,所述方法获取过K个必经点的N条最短路径,求过K个必经结点的N条最短路径就是对每次找到的过K个必经点最短路径的子图进行再次分割,并且和已有子图存在的过K个必经点的最短路径的进行一一比较,找出最短的,这样不断地重复执行,并在执行过程中去除重复的路径,直到路径条数达到满足或者已无路径为止。本发明提出的导航系统中必经点最短路径的获取方法,可获取若干条过K个必经点的最短路径,方便用户根据需要选择。
【专利说明】导航系统中必经点最短路径的获取方法
【技术领域】
[0001]本发明属于线路导航【技术领域】,涉及一种导航系统,尤其涉及一种导航系统中必经点最短路径的获取方法。
【背景技术】
[0002]最短路径问题在计算机科学、交通工程、通信工程、控制理论等众多领域都有广泛的应用,是解决其它许多复杂网络优化问题的子问题之一。
[0003]随着车辆的广泛普及和交通网络的不断发展,智能交通诱导系统的作用将显得越为突出。交通诱导系统可根据驾驶员的意愿为其提供最佳行驶路线来达到诱导出行行为、减少车辆在路上的逗留时间;同时,它还能避免因盲目行驶或凭经验行驶造成交通堵塞。
[0004]作为用户来说,除了最优路线外,次优,再次优等路线也显得同样重要;这样可以使用户拥有更大的选择空间,同时为了进一步提供更人性化的服务,诱导系统还应设置多个必经点以满足用户在出行途中的需要,比如要途径超市、加油站等;还有军事人员及物资的运输中要必须考虑必经点,该必经点可能是一些重要的城市、桥梁、加油站、弹药库、中转站等;故必经点的考虑也必将是未来智能交通诱导系统的发展趋势。随意智能手机的推广,越来越多的人,采用手机进行导航。
[0005]有鉴于此,如今迫切需要设计一种获取过K个必经点的N条最短路径的方法。

【发明内容】

[0006]本发明所要解决的技术问题是:提供一种导航系统中必经点最短路径的获取方法,可获取若干条过K个必经点的最短路径,方便用户根据需要选择。
[0007]为解决上述技术问题,本发明采用如下技术方案:
[0008]一种导航系统中必经点最短路径的获取方法,所述方法获取过K个必经点的N条最短路径,其中,K、N为大于等于1的整数;所述方法包括:
[0009]计算过第一条K个必经点的最短路径;
[0010]对每次找到的过K个必经点最短路径的子图进行再次分割,并且和已有子图存在的过K个必经点的最短路径的进行一一比较,找出最短路径,如此不断地重复执行,并在执行过程中去除重复的路径,直到路径条数达到满足或者已无路径为止。
[0011]作为本发明的一种优选方案,所述方法具体包括如下步骤:
[0012]步骤S1、计算第1条过K个必经点的最短路径;根据Dijkstra算法,对起点、必经点和终点所有可能路径,分别按顺序求取每两个结点之间的最短路径,然后进行依次叠加,从而计算出过第一条K个必经点的最短路径;
[0013]步骤S2、用第一数组类arrWebShortestPaths对第一条过K个必经点的最短路径进行添加;在该过K个必经点的最短路径对应的子图中,第1条最短路径对应的子图为原图,保持所有结点不变,按照该条路径进行分段断开,从而形成若干个对应的子图,计算每个子图对应的过K个必经点的最短路径,并把每个子图对应的最短路径的长度和从原图形成该子图所断开的某两个结点之间路段用第二数组类arrFormSubnetlnfo进行保存;
[0014]步骤S3、删除第二数组类arrFormSubnetlnfo此次中形成新子图的母图记录,比较第二数组类arrFormSubnetlnfo每个元素对应最短路径的长度,求最小长度,找出该元素,并从记录中可知其最短路径对应的子图是通过原图断开哪几段路段后形成的;故重新找出这条过K个必经点最短路径,与第一数组类arrWebShortestPaths中已存储的所有最短路径进行比较,若存在相同的,则不进行添加,反之,则添加;
[0015]步骤S4、判断第一数组类arrWebShortestPaths中已有的最短路径是否有存在重复路段,把没有重复路段的用整型变量作一标记,返回执行步骤S2,直到该标记值和所需的最短路径条数N相等或者已无最短路径为止。
[0016]本发明的有益效果在于:本发明提出的导航系统中必经点最短路径的获取方法,可获取若干条过K个必经点的最短路径,方便用户根据需要选择。
【专利附图】

【附图说明】
[0017]图1为26结点图的示意图。
[0018]图2为本发明最短路径获取方法的流程图。
【具体实施方式】
[0019]下面结合附图详细说明本发明的优选实施例。
[0020]实施例一
[0021]本发明在带有导航的手机(当然也可以是其他电子设备)基础上,在求解最短路径问题的经典方法Dijkstra算法的基础上,提出一种导航系统中必经点最短路径的获取方法。
[0022]设G=(V,E)是一个带权有向或无向图,例如图1,该图是由结点和相连的弧线组成,两个结点之间的不同连接方式组成了两点间所有的路径,每条路径都与其所在的子图相关,子图可以是原图断开某些结点之间的连接或去掉若干个结点以及与这些结点相关的连接组成。在一个子图中求过K个必经点的最短路径,可通过分段求解每一种排列的路径后,去路径最小值来确定最终的最短路径。
[0023]对于一个没有孤立结点的子图,每两个结点间存在最短路径;假设图中无孤立结点,那么从起始结点到目的结点之间存在若干条路径;对于每一条路径,该路径有多少段(不同结点之间的连接)就可以通过断开每一段形成多少个子图,这些子图中从起始结点到目的结点的路径集合相并再并上原图中被断开的这条路径所形成的集合,就等于原图中起始结点到目的结点之间的路径集合。根据以上原理可知,只要在子图中,起始结点和目的结点之间存在路径即是存在最短路径;故保持子图所有结点和原图一致,只是断开路径的不同,在原图找到两点之间的最短路径后,断开这条第一最短路径后形成的众子图都分别存在起始结点和目的结点之间的最短路径,倘若两结点之间还存在连接;对于原图来说第二最短路径便是这些形成子图的最短路径中最短的,如果所有子图中都不存在这两点间的路径时,表明只有第一最短路径这一条。
[0024]因此,求过K个必经结点的N条最短路径就是对每次找到的过K个必经点最短路径的子图进行再次分割,并且和已有子图存在的过K个必经点的最短路径的进行一一比较,找出最短的,这样不断地重复执行,并在执行过程中去除重复的路径直到路径条数达到满足或者已无路径为止。
[0025]对于过K个必经点的N条最短路径算法,必须先求得过第一条K个必经点的最短路径,然后再通过断开第一最短路径所形成的子图集对应的最短路径集合求第二最短路径,如此循环以致求得第N条最短路径。
[0026]请参阅图2,本发明导航系统中必经点最短路径的获取方法具体包括如下步骤:
[0027]【步骤S1】求出第1条过K个必经点的最短路径。根据Dijkstra算法,对起点、必经点和终点所有可能路径,分别按顺序求取每两个结点之间的最短路径,然后进行依次叠加,从而计算出过第一条K个必经点的最短路径。 [0028]【步骤S2】用第一数组类arrWebShortestPaths对第一条过K个必经点的最短路径进行添加;在该过K个必经点的最短路径对应的子图中(第1条对应的子图为原图),保持所有结点不变,按照该条路径进行分段断开,从而形成若干个对应的子图,计算每个子图对应的过K个必经点的最短路径,并把每个子图对应的最短路径的长度和从原图形成该子图所断开的某两个结点之间路段用第二数组类arrFormSubnetlnfo进行保存。
[0029]【步骤S3】删除第二数组类arrFormSubnetlnfo此次中形成新子图的母图记录,比较第二数组类arrFormSubnetlnfo每个元素对应最短路径的长度,求最小长度,找出该元素,并从记录中可知其最短路径对应的子图是通过原图断开哪几段路段后形成的。故重新找出这条过K个必经点最短路径,与第一数组类arrWebShortestPaths中已存储的所有最短路径进行比较,若存在相同的,则不进行添加,反之,则添加。
[0030]【步骤S4】判断第一数组类arrWebShortestPaths中已有的最短路径是否有存在重复路段,把没有重复路段的用整型变量作一标记,返回执行步骤S2,直到该标记值和所需的最短路径条数N相等或者已无最短路径为止。
[0031]综上所述,本发明提出的导航系统中必经点最短路径的获取方法,可获取若干条过K个必经点的最短路径,方便用户根据需要选择。
[0032]这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
【权利要求】
1.一种导航系统中必经点最短路径的获取方法,其特征在于,所述方法获取过K个必经点的N条最短路径,其中,K、N为大于等于1的整数;所述方法包括:计算过第一条K个必经点的最短路径;对每次找到的过K个必经点最短路径的子图进行再次分割,并且和已有子图存在的过K个必经点的最短路径的进行一一比较,找出最短路径,如此不断地重复执行,并在执行过程中去除重复的路径,直到路径条数达到满足或者已无路径为止。
2.根据权利要求1所述的导航系统中必经点最短路径的获取方法,其特征在于:所述方法具体包括如下步骤:步骤S1、计算第1条过K个必经点的最短路径;根据Dijkstra算法,对起点、必经点和终点所有可能路径,分别按顺序求取每两个结点之间的最短路径,然后进行依次叠加,从而计算出过第一条K个必经点的最短路径;步骤S2、用第一数组类对第一条过K个必经点的最短路径进行添加;在该过K个必经点的最短路径对应的子图中,第1条最短路径对应的子图为原图,保持所有结点不变,按照该条路径进行分段断开,从而形成若干个对应的子图,计算每个子图对应的过K个必经点的最短路径,并把每个子图对应的最短路径的长度和从原图形成该子图所断开的某两个结点之间路段用第二数组类进行保存;步骤S3、删除第二数组类此次中形成新子图的母图记录,比较第二数组类每个元素对应最短路径的长度,求最小长度,找出该元素,并从记录中可知其最短路径对应的子图是通过原图断开哪几段路段后形成的;故重新找出这条过K个必经点最短路径,与第一数组类中已存储的所有最短路径进行比较,若存在相同的,则不进行添加,反之,则添加;步骤S4、判断第一数组类中已有的最短路径是否有存在重复路段,把没有重复路段的用整型变量作一标记,返回执行步骤S2,直到该标记值和所需的最短路径条数N相等或者已无最短路径为止。
【文档编号】G01C21/34GK103674049SQ201310631719
【公开日】2014年3月26日 申请日期:2013年11月29日 优先权日:2013年11月29日
【发明者】李保印 申请人:闻泰通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1