确定最短路径的方法、装置、设备和计算机可读存储介质制造方法及图纸

技术编号:20161252 阅读:27 留言:0更新日期:2019-01-19 00:14
本公开的实施例提供了用于确定最短路径的方法、装置、设备和计算机可读存储介质。用于确定最短路径的方法包括:从层级结构的多个对象集合中确定待处理对象集合,多个对象集合中的每个对象集合的对象分别处于同一层级;迭代地执行以下至少一次:确定待处理对象集合中对象的数目是否超过预定阈值;响应于数目超过预定阈值,将待处理对象集合划分成多个子集合;利用多个线程来分别处理多个子集合;从层级结构的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合;以及确定从源对象到目标对象的最短路径。

【技术实现步骤摘要】
确定最短路径的方法、装置、设备和计算机可读存储介质
本公开的实施例一般涉及数据处理领域,并且更具体地,涉及用于确定最短路径的方法和装置、设备和计算机可读存储介质。
技术介绍
最短路径问题是指在源对象和目标对象已经确定的情况下,如何确定从源对象到目标对象的最小距离的问题。最短路径可以被广泛应用于各个领域,例如,在地图导航中确定起点到终点之间的最短路径、在社交领域中确定两个用户之间的社交关系、在网络通信领域中确定两个网络设备的最短路由等。随着信息时代的发展,需要处理的对象的集合越来越庞大,对象之间的关系越来越复杂。因此,确定两个对象之间最短路径也越来越耗时,如何提高确定最短路径的计算效率已经成为一个关注的热点。
技术实现思路
根据本公开的实施例,提供了一种确定层级结构中源对象到目标对象的最短路径的方案。在本公开的第一方面,提供了一种确定层级结构中源对象到目标对象的最短路径的方法。该方法包括:从该层级结构的多个对象集合中确定待处理对象集合,该多个对象集合中的每个对象集合的对象分别处于同一层级;迭代地执行以下至少一次:确定该待处理对象集合中该对象的数目是否超过预定阈值;响应于该数目超过该预定阈值,将该待处理对象集合划分成多个子集合;利用多个线程来分别处理该多个子集合,该处理至少包括:针对相应子集合中的第一对象,确定与该第一对象相关联的子对象,该子对象处于该第一对象所处层级的下一层级,以及记录从该子对象经由该第一对象到该源对象的距离;从该层级结构的该多个对象集合中确定与该子对象所处层级相对应的对象集合,以作为该待处理对象集合;以及基于所记录的距离,确定从该源对象到该目标对象的最短路径。在本公开的第二方面,提供了一种用于确定层级结构中源对象到目标对象的最短路径的装置。该装置包括:待处理对象确定模块,被配置为从层级结构的多个对象集合中确定待处理对象集合,多个对象集合中的每个对象集合的对象分别处于同一层级;迭代执行模块,被配置为迭代地执行以下至少一次:确定待处理对象集合中对象的数目是否超过预定阈值;响应于数目超过预定阈值,将待处理对象集合划分成多个子集合;利用多个线程来分别处理多个子集合,处理至少包括:针对相应子集合中的第一对象,确定与第一对象相关联的子对象,子对象处于第一对象所处层级的下一层级,以及记录从子对象经由第一对象到源对象的距离;从层级结构的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合;以及最短路径确定模块,被配置为基于所记录的距离,确定从源对象到目标对象的最短路径。在本公开的第三方面,提供了一种电子设备。该电子设备包括:一个或多个处理器;以及存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得电子设备实现根据本公开的第一方面的方法。在本公开的第四方面中,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。附图说明结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1A-图1B示出了传统的确定层级结构中最短路径的示意图;图2示出了能够在其中实现本公开的实施例的示例性环境的示意图;图3示出了根据本公开的实施例的用于确定层级结构中最短路径的方法的流程图;图4示出了根据本公开的实施例的示例层级结构的示意图;图5示出了根据本公开的实施例的用于确定层级结构中的最短路径的装置的方框图;以及图6示出了能够实施本公开的实施例的电子设备的方框图。具体实施方式下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。如上文所提及的,计算从源对象到目标对象的最短路径被广泛应用于多个领域。传统上,一般采用深度优先遍历或者广度优先遍历来确定两个对象之间的最短路径。深度优先遍历的定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。图1A示出了传统的根据深度优先遍历来确定最短路径的示意图100。如图1A所示,图1A中包括多个对象V1-V9110-190,当采用深度优先遍历来确定从对象V1110至对象V9190的最短路径时,其所经历的过程如下:V1V1V2V1V2V5V1V2V5V6V1V2V5V6V7V1V2V5V6V7V9(找到目标对象V9190,记录长度5)V1V2V5V6V8V1V2V5V6V8V9(找到目标对象V9190,记录长度5)V1V3V1V4V1V4V6V1V4V6V7V1V5V6V7V9(找到目标对象V9190,记录长度4)V1V4V6V8V1V4V6V8V9(找到目标对象V9190,记录长度4)由以上过程可以看出,在确定对象V1110至对象V9190的最短路径的过程中,对象V6160、V7170、V8180和V9190(虚线框所示)被多次重复遍历。当对象数量较大,或者对象之间的连通度较高时,基于深度优先遍历的方法将会导致大量的重复遍历,进而对计算性能造成极大的影响。此外,由于基于深度优先遍历的最短路径确定算法本身不具备可并行性,其无法利用现有计算设备多线程的优势。常规的另一种确定最短路径的方式是基于广度优先遍历。广度优先遍历的定义如下:步骤1、从图中的某个对象V0出发,并访问此顶点;步骤2、从V0出发,访问V0的各个未曾访问的邻接点W1、W2、……Wk;然后,依次从W1、W2、……Wk出发访问各自未被访问的邻接点;步骤3、重复步骤2,直到全部顶点都被访问为止。图1B示出了传统的根据广度优先遍历来确定最短路径的示意图100’。如图1B所示,图1B中包括多个对象S1-S7110’-170’。基于广度优先遍历的顺序为:S1110’、S2120’、S3130’、S4140’、S5150’、S6160’至S7170’。例如,在确定对象S1110’至S7170’的最短路径时,广度优先遍历无法记录从两个对象之间的路径,常规的方法是需要根据广度优先遍历的结果生成遍历树,并对遍历树进行深度优先遍历,从而带来了如图1A所描述的基于深度优先遍历的缺陷。至少针对上述问题,本公开的实施例提供了一种确定层级结构中源对象到目标对象的最短路径的方案。该方案以基于广度优先的遍历为基础,利用多线程对每一层中的多个对象进行并行处理,并在子对象处记录经由父对象到源对象的距离。根据在目标对象处记录的到源对象的距离,确定从源对象到目标对象的最短路径。基于这样的方案,本公开的实施例采用了多线程对多个对象进行并行处理,大大提高了确定最短路径的效率;此外,由于在每个对象处均记录了到源对象的距离,本公开的实本文档来自技高网
...

【技术保护点】
1.一种确定层级结构中的源对象到目标对象的最短路径的方法,包括:从所述层级结构的多个对象集合中确定待处理对象集合,所述多个对象集合中的每个对象集合的对象分别处于同一层级;迭代地执行以下至少一次:确定所述待处理对象集合中所述对象的数目是否超过预定阈值;响应于所述数目超过所述预定阈值,将所述待处理对象集合划分成多个子集合;利用多个线程来分别处理所述多个子集合,所述处理至少包括:针对相应子集合中的第一对象,确定与所述第一对象相关联的子对象,所述子对象处于所述第一对象所处层级的下一层级,以及记录从所述子对象经由所述第一对象到所述源对象的距离;从所述层级结构的所述多个对象集合中确定与所述子对象所处层级相对应的对象集合,以作为所述待处理对象集合;以及基于所记录的距离,确定从所述源对象到所述目标对象的最短路径。

【技术特征摘要】
1.一种确定层级结构中的源对象到目标对象的最短路径的方法,包括:从所述层级结构的多个对象集合中确定待处理对象集合,所述多个对象集合中的每个对象集合的对象分别处于同一层级;迭代地执行以下至少一次:确定所述待处理对象集合中所述对象的数目是否超过预定阈值;响应于所述数目超过所述预定阈值,将所述待处理对象集合划分成多个子集合;利用多个线程来分别处理所述多个子集合,所述处理至少包括:针对相应子集合中的第一对象,确定与所述第一对象相关联的子对象,所述子对象处于所述第一对象所处层级的下一层级,以及记录从所述子对象经由所述第一对象到所述源对象的距离;从所述层级结构的所述多个对象集合中确定与所述子对象所处层级相对应的对象集合,以作为所述待处理对象集合;以及基于所记录的距离,确定从所述源对象到所述目标对象的最短路径。2.根据权利要求1所述的方法,其中记录从所述子对象经由所述第一对象到所述源对象的距离包括:对所述第一对象进行标记,以避免所述第一对象被重复处理。3.根据权利要求1所述的方法,其中记录从所述子对象经由所述第一对象到所述源对象的距离包括:基于在所述第一对象处所记录的距离,确定从所述第一对象到所述源对象的第一最短距离;获取所述子对象到所述第一对象的第二距离;以及记录所述第一最短距离与所述第二距离的总和。4.根据权利要求1所述的方法,其中利用多个线程来分别处理所述多个子集合包括:在与所述多个线程相关联的多个缓存区处记录所述距离;以及响应于所述多个线程执行完成,将所述多个缓存区中所记录的所述距离合并到预分配的存储区中。5.根据权利要求4所述的方法,还包括:释放与所述多个线程相关联的所述多个缓存区。6.根据权利要求1所述的方法,其中确定与所述子对象所处层级相对应的对象集合包括:获取与所述多个子集合中的对象相关联的至少一个子对象;以及对所述至少一个子对象进行合并,以作为与所述子对象所处层级相对应的对象集合。7.根据权利要求1所述的方法,其中确定从所述源对象到所述目标对象的所述最短路径包括:基于在所述目标对象处所记录的距离,从所述多个对象集合中确定与所述目标对象相关联的父对象,所述目标对象经由所述父对象具有到所述目标对象的最小距离;以及基于所述父对象,生成所述最短路径。8.一种用于确定层级结构中的源对象到目标对象的最短路径的装置,包括:待处理对象确定模块,被配置为从所述层级结构的多个对象集合中确定待处理对象集合,所述多个对象集合中的每个对象集合的对象分别处于同一层级;迭代执行模块,被配置为迭代地执行以下至少一次:确定所述待处理对象集...

【专利技术属性】
技术研发人员:汪洋袁鹏程陈曦李方明杨仁凯
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

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

1