CN109242168B - 确定最短路径的方法、装置、设备和计算机可读存储介质 - Google Patents

确定最短路径的方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN109242168B
CN109242168B CN201810983675.0A CN201810983675A CN109242168B CN 109242168 B CN109242168 B CN 109242168B CN 201810983675 A CN201810983675 A CN 201810983675A CN 109242168 B CN109242168 B CN 109242168B
Authority
CN
China
Prior art keywords
objects
determining
distance
shortest path
hierarchy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810983675.0A
Other languages
English (en)
Other versions
CN109242168A (zh
Inventor
汪洋
袁鹏程
陈曦
李方明
杨仁凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110837914.3A priority Critical patent/CN113592166B/zh
Priority to CN201810983675.0A priority patent/CN109242168B/zh
Publication of CN109242168A publication Critical patent/CN109242168A/zh
Application granted granted Critical
Publication of CN109242168B publication Critical patent/CN109242168B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/047Optimisation of routes or paths, e.g. travelling salesman problem

Abstract

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

Description

确定最短路径的方法、装置、设备和计算机可读存储介质
技术领域
本公开的实施例一般涉及数据处理领域,并且更具体地,涉及用于确定最短路径的方法和装置、设备和计算机可读存储介质。
背景技术
最短路径问题是指在源对象和目标对象已经确定的情况下,如何确定从源对象到目标对象的最小距离的问题。最短路径可以被广泛应用于各个领域,例如,在地图导航中确定起点到终点之间的最短路径、在社交领域中确定两个用户之间的社交关系、在网络通信领域中确定两个网络设备的最短路由等。
随着信息时代的发展,需要处理的对象的集合越来越庞大,对象之间的关系越来越复杂。因此,确定两个对象之间最短路径也越来越耗时,如何提高确定最短路径的计算效率已经成为一个关注的热点。
发明内容
根据本公开的实施例,提供了一种确定层级结构中源对象到目标对象的最短路径的方案。
在本公开的第一方面,提供了一种确定层级结构中源对象到目标对象的最短路径的方法。该方法包括:从该层级结构的多个对象集合中确定待处理对象集合,该多个对象集合中的每个对象集合的对象分别处于同一层级;迭代地执行以下至少一次:确定该待处理对象集合中该对象的数目是否超过预定阈值;响应于该数目超过该预定阈值,将该待处理对象集合划分成多个子集合;利用多个线程来分别处理该多个子集合,该处理至少包括:针对相应子集合中的第一对象,确定与该第一对象相关联的子对象,该子对象处于该第一对象所处层级的下一层级,以及记录从该子对象经由该第一对象到该源对象的距离;从该层级结构的该多个对象集合中确定与该子对象所处层级相对应的对象集合,以作为该待处理对象集合;以及基于所记录的距离,确定从该源对象到该目标对象的最短路径。
在本公开的第二方面,提供了一种用于确定层级结构中源对象到目标对象的最短路径的装置。该装置包括:待处理对象确定模块,被配置为从层级结构的多个对象集合中确定待处理对象集合,多个对象集合中的每个对象集合的对象分别处于同一层级;迭代执行模块,被配置为迭代地执行以下至少一次:确定待处理对象集合中对象的数目是否超过预定阈值;响应于数目超过预定阈值,将待处理对象集合划分成多个子集合;利用多个线程来分别处理多个子集合,处理至少包括:针对相应子集合中的第一对象,确定与第一对象相关联的子对象,子对象处于第一对象所处层级的下一层级,以及记录从子对象经由第一对象到源对象的距离;从层级结构的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合;以及最短路径确定模块,被配置为基于所记录的距离,确定从源对象到目标对象的最短路径。
在本公开的第三方面,提供了一种电子设备。该电子设备包括:一个或多个处理器;以及存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得电子设备实现根据本公开的第一方面的方法。
在本公开的第四方面中,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1A-图1B示出了传统的确定层级结构中最短路径的示意图;
图2示出了能够在其中实现本公开的实施例的示例性环境的示意图;
图3示出了根据本公开的实施例的用于确定层级结构中最短路径的方法的流程图;
图4示出了根据本公开的实施例的示例层级结构的示意图;
图5示出了根据本公开的实施例的用于确定层级结构中的最短路径的装置的方框图;以及
图6示出了能够实施本公开的实施例的电子设备的方框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
如上文所提及的,计算从源对象到目标对象的最短路径被广泛应用于多个领域。传统上,一般采用深度优先遍历或者广度优先遍历来确定两个对象之间的最短路径。深度优先遍历的定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。
图1A示出了传统的根据深度优先遍历来确定最短路径的示意图 100。如图1A所示,图1A中包括多个对象V1-V9 110-190,当采用深度优先遍历来确定从对象V1 110至对象V9 190的最短路径时,其所经历的过程如下:
V1
V1 V2
V1 V2 V5
V1 V2 V5 V6
V1 V2 V5 V6 V7
V1 V2 V5 V6 V7 V9(找到目标对象V9 190,记录长度5)
V1 V2 V5 V6 V8
V1 V2 V5 V6 V8 V9(找到目标对象V9 190,记录长度5)
V1 V3
V1 V4
V1 V4 V6
V1 V4 V6 V7
V1 V5 V6 V7 V9(找到目标对象V9 190,记录长度4)
V1 V4 V6 V8
V1 V4 V6 V8 V9(找到目标对象V9 190,记录长度4)
由以上过程可以看出,在确定对象V1 110至对象V9 190的最短路径的过程中,对象V6 160、V7 170、V8 180和V9 190(虚线框所示)被多次重复遍历。当对象数量较大,或者对象之间的连通度较高时,基于深度优先遍历的方法将会导致大量的重复遍历,进而对计算性能造成极大的影响。此外,由于基于深度优先遍历的最短路径确定算法本身不具备可并行性,其无法利用现有计算设备多线程的优势。
常规的另一种确定最短路径的方式是基于广度优先遍历。广度优先遍历的定义如下:步骤1、从图中的某个对象V0出发,并访问此顶点;步骤2、从V0出发,访问V0的各个未曾访问的邻接点W1、 W2、……Wk;然后,依次从W1、W2、……Wk出发访问各自未被访问的邻接点;步骤3、重复步骤2,直到全部顶点都被访问为止。
图1B示出了传统的根据广度优先遍历来确定最短路径的示意图 100’。如图1B所示,图1B中包括多个对象S1-S7 110’-170’。基于广度优先遍历的顺序为:S1 110’、S2120’、S3 130’、S4 140’、S5 150’、 S6 160’至S7 170’。例如,在确定对象S1 110’至S7170’的最短路径时,广度优先遍历无法记录从两个对象之间的路径,常规的方法是需要根据广度优先遍历的结果生成遍历树,并对遍历树进行深度优先遍历,从而带来了如图1A所描述的基于深度优先遍历的缺陷。
至少针对上述问题,本公开的实施例提供了一种确定层级结构中源对象到目标对象的最短路径的方案。该方案以基于广度优先的遍历为基础,利用多线程对每一层中的多个对象进行并行处理,并在子对象处记录经由父对象到源对象的距离。根据在目标对象处记录的到源对象的距离,确定从源对象到目标对象的最短路径。
基于这样的方案,本公开的实施例采用了多线程对多个对象进行并行处理,大大提高了确定最短路径的效率;此外,由于在每个对象处均记录了到源对象的距离,本公开的实施例可以基于所记录的距离依次确定最短路径所包括的对象,而不再需要利用一次额外的深度优先遍历来确定最短路径,从而提高了计算的性能。
下面将结合图2到图6来具体描述本公开的实施例。图2示出了能够在其中实现本公开的实施例的示例性环境200的示意图。
环境200中包括层级结构210。在本公开的上下文中,术语“层级结构”是按照层级组织的对象的集合,例如,有向图、无向图、加权图、无权图、连通图和不连通图等。应当理解,上述示例仅仅是为了说明的目的,而无意限制本公开的实施例的范围。
如图2所示,层级结构210的示例可以包括地图层级结构212、社交关系层级结构214和网络拓扑层级结构216等。例如,地图层级结构212可以存储多个地点对象之间的连通性以及对象之间的距离;好友关系层级结构214可以存储多个用户对象之间社交关系的连通性以及社交关系的亲密度;网络拓扑层级结构216可以存储多个网络节点对象之间的连通性以及对象之间的距离。应当理解,上述层级结构的示例仅仅是为了说明的目的,而无意限制本公开的实施例的范围。
计算设备230可以读取存储设备220中存储的层级结构210,从而计算出从特定的源对象到目标对象的最短路径240。例如,在一些实施例中,计算设备230可以根据地图层级结构212计算出从起点到终点的最短交通路径240。在一些实施例中,计算设备230可以根据社交关系层级结构214计算两个用户之间的最短社交关系路径240。在一些实施例中,计算设备230可以根据网络拓扑层级结构215计算两个网络节点之间的最短网络路径240。
应当理解,图2所示的各个部件的数目、结构、连接关系和布局都是示例性的,而非限制性的,并且其中一些部件是可选的。本领域技术人员在本公开的范围内可以在数目、结构、连接关系和布局等方面进行调整。
图3示出了根据本公开的实施例的用于确定最短路径的方法300 的流程图。方法300可以由图2中所示的计算设备230来执行。图4 示出了根据本公开的实施例的示例层级结构210。以下将结合图4的示例层级结构210来具体描述图3所示的实施例。如上文所述,图4 中的示例层级结构210可以被预先存储在存储设备220中,计算设备 230例如可以通过方法300确定从源对象O1 402到目标对象O11 422 的最短路径。
在框302,计算设备230从层级结构210的多个对象集合中确定待处理对象集合,其中多个对象集合中的每个对象集合的对象分别处于同一层级。如图4所示,层级结构210包括多个对象O1 402、O2 404、……、O13 426。例如,在层级结构210中,对象O1 402位于第一层级,O2 404、O3 406、O4 408和O5 410位于第二层级。在图 4的示例中,计算设备230从层级结构210确定的待处理对象集合为 {O1 402}。
在框304,计算设备230确定待处理对象集合中对象的数目是否超过预定阈值。在一些实施例中,计算设备230可以通过平衡启动多线程所带来的开销与并行的粒度来预先确定阈值,从而使得待处理集合中对象的数目超过预定阈值时,通过启动多线程可以提高处理的效率。例如,在图4的示例中,可以设定预定阈值为3,此时待处理集合中对象的数目1小于预定阈值3。
如果在框304处确定对象的数目未超过所述阈值,则方法300进行到框316,即利用单线程处理待处理对象集合。具体地,在该处理过程,计算设备230首先确定与待处理对象集合中对象相关联的子对象,该子对象处于待处理对象集合中对象所处层级的下一层级。以图4为例,对于待处理对象集合{O1 402},其子对象包括:对象O2 404、对象O3 406、对象O3 408以及对象O5 410。
随后,计算设备230记录从子对象经由待处理对象集合中对象到源对象的距离。以图4为例,计算设备230分别在子对象O2 404、子对象O3 406、子对象O3 408以及子对象O5410处记录到源对象O1 402的距离。例如,在对象O2 404处可以记录{O1,DisO1-O2},其中DisO1-O2表示对象O2 404与源对象O1 402的距离。
在框310,计算设备230从层级结构210的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合。在一些实施例中,计算设备230可以计算设备获取与多个子集合中的对象相关联的至少一个子对象。随后,计算设备230可以对至少一个子对象进行合并,以作为与所述子对象所处层级相对应的对象集合。以图 4为例,对于待处理对象集合{O1 402},其子对象包括:对象O2 404、对象O3 406、对象O3 408以及对象O5410,新的待处理对象集合为 {O2 404、O3 406、O3 408、O5 410}
在框312,计算设备230确定待处理对象集合是否为空。继续图 4的示例,新的待处理对象集合为{O2 404、O3 406、O3 408、O5 410}。因此方法300返回到框304,即,确认新的待处理对象集合中的对象的数目是否超过预定阈值。继续图4的示例,新的待处理对象集合中对象的数目为4,其大于预定阈值3。
响应于在框304确定该数目大于预定阈值,方法300进行到框 306,即计算设备230将待处理对象集合划分为多个子集合。在一些实施例中,计算设备230可以根据预先设定的规则来确定所划分子集的数目。例如,当对象数目大于3且小于100时,将对象集合平均划分为2个子集合;当对象数目达到100且小于1000时,将对象集合平均划分为4个子集合。应当理解,以上具体数值仅是示例,本领域技术人员可以根据不同的层级结构及不同的计算设备灵活地设置不同的划分规则。
在图4的示例中,计算设备230可以将待处理对象集合{O2 404、 O3 406、O4 408、O5 410}按顺序划分为2个子集合{O2 404、O3 406} 以及{O4 408、O5 410}。
在框308,计算设备230利用多个线程分别处理多个子集合。在一些实施例中,计算设备230可以预先设置线程池,并且根据需要从线程池中选取多个线程来处理多个子集合。在一些实施例中,计算设备230也可以新建新的线程以用于处理多个子集合。在图4的示例中,可以利用2个线程分别处理子集合{O2 404、O3 406}和子集合{O4 408、O5 410}。
如图3所示,框308包括针对相应子集合中的每个对象确定子对象,并记录子对象经由该对象到源对象的距离。具体地,在框308A,计算设备230确定与第一对象相关联的子对象,该子对象处于第一对象所处层级的下一层级。继续图4的示例,对于子集合{O2 404、O3 406} 中的第一对象O2 404,计算设备230可以确定其子对象为O6 412。
在框308B,计算设备230记录从子对象经由第一对象到源对象的距离。在一些实施例中,计算设备230可以基于在第一对象处所记录的距离,确定从第一对象到源对象的第一最短距离。例如,对于第一对象O2 404,其所记录的到源对象O1 402的最短距离为DisO1-O2。然后,计算设备230可以获取子对象到第一对象的第二距离。例如,对于子对象O6 412,其到第一对象O2 404的距离可以表示为DisO1-O2。计算设备230可以记录第一最短距离与第二距离的总和。例如,对于子对象O6 412,计算设备230可以在对象O6 412处记录{O2,DisO1-O2 +DisO1-O2},以表示经由第一对象O2 404到源对象O1 402的距离。
在一些实施例中,在记录完第一对象的所有子对象经由第一对象到源对象的距离后,计算设备230可以对第一对象进行标记,以避免第一对象被重复处理。
在一些实施例中,计算设备230可以为所启动的每个线程分配对应的缓存区,并在与每个线程相关联的缓存区处记录子对象经由第一对象到源对象的距离。
在一些实施例中,当多个线程完成对相应的子集合的处理后,计算设备230可以将与线程相关联的缓存区中记录的距离合并到预分配的存储区中。基于这样的方式,可以避免可能存在的多线程对于同一内存空间的写冲突,例如,对于对象O11 422,如果对象O6412和对象O7 414被分配以不同的线程进行处理,则可能出现两个线程对记录对象O11 422分别经由对象O6 412和经由对象O7 414到源对象 O1 402的距离的写入冲突。在一些实施例中,在完成合并后,计算设备230可以释放与线程相关联的缓存区。
随后,方法300进行到框310,即计算设备230从层级结构210 的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合。如上文所述,计算设备230可以计算设备获取与多个子集合中的对象相关联的至少一个子对象。随后,计算设备230可以对至少一个子对象进行合并,以作为与所述子对象所处层级相对应的对象集合。继续图4的示例,对于待处理对象集合{O2 404、O3 406、 O4 408、O5 410},其子对象包括:对象O6 412、对象O4 408、对象 O7 414、对象O8 416、对象O9 418以及对象O10 420。在一些实施例中,由于对象O4 408已经在先前处理过程中被标记为不再被重复处理,因此,所确定新的待处理对象集合为{O6 412、O7 414、O8 416、 O9 418、O10 420}。
在接下来的过程中,可以针对新的待处理集合迭代地执行步骤 304-302,或者步骤304、316、310和312。当在312确定的新的待处理集合为空时,计算设备230可以判定已经对层级结构210中所有的对象完成了处理,此时方法300结束迭代。此时,对于图4所示的层次结构210,在各对象所记录的距离信息如下:
O2 404:{O1,DisO1-O2};
O3 406:{O1,DisO1-O3};
O4 408:{O1,DisO1-O4},{O3,DisO1-O3+DisO3-O4};
O5 410:{O1,DisO1-O5};
O6 412:{O2,DisO1-O2+DisO2-O6},{O3,DisO1-O3+DisO3-O6};
O7 414:{O3,DisO1-O3+DisO3-O7};
O8 414:{O4,DisO1-O4+DisO4-O8},{O11,min(DisO1-O8)+DisO11-O8};
O9 414:{O5,DisO1-O5+DisO5-O9};
O10 420:{O5,DisO1-O5+DisO5-O10};
O11 422:{O6,min(DisO1-O6)+DisO6-O11},{O3,min(DisO1-O3)+ DisO3-O11},{O7,min(DisO1-O7)+DisO7-O11};
O12 424:{O9,DisO1-O9+DisO9-O12},{O11,min(DisO1-O11)+ DisO11-O12};
O13 426:{O11,min(DisO1-O11)+DisO11-O13}。
以O11 422所记录的信息为例,其记录了从三个不同的父对象 O6 412,O3 406以及O7 414到源对象O1 402的距离,其中min (DisO1-O6)表示在对象O6 412处所记录的到源对象O1 402的最短距离。
在框314,计算设备230基于所记录的距离,确定从源对象到目标对象的最短路径。具体地,计算设备230可以基于在目标对象处记录的距离,从多个对象集合中确定与目标对象相关联的父对象,该目标对象经由该父对象具有到该目标对象的最小距离。
继续图4的示例,对于目标对象O11 422,其具有三个父对象,分别为O6 412、O3406和O7 414。计算设备230可以选择其中与最短距离相对应的目标对象作为最短路径上的路径对象。例如,为了简要说明起见,当图4的层次结构为无权图时,即每两个相邻对象之间的距离均为1。此时,对象O11 422处记录的距离信息为:{O6,3}, {O3,2},{O7,3}。因此,可以确定从源对象O1 402到目标对象O11 422的最短路径包括父对象O3 406。
随后,计算设备230可以基于所确定的父对象,确定从源对象到目标对象的最短路径。继续图4的示例,对于所确定的父对象O3 406,计算设备230可以利用在父对象O3 406处所记录的距离来确定最短路径。由于在对象O3 406处仅记录了{O1,DisO1-O3},因此最短路径中下一个对象为O1 402,即为源对象,此时,即已经找到了从源对象 402到目标对象422的最短路径:O1 402,O3 406,O11 422。应当理解,可以迭代地执行寻找父对象的步骤,直至找到源对象,从而确定从源对象到目标对象的最短路径。
根据本公开的实施例,可以利用基于广度优先来对各个领域中的各种类型的层次结构(例如,地图层次结构、社交关系层次结构、网络连接层次结构等)进行遍历,并利用广度优先可并行的特点,大大提高了确定最短路径的效率,从而能够提升用户的使用体验,例如,更快地确定从起点到终点的导航路径,更快找到与某个用户之间的社交联系,更快地确定与某个网络设备最短的路由路径等。此外,由于在每个对象处均记录了到源对象的距离,本公开的实施例可以基于所记录的距离高效地确定最短路径所包括的对象,而不再需要利用额外的深度优先遍历,从而提高了计算的性能。
图5示出了根据本公开的实施例的用于确定最短路径的装置500 的方框图。装置500可以被包括在图2的计算设备230中或者被实现为计算设备230。如图5所示,装置500包括待处理对象确定模块510,被配置为从层级结构的多个对象集合中确定待处理对象集合,多个对象集合中的每个对象集合的对象分别处于同一层级。装置500还包括迭代执行模块520,被配置为迭代地执行以下至少一次:确定待处理对象集合中对象的数目是否超过预定阈值;响应于数目超过预定阈值,将待处理对象集合划分成多个子集合;利用多个线程来分别处理多个子集合,处理至少包括:针对相应子集合中的第一对象,确定与第一对象相关联的子对象,子对象处于第一对象所处层级的下一层级,以及记录从子对象经由第一对象到源对象的距离;从层级结构的多个对象集合中确定与子对象所处层级相对应的对象集合,以作为待处理对象集合。装置500还包括最短路径确定模块530,被配置为基于所记录的距离,确定从源对象到目标对象的最短路径。
在一些实施例中,迭代执行模块520可以包括:标记模块,被配置为对第一对象进行标记,以避免第一对象被重复处理。
在一些实施例中,迭代执行模块520可以包括:最短距离确定模块,被配置为基于在第一对象处所记录的距离,确定从第一对象到源对象的第一最短距离;第二距离获取模块,被配置为获取子对象到第一对象的第二距离;以及总和记录模块,被配置为记录第一最短距离与第二距离的总和。
在一些实施例中,迭代执行模块520可以包括:距离记录模块,被配置为在与多个线程相关联的多个缓存区处记录距离;以及合并模块,被配置为响应于多个线程执行完成,将多个缓存区中所记录的距离合并到预分配的存储区中。
在一些实施例中,迭代执行模块520可以包括:释放模块,被配置为释放与多个线程相关联的多个缓存区。
在一些实施例中,迭代执行模块520可以包括:子对象获取模块,被配置为获取与多个子集合中的对象相关联的至少一个子对象;以及子对象合并模块,被配置为对至少一个子对象进行合并,以作为与子对象所处层级相对应的对象集合。
在一些实施例中,最短路径确定模块530可以包括:父对象确定模块,被配置为基于在目标对象处所记录的距离,从多个对象集合中确定与目标对象相关联的父对象,目标对象经由父对象具有到目标对象的最小距离;以及最短路径生成模块,被配置为基于父对象,生成最短路径。
图6示出了可以用来实施本公开的实施例的电子设备600的示意性框图。设备600可以用于实现图2的计算设备230。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可以存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/ 数据。
处理单元601执行上文所描述的各个方法和处理,例如方法300。例如,在一些实施例中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序加载到RAM 603并由 CPU 601执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实施例中,CPU 601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法300。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (14)

1.一种确定层级结构中的源对象到目标对象的最短路径的方法,包括:
从所述层级结构的多个对象集合中确定待处理对象集合,所述多个对象集合中的每个对象集合的对象分别处于同一层级;
迭代地执行以下至少一次:
确定所述待处理对象集合中所述对象的数目是否超过预定阈值;
响应于所述数目超过所述预定阈值,将所述待处理对象集合划分成多个子集合;
利用多个线程来分别处理所述多个子集合,所述处理至少包括:
针对相应子集合中的第一对象,
确定与所述第一对象相关联的子对象,所述子对象处于所述第一对象所处层级的下一层级,以及
记录从所述子对象经由所述第一对象到所述源对象的距离,其中所述第一对象被标记以避免重复处理;
从所述层级结构的所述多个对象集合中确定与所述子对象所处层级相对应的对象集合,以作为所述待处理对象集合;以及
基于所记录的距离,确定从所述源对象到所述目标对象的最短路径。
2.根据权利要求1所述的方法,其中记录从所述子对象经由所述第一对象到所述源对象的距离包括:
基于在所述第一对象处所记录的距离,确定从所述第一对象到所述源对象的第一最短距离;
获取所述子对象到所述第一对象的第二距离;以及
记录所述第一最短距离与所述第二距离的总和。
3.根据权利要求1所述的方法,其中利用多个线程来分别处理所述多个子集合包括:
在与所述多个线程相关联的多个缓存区处记录所述距离;以及
响应于所述多个线程执行完成,将所述多个缓存区中所记录的所述距离合并到预分配的存储区中。
4.根据权利要求3所述的方法,还包括:
释放与所述多个线程相关联的所述多个缓存区。
5.根据权利要求1所述的方法,其中确定与所述子对象所处层级相对应的对象集合包括:
获取与所述多个子集合中的对象相关联的至少一个子对象;以及
对所述至少一个子对象进行合并,以作为与所述子对象所处层级相对应的对象集合。
6.根据权利要求1所述的方法,其中确定从所述源对象到所述目标对象的所述最短路径包括:
基于在所述目标对象处所记录的距离,从所述多个对象集合中确定与所述目标对象相关联的父对象,所述目标对象经由所述父对象具有到所述目标对象的最小距离;以及
基于所述父对象,生成所述最短路径。
7.一种用于确定层级结构中的源对象到目标对象的最短路径的装置,包括:
待处理对象确定模块,被配置为从所述层级结构的多个对象集合中确定待处理对象集合,所述多个对象集合中的每个对象集合的对象分别处于同一层级;
迭代执行模块,被配置为迭代地执行以下至少一次:
确定所述待处理对象集合中所述对象的数目是否超过预定阈值;
响应于所述数目超过所述预定阈值,将所述待处理对象集合划分成多个子集合;
利用多个线程来分别处理所述多个子集合,所述处理至少包括:
针对相应子集合中的第一对象,
确定与所述第一对象相关联的子对象,所述子对象处于所述第一对象所处层级的下一层级,以及
记录从所述子对象经由所述第一对象到所述源对象的距离,其中所述第一对象被标记以避免重复处理;
从所述层级结构的所述多个对象集合中确定与所述子对象所处层级相对应的对象集合,以作为所述待处理对象集合;以及
最短路径确定模块,被配置为基于所记录的距离,确定从所述源对象到所述目标对象的最短路径。
8.根据权利要求7所述的装置,其中所述迭代执行模块包括:
最短距离确定模块,被配置为基于在所述第一对象处所记录的距离,确定从所述第一对象到所述源对象的第一最短距离;
第二距离获取模块,被配置为获取所述子对象到所述第一对象的第二距离;以及
总和记录模块,被配置为记录所述第一最短距离与所述第二距离的总和。
9.根据权利要求7所述的装置,其中所述迭代执行模块包括:
距离记录模块,被配置为在与所述多个线程相关联的多个缓存区处记录所述距离;以及
合并模块,被配置为响应于所述多个线程执行完成,将所述多个缓存区中所记录的所述距离合并到预分配的存储区中。
10.根据权利要求9所述的装置,其中所述迭代执行模块包括:
释放模块,被配置为释放与所述多个线程相关联的所述多个缓存区。
11.根据权利要求7所述的装置,其中所述迭代执行模块包括:
子对象获取模块,被配置为获取与所述多个子集合中的对象相关联的至少一个子对象;以及
子对象合并模块,被配置为对所述至少一个子对象进行合并,以作为与所述子对象所处层级相对应的对象集合。
12.根据权利要求7所述的装置,其中所述最短路径确定模块包括:
父对象确定模块,被配置为基于在所述目标对象处所记录的距离,从所述多个对象集合中确定与所述目标对象相关联的父对象,所述目标对象经由所述父对象具有到所述目标对象的最小距离;以及
最短路径生成模块,被配置为基于所述父对象,生成所述最短路径。
13.一种电子设备,所述电子设备包括:
一个或多个处理器;以及
存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现根据权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-6中任一项所述的方法。
CN201810983675.0A 2018-08-27 2018-08-27 确定最短路径的方法、装置、设备和计算机可读存储介质 Active CN109242168B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110837914.3A CN113592166B (zh) 2018-08-27 2018-08-27 用于图检索的方法、设备、存储介质和程序产品
CN201810983675.0A CN109242168B (zh) 2018-08-27 2018-08-27 确定最短路径的方法、装置、设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810983675.0A CN109242168B (zh) 2018-08-27 2018-08-27 确定最短路径的方法、装置、设备和计算机可读存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110837914.3A Division CN113592166B (zh) 2018-08-27 2018-08-27 用于图检索的方法、设备、存储介质和程序产品

Publications (2)

Publication Number Publication Date
CN109242168A CN109242168A (zh) 2019-01-18
CN109242168B true CN109242168B (zh) 2021-06-04

Family

ID=65069613

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110837914.3A Active CN113592166B (zh) 2018-08-27 2018-08-27 用于图检索的方法、设备、存储介质和程序产品
CN201810983675.0A Active CN109242168B (zh) 2018-08-27 2018-08-27 确定最短路径的方法、装置、设备和计算机可读存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110837914.3A Active CN113592166B (zh) 2018-08-27 2018-08-27 用于图检索的方法、设备、存储介质和程序产品

Country Status (1)

Country Link
CN (2) CN113592166B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111626916B (zh) * 2020-06-01 2024-03-22 上海商汤智能科技有限公司 信息处理方法、装置及设备
CN113342524B (zh) * 2021-06-04 2023-10-24 中国人民解放军军事科学院评估论证研究中心 作战体系结构可靠性分析方法、装置、设备和介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064872B (zh) * 2011-10-24 2016-08-17 斯凯普公司 使用数据结构处理搜索查询
GB201118332D0 (en) * 2011-10-24 2011-12-07 Skype Ltd Processing search queries in a network of interconnected nodes
CN102880642A (zh) * 2012-08-20 2013-01-16 浙江工业大学 一种基于加权有向网络模型的公交换乘方法
CN103425753A (zh) * 2013-07-24 2013-12-04 浙江大学 一种基于方向寻优的启发式最短路径搜索方法
CN103500072A (zh) * 2013-09-27 2014-01-08 华为技术有限公司 数据迁移方法及数据迁移装置
CN104503901B (zh) * 2014-12-04 2017-08-25 中国人民解放军总参谋部第五十四研究所 一种基于静态路径分析的导向符号执行方法
CN104966205A (zh) * 2014-12-15 2015-10-07 深圳市腾讯计算机系统有限公司 对象抽取的方法和装置
WO2016118615A1 (en) * 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
GB201509910D0 (en) * 2015-06-08 2015-07-22 Univ Surrey Parallel processing of sphere decoders and other vector finding approaches using tree search
CN105515977B (zh) * 2015-12-21 2020-05-12 腾讯科技(深圳)有限公司 获取网络中传输路径的方法、装置和系统
CN108334978A (zh) * 2018-01-04 2018-07-27 复旦大学 一种基于树分解的并行化路径计算方法

Also Published As

Publication number Publication date
CN113592166A (zh) 2021-11-02
CN109242168A (zh) 2019-01-18
CN113592166B (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
Zhu et al. Shortest path and distance queries on road networks: towards bridging theory and practice
US8824337B1 (en) Alternate directions in hierarchical road networks
JP4227304B2 (ja) 概略配線方法及び装置並びに概略配線プログラムを格納した記録媒体
JP6332264B2 (ja) 類似データ検索装置、類似データ検索方法、及びプログラム
JP6508661B2 (ja) データ処理システム、計算ノードおよびデータ処理方法
US20190303266A1 (en) String transformation based trace classification and analysis
CN113537502B (zh) 量子电路的处理方法、装置、电子设备和存储介质
CN109242168B (zh) 确定最短路径的方法、装置、设备和计算机可读存储介质
CN111324577B (zh) 一种Yml文件读写的方法及装置
CN109033365B (zh) 一种数据处理方法及相关设备
US9910878B2 (en) Methods for processing within-distance queries
Zhou et al. Leveraging history for faster sampling of online social networks
JP4924850B2 (ja) コンピュータプログラム及び装置
EP3657360A1 (en) Method, device, and apparatus for word vector processing based on clusters
CN112269848A (zh) 一种众包轨迹数据融合方法及装置
JP6561993B2 (ja) データ管理システム、データ管理装置、データ管理方法、および、プログラム
CN109684185A (zh) 基于启发式遍历的超级计算机大数据处理能力测试方法
CN114690786A (zh) 一种移动机器的路径规划方法和装置
CN113868434A (zh) 图数据库的数据处理方法、设备和存储介质
US9697276B2 (en) Large taxonomy categorization
US20110238667A1 (en) B-Tree Ordinal Approximation
JP5981382B2 (ja) 部分木併合装置、部分木併合方法および部分木併合プログラム
JPWO2016059787A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
CN111612069A (zh) 基于动态网格哈希索引的密度聚类方法及装置
Retima et al. A quality-aware context information selection based fuzzy logic in IoT environment.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant