一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种发送、接收路径信息的方法及装置与流程

2022-11-16 12:19:34 来源:中国专利 TAG:


1.本技术涉及计算设备领域,尤其涉及一种发送、接收路径信息的方法及装置。


背景技术:

2.最短路径,是指从某节点出发,沿图的边到达另一节点所经过的路径中,各边上权值之和最小的一条路径。最短路径问题旨在寻找网络中两节点之间的最短路径的,在社交网络、故障发现等领域有广泛应用。
3.一种常用的获取最短路径的算法,是采用邻接矩阵存储两点之间的权重(即距离),对于每一对节点,若图中存在比已知的路径更短的路径,就更新邻接矩阵中对应的值,最终的邻接矩阵中的值,即为每对节点之间的最短路径。但该算法空间复杂度高,对于大规模的图,邻接矩阵会占用大量内存资源,存储资源不足的单机无法实现。
4.综上可知,如何获取大规模图中节点间的最短路径是亟待解决的问题。


技术实现要素:

5.本技术提供一种发送、接收路径信息的方法及装置,以获取大规模图中节点间的最短路径。
6.为达到上述目的,本技术实施例采用如下技术方案:
7.第一方面,提供一种发送路径信息的方法,该方法可以包括:在第t次迭代中,第一计算顶点向第二计算顶点发送k个第一路径信息,k为第一计算顶点在第t次迭代中所允许发送第一路径信息数量的上限值;第二计算顶点为第一计算顶点相邻的下游计算顶点;第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;在向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点在后续的迭代中向第二计算顶点发送剩余的第一路径信息。其中,t、k均为正整数。
8.通过本技术提供的发送路径信息的方法,通过配置允许发送第一路径信息数量的上限值k,使得第一计算顶点在向相邻的下游第二计算顶点发送第一路径信息时,受最大发送数k的限制,一次最多发送k个,如果待发送的第一路径信息过多,分多次发送,这样一来,在获取大规模图中节点间的最短路径时,通过设置符合网络架构的k值,就可以避免入度过大的节点由于一次收到过多的路径消息时,内存不足或处理消息超时导致的程序运行失败而无法获取图中最短路径,进而无法获取图中节点间的最短路径的问题。并通过在确定存在未发送的第一路径信息时在后续迭代中向第二计算顶点发送剩余的第一路径信息,以保证全部第一路径信息的发送。大规模图中的各个计算顶点,采用本技术提供的方案,通过时间换空间的方式,在多次迭代后,可以获取大规模图中计算顶点间的最短路径。
9.在一种可能的实现方式中,上述第一计算顶点在后续的迭代中向所述第二计算顶点发送剩余的第一路径信息,还包括:若剩余的第一路径信息数量大于k,则通过至少两次迭代发送;若剩余的第一路径信息数量小于或等于k,则通过一次迭代发送。
10.在另一种可能的实现方式中,上述k可以为固定值,可以简单的实现本技术的方
案,获取大规模图中节点间的最短路径。
11.在另一种可能的实现方式中,本技术提供的发送路径信息的方法还可以包括:获取第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量;根据第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量,确定k。通过第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量来确定k,可以动态的根据各个计算顶点的发送需求配置动态的k,在获取大规模图中各个节点间最短路径的过程中,在避免信息积压导致的计算过程太长的前提下,提高了计算顶点所在计算设备的资源利用率。
12.在另一种可能的实现方式中,若第一计算顶点的当前存储的第一路径信息数量较大,则确定较大的k值,若第一计算顶点的当前存储的第一路径信息数量较小,则确定较小的k值。若第一计算顶点相邻的下游计算顶点的数量越大,则确定较大的k值,若第一计算顶点相邻的下游计算顶点的数量越小,则确定较小的k值,在获取大规模图中节点间最短路径的前提下,避免信息积压导致的计算过程太长,提高了方案实现的效率。
13.在另一种可能的实现方式中,本技术提供的发送路径信息的方法还可以包括:获取第一计算顶点所属的计算设备的内存运行参数;该内存运行参数用于指示计算设备的内存占用程度;根据该内存运行参数,确定k。根据内存运行程度确定k,可以在保证内存正常运行的前提下,合理配置k值。
14.在另一种可能的实现方式中,在第一计算顶点向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点在后续的迭代中向第二计算顶点发送剩余的第一路径信息,具体可以实现为:在向第二计算顶点发送k个第一路径信息后,第一计算顶点接收第二计算顶点发送的第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态;当第一计算顶点处于激活状态,则在后续的迭代中向第二计算顶点发送剩余的第一路径信息。避免了第一计算顶点还有未发送的第一路径信息时进入非激活状态,保证了可以完整获取图中节点间的最短路径。
15.在另一种可能的实现方式中,本技术提供的方法还可以包括:向第二计算顶点发送小于或等于k个第一路径信息后,若第一计算顶点未接收到第二计算顶点发送的第一标志信息,第一计算顶点进入非激活状态。
16.在另一种可能的实现方式中,在向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点在后续的迭代中保持激活状态,具体可以实现为:在向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点向第二计算顶点发送第二标志信息,第二标志信息用于指示存在未发送的路径信息;第一计算顶点接收第二计算顶点发送的第一标志信息,第一标志信息用于指示接收方保持激活状态,第一标志信息为第二计算顶点根据第二标志信息发送。在该实现方式中,兼容了pregel协议,计算顶点在接收到消息的迭代中保持激活,提高了方案的兼容性。
17.在另一种可能的实现方式中,第二标志信息可以为指示存在未发送的路径信息的标记,或者,第二标志信息为未发送的路径信息的数量。
18.在另一种可能的实现方式中,上述第一计算顶点向第二计算顶点发送k个第一路径信息,包括:若第一计算顶点中存储的第一路径信息大于或等于k个,向第二计算顶点发
送k个第一路径信息;若第一计算顶点中存储的第一路径信息小于k个,向第二计算顶点发送存储的所有的第一路径信息。
19.在另一种可能的实现方式中,第一路径信息包括到第一计算顶点的已知最短路径,以及第一计算顶点到第二计算顶点间边的权重。
20.第二方面,提供另一种接收路径信息的方法,该方法可以包括:在第t 1次迭代中,第二计算顶点接收第一计算顶点发送的k个第一路径信息;第一计算顶点为第二计算顶点相邻的上游计算顶点,k为第一计算顶点在第t次迭代中的所允许发送第一路径信息数量的上限值;第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;第二计算顶点向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态,以使得第一计算顶点在后续的迭代向所述第二计算顶点发送剩余的第一路径信息。其中,t、k均为正整数。
21.通过本技术提供的接收路径信息的方法,通过配置允许发送第一路径信息数量的上限值k,使得第一计算顶点在向相邻的下游第二计算顶点发送第一路径信息时,受最大发送数k的限制,一次最多发送k个,如果待发送的第一路径信息过多,分多次发送,这样一来,在获取大规模图中节点间的最短路径时,通过设置符合网络架构的k值,就可以避免入度过大的节点由于一次收到过多的路径消息时,内存不足或处理消息超时导致的程序运行失败而无法获取图中最短路径,进而无法获取图中节点间的最短路径的问题。并通过在确定存在未发送的第一路径信息时在后续迭代中向第二计算顶点发送剩余的第一路径信息,以保证全部第一路径信息的发送。大规模图中的各个计算顶点,采用本技术提供的方案,通过时间换空间的方式,在多次迭代后,可以获取大规模图中节点间的最短路径。
22.在一种可能的实现方式中,第二计算顶点向第一计算顶点发送第一标志信息,具体可以实现为:第二计算顶点接收第一计算顶点发送的第二标志信息,第二标志信息用于指示存在未发送的路径信息;第二计算顶点在接收到第二标志信息后,向第一计算顶点发送第一标志信息。在该实现方式中,兼容了pregel协议,计算顶点在接收到消息的迭代中保持激活,提高了方案的兼容性。
23.第三方面,提供另一种发送路径信息的方法,该方法可以包括:在第t次迭代中,第一计算顶点向第二计算顶点发送k个第一路径信息,k为第一计算顶点在第t次迭代中所允许发送第一路径信息数量的上限值;第二计算顶点为第一计算顶点相邻的下游计算顶点,第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;在第t 1次迭代中,第二计算顶点接收第一计算顶点发送的k个第一路径信息;第二计算顶点向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态;在第t 2次迭代中,第一计算顶点接收第二计算顶点发送的第一标志信息,第一计算顶点在后续的迭代中保持激活状态,并在激活状态下向第二计算顶点发送剩余的第一路径信息。其中,t、k均为正整数。
24.通过本技术提供的发送路径信息的方法,通过配置允许发送第一路径信息数量的上限值k,使得第一计算顶点在向相邻的下游第二计算顶点发送第一路径信息时,受最大发送数k的限制,一次最多发送k个,如果待发送的第一路径信息过多,分多次发送,这样一来,在获取大规模图中节点间的最短路径时,通过设置符合网络架构的k值,就可以避免入度过大的节点由于一次收到过多的路径消息时,内存不足或处理消息超时导致的程序运行失败
而无法获取图中最短路径,进而无法获取图中节点间的最短路径的问题。并通过在确定存在未发送的第一路径信息时在后续迭代中向第二计算顶点发送剩余的第一路径信息,以保证全部第一路径信息的发送。大规模图中的各个计算顶点,采用本技术提供的方案,通过时间换空间的方式,在多次迭代后,可以获取大规模图中节点间的最短路径。
25.第四方面,提供一种发送路径信息的装置,该装置部署于第一计算顶点,该装置包括发送单元、第一确定单元。其中:
26.发送单元,用于在第t次迭代中,向第二计算顶点发送k个第一路径信息。其中,k为第一计算顶点在第t次迭代中所允许发送第一路径信息数量的上限值。第二计算顶点为第一计算顶点相邻的下游计算顶点;第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径。其中,t、k均为正整数。
27.第一确定单元,用于在向第二计算顶点发送k个第一路径信息后,确定是否存在未发送的第一路径信息。
28.发送单元还用于,在向第二计算顶点发送k个第一路径信息后,若确定单元确定存在未发送的第一路径信息,在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
29.一种可能的实现方式中,发送单元具体用于:若剩余的第一路径信息数量大于k,则通过至少两次迭代发送;若剩余的第一路径信息数量小于或等于k,则通过一次迭代发送。
30.另一种可能的实现方式中,该装置还可以包括获取单元和第二确定单元。其中,获取单元,用于获取第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量。第二确定单元,用于根据第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量,确定k。
31.另一种可能的实现方式中,该装置还可以包括:获取单元和第二确定单元。获取单元,用于获取第一计算顶点所属的计算设备的内存运行参数;内存运行参数用于指示计算设备的内存占用程度;第二确定单元,用于根据内存运行参数,确定k。
32.另一种可能的实现方式中,该装置可以还可以包括接收单元,用于在向第二计算顶点发送k个第一路径信息后,接收第二计算顶点发送的第一标志信息,第一标志信息用于指示所述第一计算顶点保持激活状态。发送单元具体用于,当第一计算顶点处于激活状态,则在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
33.另一种可能的实现方式中,该装置还可以包括状态控制单元,用于:发送单元向第二计算顶点发送小于或等于k个第一路径信息后,若接收单元未接收到第二计算顶点发送的第一标志信息,控制第一计算顶点进入非激活状态。
34.另一种可能的实现方式中,发送单元还用于,在向第二计算顶点发送k个第一路径信息后,若确定第一计算顶点存在未发送的所述第一路径信息,向第二计算顶点发送第二标志信息,第二标志信息用于指示存在未发送的路径信息。该装置还包括接收单元,用于接收第二计算顶点发送的第一标志信息,第一标志信息用于指示接收方保持激活状态,当第一计算顶点处于激活状态,则在后续的迭代中向第二计算顶点发送剩余的第一路径信息,第一标志信息为第二计算顶点根据第二标志信息发送。
35.另一种可能的实现方式中,发送单元具体用于:若第一计算顶点中存储的第一路径信息大于或等于k个,向第二计算顶点发送k个第一路径信息;若第一计算顶点中存储的
第一路径信息小于k个,向第二计算顶点发送存储的所有的第一路径信息。
36.另一种可能的实现方式中,第一路径信息包括到第一计算顶点的已知最短路径,以及第一计算顶点到第二计算顶点间边的权重。
37.第五方面,提供另一种接收路径信息的装置,该装置部署于第二计算顶点,该装置可以包括接收单元和发送单元。其中:
38.接收单元,用于在第t 1次迭代中,接收第一计算顶点发送的k个第一路径信息。第一计算顶点为第二计算顶点相邻的上游计算顶点,k为第一计算顶点在第t次迭代中的所允许发送第一路径信息数量的上限值。第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径。其中,t、k均为正整数。
39.发送单元,用于向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态,以使得第一计算顶点在后续的迭代中,向第二计算顶点发送剩余的第一路径信息。
40.一种可能的实现方式中,接收单元还用于接收第一计算顶点发送的第二标志信息,第二标志信息用于指示存在未发送的路径信息。发送单元具体用于,在接收单元接收到第二标志信息后,向第一计算顶点发送所述第一标志信息。
41.第六方面,提供一种计算设备,其上部署有如上述任一方面或任一种可能的实现方式中所述的第一计算顶点和/或第二计算顶点。
42.第七方面,提供一种发送路径信息的系统,包括如第六方面所述的计算设备。
43.第八方面,提供一种计算设备,该计算设备可以实现上述任一方面描述的方法示例中的第一计算顶点和/或第二计算顶点的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该计算设备可以以芯片的产品形态存在。
44.在一种可能的实现方式中,该计算设备可以包括处理器和传输接口。其中,传输接口用于接收和发送数据。处理器被配置为调用存储在存储器中的程序指令,以使得该计算设备执行上述任一方面描述的方法示例中的第一计算顶点和/或第二计算顶点的功能。
45.第九方面,提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方面或任意一种可能的实现方式所述的发送路径信息的方法,或者,执行上述任一方面或任意一种可能的实现方式所述的接收路径信息的方法。
46.第十方面,提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方面或任意一种可能的实现方式所述的发送路径信息的方法,或者,执行上述任一方面或任意一种可能的实现方式所述的接收路径信息的方法。
47.第十一方面,提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
48.上述第四方面至第十一方面提供的方案,用于实现上述第一方面或第二方面提供的方法,因此可以与第一方面或第二方面达到相同的有益效果,此处不再进行赘述。
49.需要说明的是,上述各个方面中的任意一个方面的各种可能的实现方式,在方案不矛盾的前提下,均可以进行组合。
附图说明
50.图1提供了一种大规模图的示意图;
51.图2为本技术实施例提供的一种图计算架构的示意图;
52.图3为本技术实施例提供的一种服务器的结构示意图;
53.图4提供了一种pregel中顶点的状态切换示意图;
54.图5为本技术实施例提供的一种发送路径信息的方法的流程示意图;
55.图6为本技术实施例提供的一种有向图的示意图;
56.图7提供了一种有向图的示意图;
57.图8为本技术实施例提供的一种k值的分配策略示意图;
58.图9为本技术实施例提供的又一种发送路径信息的方法的流程示意图;
59.图10为本技术实施例提供的一种分布式图的示意图;
60.图11为本技术实施例提供的一种接收路径信息的方法的流程示意图;
61.图12为本技术实施例提供的一种分布式图中发送路径信息的场景示意图;
62.图13为本技术实施例提供的另一种分布式图中发送路径信息的场景示意图;
63.图14为本技术实施例提供的再一种分布式图中发送路径信息的场景示意图;
64.图15为本技术实施例提供的又一种分布式图中发送路径信息的场景示意图;
65.图16为本技术实施例提供的一种发送路径信息的装置的结构示意图;
66.图17为本技术实施例提供的另一种发送路径信息的装置的结构示意图;
67.图18为本技术实施例提供的又一种接收路径信息的装置的结构示意图;
68.图19为本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
69.本技术说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
70.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
71.在本技术的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,a/b可以表示a或b;本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。并且,在本技术的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
72.在本技术实施例中,至少一个还可以描述为一个或多个,多个可以是两个、三个、四个或者更多个,本技术不做限制。
73.在描述本技术实施例之前,先对本技术实施例中涉及的名词进行解释。
74.图(graph),是计算机中的一种数据结构,由顶点和边组成。许多大数据都可以以
大规模图或网络的形式呈现。例如,社交网络、传染病传播途径、交通事故对路网的影响等。图数据结构很好地表达了数据之间的关联性。图可以包括有向图、无向图。
75.顶点(vertex),是指组成图最小的元素,也可称为计算顶点。顶点可以包含数据,一个图可以有多个顶点。本技术中,将部署顶点的设备,称为计算设备。
76.相邻计算顶点(adjacency vertex),是指一个计算顶点通过边可以访问到的其他计算顶点的集合。
77.上游计算顶点,是指一个路径上处于当前顶点之前的计算顶点。
78.相邻的上游计算顶点,是指一个路径上,处于当前计算顶点之前,且与当前计算顶点通过边连接的计算顶点。例如,在有向图中,相邻的上游计算顶点是指当前计算顶点的入射边连接的计算顶点的集合。
79.相邻的下游计算顶点,是指一个路径上,处于当前计算顶点之后,且与当前计算顶点通过边连接的计算顶点。例如,在有向图中,相邻的下游计算顶点是指当前计算顶点的出射边连接的计算顶点的集合。
80.计算顶点的入度,是指有向图中一个计算顶点的入射边的数量。
81.计算顶点的出度,是指有向图中一个计算顶点的出射边的数量。
82.边的权重,是指图中两个计算顶点之间的距离或者大小或者长度。例如,边的权重可以表示指字符对应的二进制编码出现的概率。
83.最短路径,是指图中两个计算顶点间距离最短的路径。
84.单源最短路径,给定源计算顶点到其他计算顶点的最短路径。
85.多源最短路径,任意两计算顶点之间的最短路径。
86.路径信息,用于指示路径的信息。例如,路径的信息可以用于指示一个顶点到另一顶点的距离(或权值)。
87.本技术提供一种发送路径信息的方法,配置计算顶点在一次迭代中允许发送路径信息的上限值k,一次最多发送k个,如果路径信息过多,分多次发送,这样一来,在获取大规模图中节点间的最短路径时,通过设置符合网络架构的k值,就可以避免入度过大的节点由于一次收到过多的路径消息时,内存不足或处理消息超时导致的程序运行失败而无法获取图中最短路径,进而无法获取图中节点间的最短路径的问题。并通过在确定存在未发送的第一路径信息时在后续迭代中向第二计算顶点发送剩余的第一路径信息,以保证全部第一路径信息的发送。大规模图中的各个计算顶点,采用本技术提供的方案,通过时间换空间的方式,在多次迭代后,可以获取大规模图中计算顶点间的最短路径。
88.下面将结合附图对本技术实施例的实施方式进行详细描述。
89.本技术提供的方案可以应用于图计算架构,该图计算架构中包括计算设备,例如服务器,服务器用于进行图计算以及存储,例如用于确定图中计算顶点间的最短路径。图计算架构中的服务器的数量可以为一个或多个、当图的规模较大时,可以将图划分为多个子图,不同服务器用于不同子图的计算和存储。图1示意了一种大规模图,图中的一个圆点示意该大规模图中的一个计算顶点。
90.图2示意了一种图计算架构,如图2所示,该图计算架构可以包括主控服务器201以及多个工作服务器202。工作服务器202作为计算设备,负责子图的计算和存储,工作服务器202负责的子图中的每个顶点,称之为计算顶点。工作服务器202可以为本技术描述的计算
设备。主控服务器201用于控制多个工作服务器202。
91.需要说明的是,上述图2示意的图计算架构,仅为对本技术方案的应用场景举例说明,并不是对本技术方案应用场景的限定。
92.下面结合附图,对本技术的实施例提供的方案进行具体阐述。
93.一方面,本技术实施例提供一种服务器30,用于执行本技术提供的发送路径信息的方法。例如,该服务器30可以为图2中示意的工作服务器202。
94.图3示意了本技术实施例提供的服务器30的结构图。如图3所示,服务器30可以包括处理器301、存储器302、收发器303。
95.下面结合图3对服务器30的各个构成部件进行具体的介绍:
96.存储器302可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,用于存储可实现本技术方法的应用程序代码、配置文件、数据信息或者其他内容。在其他可能的情形中,该存储器302也可以部署在独立于服务器30的其他设备中。
97.收发器303用于服务器30与其他设备的信息交互。
98.处理器301可以是服务器30的控制中心。例如,处理器301可以是一个中央处理器(central processing unit,cpu),也可以是特定集成电路(application specific integrated circuit,asic),或者是被配置成实施本技术实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)。
99.示例性的,处理器301通过运行或执行存储在存储器302内的软件程序和/或模块,可以执行如下功能:
100.在第t次迭代中,向第二计算节点发送k个第一路径信息,k为第一计算顶点在第t次迭代中所允许发送第一路径信息数量的上限值;第二计算顶点为第一计算顶点相邻的下游计算顶点;第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;在向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
101.示例性的,处理器301通过运行或执行存储在存储器302内的软件程序和/或模块,可以执行如下功能:
102.在第t 1次迭代中,第二计算顶点接收第一计算顶点发送的k个第一路径信息;第一计算顶点为第二计算顶点相邻的上游计算顶点,k为第一计算顶点在第t次迭代中的所允许发送第一路径信息数量的上限值;第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;第二计算顶点向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态,以使得第一计算顶点在后续的迭代向所述第二计算顶点发送剩余的第一路径信息。
103.示例性的,处理器301通过运行或执行存储在存储器302内的软件程序和/或模块,可以执行如下功能:
104.在第t次迭代中,第一计算顶点向第二计算顶点发送k个第一路径信息,k为第一计
算顶点在第t次迭代中所允许发送第一路径信息数量的上限值;第二计算顶点为第一计算顶点相邻的下游计算顶点,第一路径信息用于指示经第一计算顶点到第二计算顶点的已知最短路径;在第t 1次迭代中,第二计算顶点接收第一计算顶点发送的k个第一路径信息;第二计算顶点向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态;在第t 2次迭代中,第一计算顶点接收第二计算顶点发送的第一标志信息,第一计算顶点在后续的迭代中保持激活状态,并在激活状态下向第二计算顶点发送剩余的第一路径信息。
105.另一方面,本技术提供一种发送路径信息的方法,应用于图计算中获取计算顶点间最短路径的过程中。其中,本技术提供的方案,是基于发送路径信息获取最短路径的方案,可以获取单源最短路径,或者,可以获取多源最短路径,本技术实施例对于具体的应用场景不予限定。示例性的,本技术实施例提供的方案,可以基于pregel技术进行图计算。
106.pregel是一种基于spark的并行图处理系统,基于pregel获取图中顶点间最短路径的计算过程包括一系列全局超步(迭代)。在初始状态,所有顶点的状态均为活跃状态,在当前迭代(t)中,每个计算顶点(称为当前计算顶点)可以读取前一个迭代(t-1)中其他计算顶点发送给自己的路径信息,这些路径信息指示了上游计算顶点到当前计算顶点的最短路径(例如,当前计算顶点收到的一条路径信息,可以包括上游计算顶点到当前计算顶点相邻的上游计算顶点的已知最短路径,以及当前计算顶点相邻的上游计算顶点到当前计算顶点间边的权重;或者,当前计算顶点收到的一条路径信息,可以仅包括当前计算顶点相邻的上游计算顶点到当前计算顶点间边的权重)。
107.若当前计算顶点未收到任何信息,则将状态修改为非激活状态;若当前计算顶点接收到信息(路径信息或其他信息),当前计算顶点根据接收到的路径信息,执行计算,确定经上游计算顶点到相邻的下游计算顶点的最短路径。若在计算中获取到新的最短路径,沿出射边发送获取到的路径消息;这些路径信息会在下一个超步(t 1)中被目标计算顶点接收,然后开始下一次迭代。若在计算中未获取到新的最短路径,当前计算顶点将状态切换为非激活状态。在迭代过程中对来源相同的计算顶点的路径进行合并,直到所有计算顶点处于非活跃状态,此时所有计算顶点会知道此计算顶点为终点的所有计算顶点的最短路径。pregel中计算顶点的状态切换可以如图4所示。
108.需要说明的是,在图计算中获取计算顶点间最短路径的过程中,每个计算顶点在每一次迭代(超步)中的计算逻辑相同,下文仅描述第一计算顶点在一次迭代中的计算过程,其他不再赘述。第一计算顶点为图中的任一计算顶点。在初始状态,图中所有计算顶点处于激活状态;在一次迭代中,计算顶点可以读取前一次迭代中其他计算顶点向自己发送的路径信息,激活状态的计算顶点在本次迭代中还向相邻的下游计算顶点发送路径信息。
109.如图5所示,本技术提供的一种发送路径信息的方法可以包括:
110.s501、在第t次迭代中,第一计算顶点向第二计算顶点发送k个第一路径信息,k为第一计算顶点在第t次迭代中所允许发送第一路径信息数量的上限值。
111.具体的,s501为第一计算顶点在一次迭代中处于激活状态时,存在未发送的第一路径信息时,执行的操作。其中,t、k均为正整数。
112.其中,第一路径信息用于指示经第一计算顶点,到第二计算顶点的已知最短路径(由当前时刻之前,获取到的路径信息,确定的最短路径,称为已知最短路径)。第二计算顶
点为第一计算顶点相邻的下游计算顶点。
113.示例性的,第一路径信息可以包括到第一计算顶点的已知最短路径,以及第一计算顶点到其相邻的下游计算顶点间边的权重。
114.其中,图中可达第一计算顶点的每个上游计算顶点,都可以经第一计算顶点,到达第二计算顶点。图中可达第一计算顶点的上游计算顶点,可以为图中可达第一计算顶点的每条路径上,位于第一计算顶点之前的计算顶点以及第一计算顶点。第一计算顶点的上游计算顶点的数量,取决于图的规模以及方向性,本技术实施例对此不予限定。
115.示例性的,如图6示意的有向图中,顶点x的上游计算顶点为顶点a、顶点b;顶点y的上游计算顶点为顶点a、顶点b以及顶点x。
116.具体的,第一计算顶点在执行s501时,待发送的第一路径信息,可以是本次迭代中确定出的第一路径信息,和/或,之前的迭代中确定出但还未发送的第一路径信息,本技术实施例对此不予限定。
117.其中,第一路径信息指示的路径中的源顶点若不是第一计算顶点,根据接收到的第二路径信息确定第一路径信息。
118.第二路径信息用于可以用于指示第一计算顶点的某个上游计算顶点,到第一计算顶点的已知最短路径。应理解,第二路径信息可以用于指示经第三计算顶点到第一计算顶点的已知最短路径。示例性的,第二路径信息可以包括到第三计算顶点(第三计算顶点为第一计算顶点相邻的上游计算顶点)的已知最短路径,以及第三计算顶点到第一计算顶点间边的权重。第一计算顶点根据第二路径信息以及第三计算顶点到第一计算顶点间边的权重,确定经第三计算顶点到第一计算顶点的已知最短路径。第一计算顶点可以将经第三计算顶点到第一计算顶点的已知最短路径,以及第一计算顶点到第二计算顶点间边的权重,作为第一路径信息。
119.具体的,第一计算顶点可以将第二路径信息,叠加第一计算顶点到第二计算顶点间的路径,确定为第一路径信息。
120.示例性的,第一计算顶点(r)接收到的第二路径信息为:z-》r(10),第一计算顶点(r)到相邻的下游计算顶点(p)间的路径权重为3,第一计算顶点确定第一路径信息为:z-》p(13)。
121.在一些实施例中,本次迭代为第一次迭代,第一节点设备在执行s501时待发送的第一路径信息,为第一节点设备与相邻的每个下游计算顶点间边的权重,路径的源顶点为第一计算顶点。
122.在另一些实施例中,本次迭代不是第一次迭代,本次迭代中第一计算顶点接收到了第二路径信息,第一计算顶点在本次迭代中根据第二路径信息确定第一路径信息,第一计算顶点执行s501时待发送的第一路径信息,包括本次迭代中根据第二路径信息确定的第一路径信息。
123.示例性的,s501中第一计算顶点发送第一路径信息,或者,根据第二路径信息确定第一路径信息的过程,均可以参考graphx中pregel算法的实现,下面通过示例进行说明。
124.示例性的,对于图7示意的有向图,基于pregel的多源最短路径算法可以为:在初始状态,所有计算顶点处于活跃状态。在第一次迭代中,每个计算顶点给其相邻的下游计算顶点发送路径信息,每个计算顶点中待发送的路径信息内容可以如表1示意,该路径信息可
以包括上游计算顶点到当前计算顶点相邻的上游计算顶点的已知最短路径,以及当前计算顶点相邻的上游计算顶点到当前计算顶点间边的权重;或者,可以仅包括当前计算顶点相邻的上游计算顶点到当前计算顶点间边的权重。
125.表1
[0126][0127]
图7中的计算顶点a至计算顶点e均存在待发送的路径信息,在本次迭代中,执行s501的操作,可以根据各自的k值,向自己相邻的下游计算顶点发送k个路径信息。假设图7示意的有向图汇总,各个计算顶点的k值为固定值5,表1中示意的各个计算顶点的待发送的路径信息将全部发送。
[0128]
在下一次迭代中,图7示意的有向图中每个计算顶点可以读取前一次迭代中,其他计算顶点发送给自己的路径信息,并将接收到其他计算顶点发送给自己的路径信息以及自己到相邻的下游计算顶点的边的权重,作为待发送的路径信息。在本次迭代中,各个顶点中的路径信息可以如表2示意。在该迭代中,由于计算顶点c未接收到路径信息,其状态切换为非激活状态。由于计算顶点a、c、f没有出射边,所以没有待发送的路径信息。
[0129]
表2
[0130]
[0131]
例如,s501中第一计算顶点发送第一路径信息,可以采用pregel算法中节点发送消息的函数sendmsg。s501中根据第二路径信息确定第一路径信息的过程,对来源相同的计算顶点的路径可以进行合并,具体可以采用pregel算法中消息合并函数mergemsg。
[0132]
一种可能的实现方式中,在执行s501时,第一计算顶点向第二计算顶点发送k个第一路径信息,具体可以实现为:若第一计算顶点中存储的第一路径信息大于或等于k个,向第二计算顶点发送k个第一路径信息;若第一计算顶点中存储的第一路径信息小于k个,向第二计算顶点发送存储的所有的第一路径信息。
[0133]
一种可能的实现方式中,k可以为固定值。例如,可以根据实际需求或者网络性能,根据实际经验配置k的取值,本技术实施例对于k的取值不予限定。k值配置的越大,迭代次数越少,计算时间越短,出现内存不足或计算超时导致无法获取最短路径的概率越大;k值配置的越小,迭代次数越多,计算时间越长,出现内存不足或计算超时导致无法获取最短路径的概率越小。
[0134]
示例性的,可以配置k的值为1,即第一计算顶点在一次迭代中,只发送一个第一路径信息时。
[0135]
另一种可能的实现方式中,k可以为动态值,可以动态调整。在实际应用中,在进入迭代时,第一计算顶点先确定k值,再执行s501。需要说明的是,k值可以由计算节点自己确定,也可以配置集中式的设备确定后,发送给各个计算顶点,本技术实施例对此不予限定。
[0136]
具体的,确定k的具体实现方案可以包括但不限于下述方案1至方案3:
[0137]
方案1,k由计算顶点的当前存储的第一路径信息数量和/或计算顶点相邻的下游计算顶点的数量决定。
[0138]
其中,计算顶点相邻的下游计算顶点的数量可以理解为计算顶点的出度。
[0139]
在方案1中,确定k的具体过程可以包括:获取第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量;根据第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量,确定k。
[0140]
一种可能的实现方式中,k与计算顶点的当前存储的第一路径信息数量成正比。
[0141]
另一种可能的实现方式中,k与第一计算顶点相邻的下游计算顶点的数量成正比。
[0142]
再一种可能的实现方式中,k与计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量成正比。
[0143]
图8示意了一种k值的分配策略,从图8的示意可以看出,出度越大,k值越大,存储的路径信息数越多,k值越大。
[0144]
示例性的,k值可以为关于参考信息(计算顶点的当前存储的第一路径信息数量和/或计算顶点相邻的下游计算顶点的数量)的表达式,k=f(x),x标识参考信息,f(.)的内容可以根据实际需求配置。
[0145]
方案2,k由计算顶点所属的计算设备的内存运行参数决定。内存运行参数用于指示所述计算设备的内存占用程度。
[0146]
其中,内存运行参数可以为内存占用率或者内存利用率或者其他。
[0147]
在方案2中,确定k的具体过程可以包括:获取第一计算顶点所属的计算设备的内存运行参数;根据内存运行参数,确定k。
[0148]
一种可能的实现方式中,内存运行参数可以与k成反比。
[0149]
另一种可能的实现方式中,可以定时检测内存的运行参数,当在内存运行参数小于门限值时,增大k值,在内存运行参数接近门限值时,减小k值,以保证内存运行参数小于或等于门限值,由此动态调整k值。该门限值可以为该内存运行参数的最大允许值。
[0150]
当然,对于根据内存运行参数确定k的具体策略,可以根据实际需求配置,本技术实施例仅为举例。
[0151]
方案3、k由计算顶点的当前存储的第一路径信息数量、计算顶点相邻的下游计算顶点的数量,以及计算顶点所属的计算设备的内存运行参数决定。
[0152]
具体的,方案3确定k时所参考的内容结合了方案1和方案2中的内容,方案3中确定k的具体实现,可以参考方案1和方案2中的具体实现,此处不再赘述。
[0153]
s502、在向第二计算顶点发送k个第一路径信息后,若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
[0154]
其中,s502中第一计算顶点确定是否存在未发送的第一路径信息的具体实现可以包括如下几种机制:
[0155]
机制1、由第二计算顶点发送第一标志信息,以指示第一计算顶点保持激活状态,第一计算顶点根据第一标志信息保持激活状态,当第一计算顶点处于激活状态,则在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
[0156]
其中,第一标志信息的内容,以及格式,本技术实施例均不予限定。
[0157]
当前的图计算中,例如pregel技术中,计算顶点若未收到信息,就会进入非激活状态,由于本技术中通过k值限制了发送路径信息的数量,在计算顶点未收到信息时,可能还存在未发送的路径信息,若此时进入非激活状态,可能会导致未发送的路径信息漏发。本技术方案中提供的机制1,由相邻的下游计算顶点发送第一标志信息,以指示第一计算顶点保持激活状态,保证了第一计算顶点处于激活状态在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
[0158]
进一步的,在pregel技术中,在一次迭代中计算顶点发送的消息,接收方在下一次迭代中接收,第二计算顶点发送的第一标志信息,在发送第一标志信息的下一次迭代中,由第一计算顶点接收后,第一计算顶点保持激活状态。
[0159]
一种可能的实现方式中,第二计算顶点在接收到第一计算顶点发送的第一路径信息后,就会发送第一标志信息。应理解,第二计算顶点在接收到第一计算顶点发送的第一路径信息后,就认为第一计算顶点可能存在未发送的第一路径信息,于是发送第一标志信息,以使得第一计算顶点保持激活状态,保证后续迭代中第一路径信息发送。
[0160]
另一种可能的实现方式中,第二计算顶点在接收到第一计算顶点发送的第一路径信息后,在判断第一计算顶点存在未发送的第一路径信息的情况下,发送第一标志信息。
[0161]
例如,第二计算顶点可以根据第一计算顶点在第t次迭代中的k值,来判断第一计算顶点是否存在未发送的第一路径信息。第二计算顶点在接收到第一计算顶点发送的第一路径信息后,判断本次接收的第一路径信息的数量是否为k,若为k,就认为第一计算顶点可能存在未发送的第一路径信息,于是发送第一标志信息,以使得第一计算顶点保持激活状态,保证第一路径信息发送。若不为k,就认为第一计算顶点可能不存在未发送的第一路径信息,于是发送第一标志信息,以使得第一计算顶点保持激活状态,保证第一路径信息发
送。
[0162]
对于k为固定值的方案中,k是每个计算顶点公知的内容;对于k未动态值的方案中,第一计算顶点在执行s501时(或之后或之前),可以向第二下游计算顶点发送本次迭代中的k值。
[0163]
例如,第二计算顶点可以根据第二标志信息,来判断第一计算顶点是否存在未发送的第一路径信息。第二标志信息可以用于指示存在未发送的路径信息,第二标志信息由第一计算顶点在存在未发送的第一路径信息时发送。
[0164]
示例性的,第二标志信息可以为指示存在未发送的路径信息的标记,或者,第二标志信息可以为第一计算顶点中未发送的路径信息的数量,或者其他。
[0165]
相应的,如图9所示,在向第二计算顶点发送k个第一路径信息后,本技术实施例提供的方法还可以包括s503。
[0166]
s503、若第一计算顶点确定存在未发送的第一路径信息,第一计算顶点向第二计算顶点发送第二标志信息。
[0167]
对应于s503,机制1中的第一标志信息为相邻的下游计算顶点根据第二标志信息发送。s503和s501在一次迭代中完成。
[0168]
相应的,若采用机制1的方案,若在某次迭代中,第一计算顶点向第二计算顶点发送小于或等于k个第一路径信息后,若第一计算顶点未接收到第二计算顶点发送的第一标志信息,第一计算顶点进入非激活状态。
[0169]
机制2、第一计算顶点自行判断若存在未发送的第一路径信息,第一计算顶点保持激活状态,当第一计算顶点处于激活状态,则在后续的迭代中向第二计算顶点发送剩余的第一路径信息。
[0170]
在机制2中,第一计算顶点在执行s501后,根据实际情况,若存在未发送的第一路径信息,第一计算顶点保持激活状态。若不存在未发送的第一路径信息,第一计算顶点可以进入非激活状态。
[0171]
进一步的,由于受k的限制,第一计算顶点在一次迭代中最多只能发送k个第一路径信息,s502中第一计算顶点在后续的迭代中向第二计算顶点发送剩余的第一路径信息,具体可以实现为:若剩余的第一路径信息数量大于k,则通过至少两次迭代发送;若剩余的第一路径信息数量小于或等于k,则通过一次迭代发送。
[0172]
示例性的,假设第一计算顶点的k为2且固定,第t次迭代中,第一计算顶点共有5个第一路径信息待发送,在第t次迭代中,第一计算顶点发送2个第一路径信息,还剩3个第一路径信息。假设第t次迭代中,没有其他计算顶点向第一计算顶点发送路径信息,那么,在第t 1次迭代中,第一计算顶点还有3个未发送的第一路径信息,在第t 1次迭代中,第一计算顶点发送2个第一路径信息,还剩1个第一路径信息。假设第t 1次迭代中,没有其他计算顶点向第一计算顶点发送路径信息,那么,在第t 2次迭代中,第一计算顶点还有1个未发送的第一路径信息,在第t 2次迭代中,第一计算顶点发送1个第一路径信息,不存在。
[0173]
在该示例中,对于第t次迭代来说,其后续迭代为两次迭代(第t 1次迭代及第t 2次迭代)。对于第t 1次迭代来说,其后续迭代为一次迭代(第t 2次迭代)。
[0174]
通过本技术提供的发送路径信息的方法,通过配置允许发送第一路径信息数量的上限值k,使得第一计算顶点在向相邻的下游第二计算顶点发送第一路径信息时,受最大发
送数k的限制,一次最多发送k个,如果待发送的第一路径信息过多,分多次发送,这样一来,在获取大规模图中节点间的最短路径时,通过设置符合网络架构的k值,就可以避免入度过大的节点由于一次收到过多的路径消息时,内存不足或处理消息超时导致的程序运行失败而无法获取图中最短路径,进而无法获取图中节点间的最短路径的问题。并通过在确定存在未发送的第一路径信息时在后续迭代中向第二计算顶点发送剩余的第一路径信息,以保证全部第一路径信息的发送。大规模图中的各个计算顶点,采用本技术提供的方案,通过时间换空间的方式,在多次迭代后,可以获取大规模图中计算顶点间的最短路径。
[0175]
如图10所示的分布式图,计算顶点x和计算顶点y是分布式图中的两个相邻计算顶点。在第t次迭代时,计算顶点x有n条最短路径信息(待发送的第一路径信息)需要发送给计算顶点y,但此次迭代时只发送k条。计算顶点y在t 1次迭代时收到计算顶点x发送的k条信息,并在此次迭代时将第一标志消息发送给计算顶点x。其中,k的设置避免了计算顶点y同时收到来自其他计算顶点的大量消息,降低内存要求,第一标志消息可以避免计算顶点x处于非活跃状态,使其在后续的迭代中把第一路径信息全部发送完成。
[0176]
另一方面,本技术实施例还提供一种接收路径信息的方法,该方法应用于前述实施例中的第二计算顶点。在第t次迭代中,第一计算顶点向第二计算顶点发送的k个第一路径信息,在第t 1次迭代中,第二计算顶点则会接收到k个第一路径信息。如图11所示,本技术实施例提供的接收路径信息的方法可以包括s1101和s1102。
[0177]
s1101、在第t 1次迭代中,第二计算顶点接收第一计算顶点发送k个第一路径信息。
[0178]
其中,第一计算顶点为第二计算顶点相邻的上游计算顶点。
[0179]
k为第一计算顶点在第t次迭代中的所允许发送第一路径信息数量的上限值。t、k均为正整数。
[0180]
第一路径信息用于指示经所述第一计算顶点到所述第二计算顶点的已知最短路径。
[0181]
其中,s1101中第二计算顶点接收的内容,即s501中第一计算顶点向第二计算顶点发送的内容,此次不再赘述。
[0182]
s1102、第二计算顶点向第一计算顶点发送第一标志信息,第一标志信息用于指示第一计算顶点保持激活状态,以使得第一计算顶点在后续的迭代中,向第二计算顶点发送剩余的第一路径信息。
[0183]
一种可能的实现方式中,第二计算顶点在接收到第一计算顶点发送的第一路径信息后,第二计算顶点就执行s1102。
[0184]
另一种可能的实现方式中,第二计算顶点在接收到第一计算顶点发送的第一路径信息后,第二计算顶点若判断第一计算顶点存在未发送的第一路径信息,则执行s1102。
[0185]
具体的,第二计算顶点判断第一计算顶点是否存在未发送的第一路径信息的具体实现,可以参照s502中机制1的描述,此处不再赘述。
[0186]
在一些实施例中,第二计算顶点根据第一计算顶点发送的第二标志信息判断第一计算顶点存在未发送的第一路径信息,s1102具体可以实现为:第二计算顶点接收第一计算顶点发送的第二标志信息,第二标志信息用于指示存在未发送的路径信息;第二计算顶点在接收到第二标志信息后,向第一计算顶点发送第一标志信息。
[0187]
需要说明的是,上述图5或图9或图11示意的实施例仅描述第一计算顶点与第二计算顶点在两次迭代中的计算逻辑,在实际应用中确定图中计算顶点间的最短路径时,每个计算顶点可以执行上述图5或图9或图11示意的方法,直至所有计算顶点进入非激活状态,将各个计算顶点存储的自己作为终点的已知最短路径,作为图中计算顶点间的最短路径。
[0188]
还需要说明的是,上述图5或图9或图11示意的实施例中各个步骤的执行顺序,可以根据实际需求配置,图5或图9或图11仅示意了一种可能的执行顺序,并不构成具体限定。
[0189]
下面通过配置k=1求多源最短路径为例,对本技术提供的方案进行举例描述。
[0190]
在图6示意的有向图中,初始状态,所有计算顶点都处于活跃状态。
[0191]
第一次迭代中,每个计算顶点向相邻的下游计算顶点,发送自己到相邻的下游计算顶点的路径信息(自己与相邻的下游计算顶点间边的权重)。计算顶点a向计算顶点x发送a-》x(5),计算顶点b向计算顶点x发送b-》x(3),计算顶点x向计算顶点y发送x-》y(6)。第一次迭代时,各个计算顶点发送的信息,以及第一次迭代后各个计算顶点中存储的路径信息如图12所示。
[0192]
在第二次迭代中,各个计算顶点的计算逻辑如下:
[0193]
计算顶点x收到两条路径信息a-》x(5)、b-》x(3),计算顶点x向计算顶点a发送第一标志信息,计算顶点x向计算顶点b发送第一标志信息。计算顶点x根据收到的路径信息,确定出到计算顶点y的两条第一路径信息:{a-》x(5),x-》y(6)},{b-》x(3),x-》y(6)}。计算顶点x根据k的限制,向计算顶点y只发送一条路径信息{a-》x(5),x-》y(6)}。由于本次迭代中,计算顶点x收到路径信息,保持激活状态。
[0194]
计算顶点y收到一条路径信息x-》y(6),计算顶点y向计算顶点x发送第一标志信息。计算顶点y不存在相邻的下游计算顶点,将收到的路径信息x-》y(6)作为x到y的最短路径存储。由于本次迭代中,计算顶点y收到路径信息,保持激活状态。
[0195]
计算顶点a、计算顶点b均收到计算顶点x发送的第一标记信息,根据第一标记信息保持激活状态。
[0196]
第二次迭代时,各个计算顶点发送的信息,以及第二次迭代后各个计算顶点中存储的路径信息如图13所示。
[0197]
在第三次迭代中,各个计算顶点的计算逻辑如下:
[0198]
计算顶点x收到计算顶点y发送的第一标志信息,根据该第一标志信息保持激活状态,计算顶点x根据k的限制,向计算顶点y发送一条路径信息{b-》x(3),x-》y(6)}。
[0199]
计算顶点y收到一条路径信息{a-》x(5),x-》y(6)},计算顶点y向计算顶点x发送第一标志信息。计算顶点y不存在相邻的下游计算顶点,将收到的路径信息合并为a-》x-》y(11)作为a到y的最短路径存储。由于本次迭代中,计算顶点y收到路径信息,保持激活状态。
[0200]
计算顶点a、计算顶点b未收到任何信息,在第三次迭代中进入非激活状态。
[0201]
第三次迭代时,各个计算顶点发送的信息,以及第三次迭代后各个计算顶点中存储的路径信息如图14所示。
[0202]
在第四次迭代中,各个计算顶点的计算逻辑如下:
[0203]
计算顶点x收到计算顶点y发送的第一标志信息,根据该第一标志信息保持激活状态,计算顶点x中不存在未发送的路径信息,计算顶点x不发送路径信息。
[0204]
计算顶点y收到一条路径信息{b-》x(3),x-》y(6)},计算顶点y向计算顶点x发送第
一标志信息。计算顶点y不存在相邻的下游计算顶点,将收到的路径信息合并为b-》x-》y(9)作为计算顶点b到计算顶点y的最短路径存储。由于本次迭代中,计算顶点y收到路径信息,保持激活状态。
[0205]
计算顶点a、计算顶点b保持非激活状态。
[0206]
第四次迭代时,各个计算顶点发送的信息,以及第四次迭代后各个计算顶点中存储的路径信息如图15所示。
[0207]
在第五次迭代中,各个计算顶点的计算逻辑如下:
[0208]
计算顶点x收到计算顶点y发送的第一标志信息,根据该第一标志信息保持激活状态,计算顶点x中不存在未发送的路径信息,计算顶点x不发送路径信息。
[0209]
计算顶点y未接收到任何消息,进入非激活状态。
[0210]
计算顶点a、计算顶点b保持非激活状态。
[0211]
在第六次迭代中,各个计算顶点的计算逻辑如下:计算顶点x未接收到任何消息,进入非激活状态。计算顶点y、计算顶点a、计算顶点b保持非激活状态。
[0212]
在第六次迭代后,所有计算顶点进入非激活状态,结束迭代,将各个计算顶点中存储的最短路径(a-》x(5)、b-》x(3)、a-》x-》y(11)、a-》x-》y(11)),作为图6示意的有向图中计算顶点间的最短路径。
[0213]
上述内容主要从设备的工作原理的角度对本发明实施例提供的方案进行了介绍。可以理解的是,计算设备等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0214]
本技术实施例可以根据上述方法示例对本技术提供的发送路径信息的装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0215]
在采用对应各个功能划分各个功能模块的情况下,图16示出了上述实施例中所涉及的计算设备中部署的发送路径信息的装置的一种可能的结构示意图。该发送路径信息的装置160可以为功能模块或者芯片,该发送路径信息的装置160用于执行上述实施例中描述的第一计算顶点的功能。如图16所示,发送路径信息的装置160可以包括:发送单元1601、第一确定单元1602。其中,发送单元1601用于执行图5或图9中的过程s501、s502,或者图9中的s503;第一确定单元1602用于在发送单元1601向第二计算顶点发送k个第一路径信息后,确定是否存在未发送的第一路径信息。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0216]
进一步的,如图17所示,发送路径信息的装置160还可以包括获取单元1603及第二确定单元1604。获取单元1603用于获取第一计算顶点的当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量。第二确定单元1604,用于根据第一计算顶点的
当前存储的第一路径信息数量以及第一计算顶点相邻的下游计算顶点的数量,确定k。
[0217]
或者,获取单元1603,用于获取第一计算顶点所属的计算设备的内存运行参数;内存运行参数用于指示计算设备的内存占用程度。第二确定单元1604,用于根据内存运行参数,确定k。
[0218]
进一步的,如图17所示,发送路径信息的装置160还可以包括接收单元1605。接收单元1605,用于在向第二计算顶点发送k个第一路径信息后,接收第二计算顶点发送的第一标志信息,第一标志信息用于指示所述第一计算顶点保持激活状态。
[0219]
在采用对应各个功能划分各个功能模块的情况下,图18示出了上述实施例中所涉及的计算设备中部署的接收路径信息的装置的另一种可能的结构示意图。该接收路径信息的装置180可以为功能模块或者芯片,该接收路径信息的装置180用于执行上述实施例中描述的第二计算顶点的功能。如图18所示,接收路径信息的装置180可以包括:接收单元1801、发送单元1802。其中,接收单元1801用于执行图11中的过程s1101;发送单元1802用于执行图11中的过程s1102。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0220]
在采用集成的单元的情况下,图19示出了上述实施例中所涉及的计算设备的一种可能的结构示意图。计算设备190可以包括:处理模块1901、通信模块1902。处理模块1901用于对计算设备的动作进行控制管理,通信模块1902用于与其他设备通信。例如,处理模块1901用于执行图5或图9中的过程s501、s502,或者图9中的s503,或图11中的过程s1101或s112。计算设备190还可以包括存储模块1903,用于存储计算设备190的程序代码和数据。
[0221]
其中,处理模块1901可以为图3所示的服务器的实体结构中的处理器301,可以是处理器或控制器。例如可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理模块1901也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块1902可以为图3所示的服务器30的实体结构中的收发器303,通信模块1902可以是通信端口,或者可以是收发器、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块1903可以是图3所示的服务器30的实体结构中的存储器302。
[0222]
如前述,本技术实施例提供的发送路径信息的装置160、接收路径信息的装置180或计算设备190可以用于实施上述本技术各实施例实现的方法中相应的功能,为了便于说明,仅示出了与本技术实施例相关的部分,具体技术细节未揭示的,请参照本技术各实施例。
[0223]
作为本实施例的另一种形式,提供一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中的发送路径信息的方法,或者,执行上述方法实施例中的接收路径信息的方法。
[0224]
作为本实施例的另一种形式,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行时执行上述方法实施例中的发送路径信息的方法,或者,执行上述方法实施例中的接收路径信息的方法。
[0225]
本技术实施例再提供一种芯片系统,该芯片系统包括处理器,用于实现本发明实
施例的技术方法。在一种可能的设计中,该芯片系统还包括存储器,用于保存本发明实施例必要的程序指令和/或数据。在一种可能的设计中,该芯片系统还包括存储器,用于处理器调用存储器中存储的应用程序代码。该芯片系统,可以由一个或多个芯片构成,也可以包含芯片和其他分立器件,本技术实施例对此不作具体限定。
[0226]
结合本技术公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、可擦除可编程只读存储器(erasable programmable rom,eprom)、电可擦可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。或者,存储器可以与处理器耦合,例如存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。存储器可以用于存储执行本技术实施例提供的技术方案的应用程序代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,从而实现本技术实施例提供的技术方案。
[0227]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0228]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0229]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0230]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0231]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存
储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0232]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献