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

图数据处理方法、图数据处理装置和电子设备与流程

2022-08-03 05:17:02 来源:中国专利 TAG:


1.本发明涉及计算机领域,特别是涉及一种图数据处理方法、图数据处理装置和电子设备。


背景技术:

2.图(graph)是一种用于表示对象之间关联关系的抽象数据结构,使用节点(vertex)和边(edge)进行描述,节点表示对象,边表示对象之间的关系,可抽象成用图描述的数据即为图数据,图数据中通常包括多个节点,以及连接多个节点的边。
3.在一些情况下,会将图数据中的多个节点顺序编码,多个节点中具有起始节点和结束节点,起始节点为所有节点中的第一个节点,结束节点为最后一个节点。起始节点与结束节点之间存在一条或多条路径,需要根据多条路径的路径距离,从多条路径中确定从起始节点至结束节点之间的最短路径或最长路径。采用现有技术确定起始节点与结束节点之间的路径距离时,从起始节点开始,对节点进行遍历,对每个当前节点遍历其出边的终点作为邻节点,根据当前节点的路径距离和出边权重确定邻节点的路径距离,与邻节点现有路径距离比较取最大或最小值决定邻节点的路径距离,更新值迭代直到遍历所有节点,返回所有节点的路径距离和前节点。由于每个节点可以作为多个节点的邻节点,因此针对每个节点,可能需要多次对节点的路径距离进行多次更新,效率较低。


技术实现要素:

4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种图数据处理方法,以解决在图计算过程中效率较低的问题。
5.为了解决上述问题,本发明实施例第一方面公开了一种图数据处理方法,所述方法用于对图数据进行处理,按所述图数据中多个节点的编码顺序,所述图数据被划分为多个子图和连接不同子图内节点的非固定边;每个所述子图中包括多个节点,以及连接所述子图内节点的固定边;所述非固定边的源节点在所述编码顺序中的位置在目的节点之前;所述方法包括:
6.按所述编码顺序,依次从所述多个子图中选择至少一个子图内的节点作为待计算节点;
7.在所述待计算节点具有至少一条入边的情况下,根据所述入边的权重、以及所述入边所连接的源节点的目标路径距离确定待选路径距离;所述源节点的目标路径距离为所述多个节点中的起始节点与所述源节点之间的所有路径距离中的最长路径距离和/或最短路径距离;
8.从所有所述待选路径距离中确定所述待计算节点的目标路径距离,并将所述待计算节点的目标路径距离对应的源节点作为所述待计算节点的前节点;所述待计算节点的目标路径距离为与所述最长路径距离对应的最大待选路径距离和/或与所述最短路径距离对应的最小待选路径距离;
9.重复执行选择所述待计算节点的步骤、确定所述待选路径距离的步骤和确定所述目标路径距离的步骤,直至确定所有所述节点的目标路径距离和前节点。
10.可选地,所述根据所述入边的权重、以及所述入边所连接的源节点的目标路径距离确定待选路径距离,包括:
11.若所述入边所连接的源节点为所述起始节点,则将所述入边的权重作为所述待选路径距离;
12.若预先确定有所述入边所连接的源节点的目标路径距离,则对所述入边的权重与所连接的源节点的目标路径距离进行求和,得到所述待选路径距离;
13.若未预先确定所述入边所连接的源节点的目标路径距离,等待确定所述入边所连接的源节点的目标路径距离之后,执行所述求和步骤,得到所述待选路径距离。
14.可选地,所述方法还包括:
15.在所述待计算节点为除所述起始节点之外的其它节点、且无入边的情况下,设置所述待计算节点与所述起始节点之间的目标路径距离为第一预设值,并将所述待计算节点的前节点设置为第二预设值;所述第一预设值为与所述最长路径距离值对应的无穷小值和/或与所述最短路径距离值对应的无穷大值;所述第二预设值表示所述待计算节点的前节点为空。
16.可选地,所述根据所述入边的权重、以及所述入边所连接的源节点的目标路径距离确定待选路径距离,包括:
17.按所述编码顺序,依次对选择的所述至少一个子图内的所述待计算节点执行所述确定待选路径距离的步骤。
18.可选地,所述依次对选择的所述至少一个子图内的所述待计算节点执行所述确定待选路径距离的步骤,包括:
19.针对每个所述子图,按所述子图中待计算节点的编码顺序,依次对所述子图内的待计算节点执行所述确定待选路径距离的步骤。
20.本发明实施例第二方面公开了一种图数据处理装置,该装置包括具有至少一个处理单元的处理模块,所述处理单元中包括多个处理子单元;所述处理模块与存储模块连接;
21.所述存储模块用于存储图数据,按所述图数据中多个节点的编码顺序,所述图数据被划分为多个子图和连接不同子图内节点的非固定边;每个所述子图中包括多个节点,以及连接所述子图内节点的固定边;所述非固定边的源节点在所述编码顺序中的位置在目的节点之前;
22.所述处理模块用于在所述至少一个处理单元中具有空闲处理单元的情况下,按所述多个节点的编码顺序,依次从所述存储模块中为所述空闲处理单元获取一个所述子图内的节点作为待计算节点,并为所述空闲处理单元获取所述待计算节点的入边信息;
23.所述处理模块还用于将所述待计算节点和所述待计算节点的入边信息分配给所述空闲处理单元中的一个处理子单元,使所述处理子单元在所述待计算节点具有至少一条入边的情况下,根据所述入边信息中包括的所述入边的权重、以及所述入边所连接的目标源节点的目标路径距离确定待选路径距离;所述目标源节点的目标路径距离为所述多个节点中的起始节点与所述目标源节点之间的所有路径距离中的最长路径距离和/或最短路径距离;
24.所述处理模块还用于从所有所述待选路径距离中确定所述待计算节点的目标路径距离并输出,以及将所述待计算节点的目标路径距离对应的源节点作为所述待计算节点的前节点并输出;所述待计算节点的目标路径距离为与所述最长路径距离对应的最大待选路径距离和/或与所述最短路径距离对应的最小待选路径距离;
25.所述处理模块重复执行为所述空闲处理单元获取待计算节点和入边信息的步骤、分配所述待计算节点和所述入边信息的步骤,以及确定并输出所述目标路径距离和所述前节点的步骤,直至输出所有所述节点的目标路径距离和前节点。
26.可选地,还包括缓存模块;所述处理模块与所述缓存模块连接,所述处理模块还用于在所述缓存模块中为每个所述待计算节点申请一个存储区域,以及向所述缓存模块输出所述待计算节点的目标路径距离和前节点;
27.所述缓存模块用于接收并在所述待计算节点的存储区域存储所述待计算节点的目标路径距离和前节点;
28.所述处理模块还用于从所述缓存模块获取所述目标源节点的目标路径距离。
29.可选地,还包括内存模块;所述缓存模块与所述内存模块连接,所述缓存模块还用于在所述子图内的所有待计算节点的目标路径距离和前节点均存入所述缓存模块的情况下,向所述内存模块发送所述子图内的所有待计算节点的目标路径距离和前节点,以使所述内存模块存储所述子图中的所有待计算节点的目标路径距离和前节点;
30.所述缓存模块还用于从所述内存模块获取所述目标源节点的目标路径距离,以为所述处理模块提供所述目标源节点的目标路径距离。
31.可选地,所述处理子单元用于若所述目标源节点为所述起始节点,则将所述入边的权重作为所述待选路径距离;若所述处理模块从所述缓存模块获取到所述目标源节点的目标路径距离,则对所述入边的权重与所述目标源节点的目标路径距离进行求和,得到所述待选路径距离;若所述处理模块未从所述缓存模块获取到所述目标源节点的目标路径距离,则等待所述处理模块从所述缓存模块获取到所述目标源节点的目标路径距离之后,执行所述求和步骤,得到所述待选路径距离。
32.可选地,所述处理子单元还用于在所述待计算节点为除所述起始节点之外的其它节点、且无入边的情况下,设置所述待计算节点与所述起始节点之间的目标路径距离为第一预设值,并将所述待计算节点的前节点设置为第二预设值;所述第一预设值为与所述最长路径距离值对应的无穷小值和/或与所述最短路径距离值对应的无穷大值;所述第二预设值表示所述待计算节点的前节点为空。
33.本发明实施例第三方面公开了一种电子设备,包括如上所述的图数据处理装置。
34.在本发明实施例中,按节点的编码顺序,依次从多个子图中选择至少一个子图内的节点作为待计算节点,在待计算节点具有至少一条入边的情况下,根据入边的权重与所连接的源节点的目标路径距离确定待选路径距离,从所有待选路径距离中确定待计算节点的目标路径距离,并将待计算节点的目标路径距离对应的源节点作为待计算节点的前节点,重复执行选择待计算节点的步骤、确定待选路径距离的步骤和确定目标路径距离的步骤,直至确定所有节点的目标路径距离和前节点。针对等增量图数据,通过入边的权重确定节点与起始节点之间的最短或最长路径距离,不需要对节点的路径距离进行多次更新,效率较高。
附图说明
35.图1示出了本发明实施例中的一种图数据的组成示意图;
36.图2示出了本发明实施例中的一种图数据头部示意图;
37.图3示出了本发明实施例中的一种图数据的存储示意图;
38.图4示出了本发明实施例中的一种图数据处理方法实施例的步骤流程图;
39.图5示出了本发明实施例中的一种图数据处理装置的结构示意图;
40.图6示出了本发明实施例中的另一种图数据处理装置的结构示意图;
41.图7示出了本发明实施例中的一种电子设备的结构框图。
具体实施方式
42.为了便于理解本发明实施例,首先对本发明实施例中涉及的图数据进行简要介绍。
43.在一些使用场景中,图数据被划分为多个具有相同图结构的子图,以及连接不同子图内节点的边。多个子图具有相同的图结构,每个子图中包括多个节点,以及连接子图内节点的边。由于多个子图的结构相同,因此各个子图内具有相同的边,各个子图之间的边可能相同也可能不同,为便于区分,本实施例将连接不同子图内节点的边命名为非固定边,将连接同一个子图内节点的边命名为固定边。如图1所示,图1示出了本发明实施例中的一种图数据的组成示意图,以程序运行为例,程序中包括图1所示的指令i0、i1、i2、i3和i4,处理器(central processing unit,cpu)采用流水线(pipeline)技术运行程序。在程序运行过程中,每条指令的执行过程可以被划分为5个流水线阶段,即分派(dispatch)阶段、准备(ready)阶段、执行(execute)阶段、完成(complete)阶段和提交(commit)阶段,分派阶段用符号d表示,准备阶段用符号r表示,执行阶段用符号e表示,完成阶段用符号p表示,提交阶段用符号c表示。当采用流水线技术执行多条指令时,cpu对多条指令进行并行处理,例如在指令i0的准备阶段,可以进行指令i1的分派阶段,在指令i0的执行阶段,可以进行指令i1的准备阶段,并进行指令i2的分派阶段,以此类推可以实现多条指令的并行处理。流水线阶段的划分方式可以包括但不限于上述举例,本实施例对此不做限制。cpu在每条指令的执行过程中,针对指令中的每个流水线阶段,可以分别生成一个节点,并且后一个流水线阶段依赖前一个流水线阶段的执行结果,两个阶段之间具有关联关系,可以生成连接两个节点的一条固定边,固定边的源节点为连接的前一个流水线阶段的节点,目的节点为后一个流水线阶段的节点。
44.图1所示的每个圆圈可以表示一个流水线阶段,也可以表示流水线阶段对应的节点,圆圈内的符号为节点的节点编号。两个节点之间的连线表示一条边,边的箭头指示边的方向,箭头从边的源节点出发指向目的节点。例如,在指令i0的执行过程中,针对指令i0的5个流水线阶段,可以按每个阶段的执行顺序,分别生成顺序的5个节点d0、r0、e0、p0和c0,5个节点具有从d0至c0的编码顺序。在一些情况下,为了体现子图中各个节点之间的编码顺序,可以用阿拉伯数字对节点进行编码。在生成指令i0对应的5个节点的同时,可以生成4条固定边,相邻的两个节点之间具有一条固定边,每条固定边连接的源节点为前一个流水线阶段的节点,目的节点为后一个流水线阶段的节点。例如,固定边101连接的源节点为d0,目的节点为r0。此时,节点d0、r0、e0、p0和c0,以及固定边101、固定边102、固定边103和固定边
104组成一个属于指令i0的子图100,同理可以生成属于指令i1的子图200,以及属于其他指令的子图。其中,由于从指令i0、i1、i2、i3和i4按依次顺序执行,因此指令i0、指令i1、指令i2、指令i3和指令i4的子图依次从指令i0的子图至指令i4的子图。整个图数据中的所有节点从第一条指令i0对应的第一个子图中的第一个节点d0至最后一条指令i4对应的最后一个子图中的最后一个节点c4顺序编码,节点d0为图数据中的起始节点,节点c4为结束节点。针对所有节点的编码顺序,相邻的两个子图中,前一个子图的最后一个节点在后一个子图的第一个节点之前,流入节点c0在节点d1之前。
45.在不同指令的两个流水线阶段之间,后一条指令中的某个流水线阶段的执行依赖于前一条指令中的某个流水线阶段的执行结果,两个流水线阶段具有关联关系,可以生成对应的一条非固定边。例如,在指令i0与指令i1之间,指令i1的准备阶段需要获取指令i0的完成阶段的执行结果,可以生成一条非固定边1021,非固定边1021连接的源节点为子图100中的节点p0,目的节点为子图200中的节点r1,在所有节点的编码顺序中,节点p0在节点r1之前。同理,可以生成图数据中的其它非固定边。图1中不同子图之间的图结构相同,不同子图具有相同数量的节点,并且相同位置上的节点具有相同的固定边,节点的位置指的是节点在子图内包括的所有节点中的编码顺序,例如,子图100和子图200具有相同数量的节点,节点d0为子图100中的第一个节点,节点d1为子图200中的第一个节点,节点d0与节点d1为同位置的两个节点。并且,节点d0与节点d1具有相同的固定边,即固定边101与固定边201,固定边101从子图100中的第一个节点d0指向第二个节点r0,固定边201从子图200中的第一个节点d1指向第二个节点r1,子图100中的固定边101与子图200中的固定边201对应。
46.其中,电子设备还可以获取固定边和非固定边的权重,并存储固定边和非固定边的权重。针对图1所示的使用场景,权重可以是固定边所连接的两个节点分别对应的流水线阶段之间的延迟时间。例如,在指令i0的执行过程中,若分派阶段执行时的第一时间与准备阶段执行时的第二时间之间的延迟时间为1个时钟周期,则可以设置固定边101的权重为1,若准备阶段执行时的第二时间与执行阶段执行时的第三时间之间的延迟时间为0个时钟周期,则可以设置固定边102的权重为0。同理,可以设置固定边103的权重为20,固定边104的权重为1。同样的,若指令i0中完成阶段执行时的第四时间与指令i1中准备阶段执行时的第五时间之间的延迟时间为10个时钟周期,则可以设置非固定边1021的权重为10。依此类推,可以获取图1中每条固定边和非固定边的权重。
47.在图1所示图数据的获取过程中,图数据中的节点以子图为单位,每次增加一个子图的节点和固定边,图1所示的图数据可以称之为等增量图数据。需要说明的是,等增量图数据并不限于上述举例中的使用场景,实际应用中的其它使用场景也可以应用等增量图数据进行表达。图1所示的图数据可以由电子设备在运行过程中自动生成并存储,也可以从连接的其它电子设备中获取并存储。
48.在一种实施例中,等增量图数据可以采用单元压缩结构的格式存储,单元压缩结构包括图数据头部和信息集合。图数据头部中包括多个子图的结构信息,结构信息用于描述图结构中的节点和固定边。结构信息中可以包括图结构中的节点集合和固定边的集合。
49.在一种可选地方式中,图数据头部可以由编号数组和连接信息列表组成,编号数组用于顺序存储多个参考节点编号,连接信息列表用于存储固定边的第一连接信息和非固定边的第二连接信息。第一连接信息用于描述固定边连接的源节点和目的节点的参考节点
编号,第二连接信息用于描述非固定边连接的源节点和目的节点的参考节点编号。在图数据头部采用同一个参考节点编号表示不同子图中同位置的节点。例如,图1中的节点d0、节点d1、节点d2、节点d3和节点d4可以采用参考节点编号d表示,节点r0、节点r1、节点r2、节点r3和节点r4可以采用参考节点编号r表示。可以采用多个参考节点编号分别对应多个子图中同位置的节点,以描述多个子图中的节点集合。编号数组例如一维数组n[5]={d,r,e,p,c},编号数组中的第1个元素存储子图中第一个节点的参考节点编号d,第2个元素存储子图中第二个节点的参考节点编号r,依次类推可以存储子图中每个节点对应的参考节点编号,以描述多个子图的节点集合。多个参考节点编号在编号数组中顺序设置,因此可以根据参考节点编号在编号数组中的位置,确定参考节点编号对应的节点在子图中的位置。例如,参考节点编号e在编号数组中的第3位,则可以确定参考节点编号e为子图中第三个节点的参考节点编号;参考节点编号p在编号数组中的第4位,则可以确定参考节点编号p为子图中第四个节点的参考节点编号。
[0050]
同时,可以采用多个参考节点编号之间的连接关系,在图数据头部中描述多个子图中的固定边的集合。如表1所示,表1为一示例性的连接信息列表。
[0051]
索引123456
[0052]
连接信息d-rr-ee-pp-cd-dp-r
[0053]
表1
[0054]
表1中,第一连接信息和第二连接信息为相同格式的连接信息。每个连接信息用于描述一条边的源节点和目的节点,连接信息的第一位为边连接的源节点的参考节点编号,第二位为边连接的目的节点的参考节点编号。例如,连接信息(d-r)为第一连接信息,第一位d表示边连接的源节点的参考节点编号为d,第二位r表示边连接的目的节点的参考节点编号为r。连接信息的索引用于从连接信息列表中获取连接信息,例如当某个固定边的索引为1时,可以根据索引1,从表1中确定连接信息(d-r),从而可以确定该固定边连接的源节点为子图中的第一个节点,目的节点为子图中的第二个节点。进一步的,根据固定边所在的子图的子图编号,可以确定该固定边连接的源节点和目的节点。例如,若该固定边所在子图的子图编号为1时,可以确定该固定边连接的源节点为子图200中的节点d1,目的节点为子图200中的节点r1。当连接信息为第二连接信息时,需要确定非固定边连接的源节点所在的源子图的子图编号,以及目的节点所在的目的子图的子图编号。例如,当某个非固定边的索引为5时,可以从表1中确定第二连接信息(d-d),进一步的若确定该非固定边连接的源节点所在的源子图的子图编号为1,以及目的节点所在的目的子图的子图编号2,则可以确定该非固定边连接的源节点为d1,目的节点为d2。
[0055]
在另一种可选地方式中,可以通过编码矩阵的形式建立图数据头部。如图2所示,图2示出了本发明实施例中的一种图数据头部示意图,编码矩阵为5行5列的编码矩阵,第1行至第5行的行号分别为参考节点编号d、r、e、p和c,从第1列至第5列的列号分别为参考节点编号d、r、e、p和c。数值相同的行号和列号由同一个参考节点编号编码,例如第3行的行号和第3列的列号均为参考节点编号e。编码矩阵的行号对应固定边和非固定边所连接的源节点,列号对应固定边和非固定边所连接的目的节点。例如,第p行表示固定边或非固定边连接的源节点的参考节点编号为p,第r列表示固定边或非固定边连接的目的节点的参考节点编号为r。编码矩阵中的对应位置设置固定边和非固定边的索引,可以根据索引确定编码矩
阵中的目标矩阵位置,进一步的可以根据目标矩阵位置的行号和列号确定连接信息。例如,固定边102连接的源节点为r0,目的节点为e0,源节点的参考节点编号为r,目的节点的参考节点编号为e,固定边102的矩阵位置在第r行、第e列,第r行、第e列设置索引“3”,索引“3”对应节点r0与节点e0之间的固定边,同时对应同位置的节点r1与节点e1之间的固定边,以及节点r2与节点e2之间的固定边,节点r3与节点e3之间的固定边,节点r4与节点e4之间的固定边。其中,图数据头部的格式可以包括但不限于上述举例,可以根据子图的具体图结构设置图数据头部,本实施例对此不做限制。
[0056]
如图3所示,图3示出了本发明实施例中的一种图数据的存储示意图,子图编号401为子图100的子图编号0,子图编号402为子图200的子图编号1,多个子图的子图编号按编码顺序依次编码。信息集合包括固定边的第一信息集合和非固定边的第二信息集合。如图1所示,子图100中包括固定边101、固定边102、固定边103和固定边104,在与子图编号401的对应第一存储区域403中依次存储有固定边101的第一信息集合4031,固定边102的第一信息集合4032,固定边103的第一信息集合4033,以及固定边104的第一信息集合4034。第一信息集合4031中包括的信息“1”表示固定边101的权重1,第一信息集合4032中包括的信息“0”表示固定边102的权重0。在从图数据中读取子图100时,首先可以从图数据头部中获取参考节点编号,然后根据参考节点编号和子图编号0,确定子图100中的每个节点,并且可以根据子图编号0,依次获取子图编号0对应的第一存储区域中的4个第一信息集合,根据每个第一信息集合的位置,可以确定第一信息集合对应的固定边。例如,在第一存储区域403中的第二位存储的第一信息集合4032中的权重为子图100中的第二条固定边102的权重,在第一存储区域403中的第三位存储的第一信息集合4033中的权重为子图100中的第三条固定边103的权重。第一信息集合中还可以包括固定边的其它信息,本实施例对此不做限制。
[0057]
在一种实施例中,第一信息集合中还可以包括所属固定边在图数据头部中的索引。结合上述举例,可以在第一信息集合4031中增加一个信息,该信息为固定边101的索引2。在第一信息集合中设置索引之后,可以根据第一信息集合中的索引,从图数据头部中获取固定边的第一连接信息,确定固定边连接的源节点和目的节点的参考节点编号,进一步的可以根据第一信息集合对应的子图编号,确定固定边连接的目的节点和源节点。例如,若某条固定边的第一信息集合中包括索引2,则可以根据索引2从图数据头部中确定第一连接信息(d-r),进一步的根据第一信息集合对应的子图编号0,可以确定固定边连接的源节点为子图100内的第一个节点d0,目的节点为子图100内的第二个节点r0。
[0058]
同样的,在与子图编号402对应的第一存储区域,依次存储有子图200中每条固定边的权重。在与子图编号402对应的第二存储区域404中,依次存储有子图200中非固定边1021的第二信息集合4041,非固定边1022的第二信息集合4042,以及非固定边1023的第二信息集合4043。每个非固定边的第二信息集合中的第一个信息为非固定边连接的源子图的子图编号,第二个信息表示非固定边在图数据头部中的索引,第三个信息为非固定边的权重。例如,非固定边1021的第二信息集合4041中的第一个信息0表示非固定边1021连接的源节点在子图编号为0的子图100中,索引6对应图2所示的编码矩阵中的第p行、第r列。在图数据的读取过程中,首先可以根据第二信息集合4041中的第二个信息(即索引6)从图2所示的编码矩阵或表1所示的连接信息列表中确定第二连接信息p-r,进一步的根据第一个信息(即子图编号0)可以确定非固定边的源节点为p0,以及根据子图编号1确定非固定边的目的
节点为p1,同时可以确定非固定边1021的权重为10。第二信息集合中还可以存储非固定边的其它信息,本实施例对此不做限制。
[0059]
在采用如上方式存储等增量图数据时,可以通过图数据头部存储多个子图中的结构信息,可以针对多个相同结构的子图存储一份相同的结构信息。同时,可以基于子图编号存储信息集合,信息集合中包括每个子图中固定边的权重信息,以及非固定边的权重信息等多个子图之间的差异信息。可以避免针对每个子图存储一份结构信息,可以降低图数据的数据量,从而减少存储空间。需要说明的是,也可以采用其它方式存储如上所述的等增量图数据,本实施例对此不做限制。
[0060]
在图数据的使用过程中,经常需要根据边的权重,确定起始节点与结束节点之间的最短路径和/或最长路径。路径以图数据中的起始节点为起点,沿每个节点的出边逐渐到达结束节点,最短路径为所有路径中,边的权重和最小的路径,最长路径为所有路径中,边的权重和最大的路径。
[0061]
本发明实施例的核心构思之一在于,针对等增量图数据,以子图为单位,一次性选择一个或多个子图中的节点,通过节点的入边的权重计算节点与起始节点之间的最长路径距离和/或最短路径距离,重复选择和计算,直至计算得到所有节点与起始节点之间的最长路径距离和/或最短路径距离,以确定最短路径和/或最长路径。
[0062]
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0063]
参照图4,示出了本发明实施例中的一种图数据处理方法实施例的步骤流程图,该方法用于对图数据进行处理,按图数据中多个节点的编码顺序,图数据被划分为多个子图和连接不同子图内节点的非固定边;每个子图中包括多个节点,以及连接子图内节点的固定边;非固定边的源节点在编码顺序中的位置在目的节点之前。该方法可以包括如下步骤:
[0064]
步骤401、按编码顺序,依次从多个子图中选择至少一个子图内的节点作为待计算节点。
[0065]
本实施例中,图数据处理方法可以由计算机和服务器等电子设备实施,图数据可以预先存入电子设备中的某个存储位置,在图数据的处理过程中,电子设备可以从存储位置获取至少一个子图内的节点作为待计算节点。或者,电子设备可以与其它电子设备通信连接,从其它电子设备获取至少一个子图内的节点作为待计算节点。
[0066]
如图1所示,非固定边1021的源节点为节点p0,目的节点为节点r1,在编码顺序中,节点p0在节点r1之前。可选地,在每个子图中,相邻的两个节点之间具有固定边,固定边的源节点在编码顺序中的位置在目标节点之前。例如,在子图100中,相邻的两个节点之间具有固定边,固定边102的源节点为节点r0,目标节点为e0。电子设备可以从起始节点开始,按节点的编码顺序,每次从所有子图中选择一个或多个子图内的节点作为待计算节点,选择的子图数量为正整数。按节点的编码顺序选择时,可以按多个子图的编码顺序进行选择,即从第一个子图开始,每次选择至少一个子图内的节点作为待计算节点。或者,直接按所有节点的编码顺序,从起始节点开始,每次选择至少一个子图内的节点作为待计算节点。
[0067]
示例性地,每次可以选择一个子图内的节点作为待计算节点,第一次选择指令i0对应的子图内的节点作为待计算节点,第二次选择指令i1对应的子图内的节点作为待计算节点,依次类推,可以选择所有指令对应的子图内的节点作为待计算节点。或者,每次可以
选择两个子图内的节点作为待计算节点,第一次选择指令i0和指令i1分别对应的两个子图内的节点作为待计算节点,第二次选择指令i2和指令i3分别对应的两个子图内的节点作为待计算节点,依次类推,可以选择所有指令对应的子图内的节点作为待计算节点。每次选择的子图的数量可以相同或不同,本实施例对此不做限制。
[0068]
步骤402、在待计算节点具有至少一条入边的情况下,根据入边的权重、以及入边所连接的源节点的目标路径距离确定待选路径距离。
[0069]
步骤403、从所有待选路径距离中确定待计算节点的目标路径距离,并将待计算节点的目标路径距离对应的源节点作为待计算节点的前节点。
[0070]
其中,源节点的目标路径距离为多个节点中的起始节点与源节点之间的所有路径距离中的最长路径距离和/或最短路径距离。待计算节点的目标路径距离为与最长路径距离对应的最大待选路径距离和/或与最短路径距离对应的最小待选路径距离。当需要确定结束节点与起始节点之间的最短路径时,目标路径距离为最小待选路径距离;当需要确定结束节点与起始节点之间的最长路径时,目标路径距离为最大待选路径距离。
[0071]
本实施例中,在选择待计算节点之后,可以从图数据中确定待计算节点的入边,入边即节点作为目的节点时连接的边。如图1所示,若待计算节点为节点r1,则待计算节点r1的入边包括固定边201和非固定边1021。若待计算节点为节点e0,则待计算节点e0的入边只包括固定边102。
[0072]
其中,当等增量图数据通过单元压缩结构格式存储时,可以基于子图编号,从图数据中确定待计算节点,以及待计算节点的入边。例如,在选择子图200中的节点作为待计算节点时,首先可以从图数据头部中获取多个参考节点编号d、r、e、p和c,然后结合子图200的子图编号1,为每个参考节点编号增加下标,得到子图200中的每个节点编号d1、r1、e1、p1和c1,确定子图200中的待计算节点。与此同时,由于子图200中多个节点顺序连接,可以确定子图200内的多个固定边,即图1所示的第一条固定边d1-r1、第二条固定边r1-e1、第三条固定边e1-p1和第四条固定边p1-c1。并且,可以从子图编号1对应的第一存储区域获取第一信息集合405、第一信息集合406、第一信息集合407和第一信息集合408。多个第一信息集合在第一存储区域顺序存储,可以确定第一条固定边d1-r1的权重为第一信息集合405中的权重1,同理可以确定子图200中的每条固定边和权重。
[0073]
进一步的,可以从子图编号1对应的第二存储区域获取多个第二信息集合。以第二信息集合4041为例,首先可以从第二信息集合4041中提取第二个信息6(该信息为索引),根据索引从图数据头部中获取连接信息(p-r),然后根据第二信息集合4041中的第一个信息0(该信息为源子图的子图编号),可以确定非固定边的源节点为节点p0,根据子图编号1可以确定非固定边的目的节点为节点r1,此时可以确定非固定边为p0-r1,即图1中的非固定边1021。并且,可以从第二信息集合4041中获取第三个信息10,第三个信息10为非固定边为1021的权重。同理,可以获取到子图200对应的非固定边1022和非固定边1023的权重。此时,子图200内的所有节点和固定边均已确定,并且确定了子图200对应的所有非固定边,进一步的可以确定子图200内每个节点的入边。例如,节点d1的入边包括非固定边1022,节点r1的入边包括固定边201和非固定边1021,同时还可以确定每条入边的权重。
[0074]
需要说明是,当等增量图数据通过其它格式存储时,可以通过与存储格式匹配的方法,从图数据中选择一个或多个子图内的节点,并确定节点的入边,以及入边的权重。
[0075]
本实施例中,在确定待计算节点之后,可以确定待计算节点是否具有入边,以根据入边的权重和入边连接的源节点的目标路径距离,确定待计算节点的待选路径距离,然后从所有待选路径距离中选择确定目标路径距离。其中,在确定某个节点的目标路径距离之后,可以将已经得到的目标路径距离存储到预设位置,以在确定其他节点的待选路径距离时,若确定该节点为入边的源节点,可以从预设位置获取该节点的目标路径距离。
[0076]
可选地,步骤402可以包括:
[0077]
若入边所连接的源节点为起始节点,则将入边的权重作为待选路径距离;
[0078]
若预先确定有入边所连接的源节点的目标路径距离,则对入边的权重与所连接的源节点的目标路径距离进行求和,得到待选路径距离;
[0079]
若未预先确定入边所连接的源节点的目标路径距离,等待确定入边所连接的源节点的目标路径距离之后,执行求和步骤,得到待选路径距离。
[0080]
示例性地,按多个节点的编码顺序,首先可以选择确定多个子图中第一个子图中的节点作为待计算节点,由于多个节点中的起始节点无入边,而且无前节点,可以设置起始节点的目标路径距离为0,前节点为空。当确定入边连接的源节点为起始节点时,可以将入边的权重作为待选路径距离。结合上述举例,首先可以确定子图100内的所有节点作为待计算节点,此时可以确定子图100中每个节点的入边,以及入边的权重。在计算节点r0的目标路径距离时,由于节点r0的入边只有固定边101,因此节点r0的待选路径距离为固定边101的权重,并且由于节点r0只有一条入边,因此只有一个待选路径距离,可以确定节点r0的目标路径距离为固定边101的权重,此时可以将节点r0的目标路径距离存储到预设位置。
[0081]
进一步的,在确定节点e0的待选路径距离时,可以确定入边为固定边102,入边102的源节点为节点r0,此时可以从预设位置读取节点r0的目标路径距离,对节点r0的目标路径距离和入边102的权重进行求和,得到节点e0的一个待选路径距离。同理,由于节点e0只有一条入边,可以直接将计算得到的待选路径距离作为节点e0的目标路径距离,并将节点e0的目标路径距离存储到预设位置。以此类推,可以确定子图100中每个节点的目标路径距离。其中,每个节点的目标路径距离可以存储到不同位置,以存储已经确定的所有节点的目标路径距离。
[0082]
其中,由于每次可以选择多个子图内的节点作为待计算节点,在确定某个节点的待选路径距离时,可能存在入边连接的源节点的目标路径距离并未确定的情况。结合上述举例,在子图100和子图200内的节点同时被确定为待计算节点时,多个节点可以并行进行,同时确定待选路径距离,在确定节点r1的待选路径距离时,节点r1的入边包括非固定边1021,非固定边1021的源节点为节点p0,需要获取节点p0的目标路径距离。此时,可能并未确定节点p0的目标路径距离。在该情况下,针对节点r1,可以等待节点p0的目标路径距离确定之后,对非固定边1021的权重和节点p0的目标路径距离进行求和,得到节点r1的一个待选路径距离。反之,当已经确定有节点p0的目标路径距离,可以直接对节点p0的目标路径距离和非固定边1021的权重进行求和,得到节点r1的一个待选路径距离。在确定节点r1的待选路径距离时,可以持续从预设位置读取节点p0的目标路径距离,若未读取到节点p0的目标路径距离,则等待预设时长,直至读取到节点p0的目标路径距离之后,对入边非固定边1021的权重和节点p0的目标路径距离进行求和,得到节点r1的一个待选路径距离。预设时长的具体值可以根据需求设置,本实施例对此不做限制。
[0083]
本实施例中,针对具有多条入边的待计算节点,可以确定待计算节点的每条入边,并确定每条入边的源节点,以及源节点的目标路径距离。以节点r1为例,在节点r1作为待计算节点时,可以确定节点r1具有两条入边,即固定边201和非固定边1021。此时,可以确定固定边201的源节点为节点d1,非固定边1021的源节点为节点p0。可以从预设位置读取预先确定的节点d1的目标路径距离和节点p0的目标路径距离,可以对节点d1的目标路径距离和固定边201的权重进行求和,得到节点r1的一个待选路径距离,以及对节点p0的目标路径距离和非固定边1021的权重进行求和,得到节点r1的另一个待选路径距离。
[0084]
当确定待计算节点具有一个待选路径距离时,可以直接将待选路径距离作为待计算节点的目标路径距离,当确定待计算节点具有多个待选路径距离时,可以从中选择最大和/或最小的待选路径距离作为目标路径距离。结合上述举例,若需要确定结束节点与起始节点之间的最长路径,可以从节点r1的两个待选路径距离中选择最大的待选路径距离作为节点r1的目标路径距离,同时将最大待选路径距离对应的源节点作为节点r1的前节点,例如若基于节点d1的目标路径距离和固定边201的权重计算得到的待选路径距离最大,可以将节点d1作为节点r1的前节点。相反的,若需要确定结束节点与起始节点之间的最短路径,可以从两个待选路径距离中选择最小的待选路径距离作为节点r1的目标路径距离,同时将最小待选路径距离对应的源节点作为节点r1的前节点。
[0085]
在一种实施例中,可能需要同时确定结束节点与起始节点之间的最长路径和最短路径,此时可以将最大的待选路径距离作为节点r1的一个目标路径距离,以及将最小的待选路径距离作为节点r1的另一个目标路径距离。并且,可以将最大的待选路径距离对应的节点作为最长路径对应的前节点,以及将最小的待选路径距离对应的节点作为最短路径对应的前节点。在该情况下,在确定节点e1的待选路径距离时,节点e1的入边只有节点e1和节点r1之间的固定边,入边的源节点为节点r1,可以选择两个目标路径距离,分别计算节点e1对应的两个待选路径距离,其中一个待选路径距离作为最长路径对应的目标路径距离,另一个待选路径距离为最短路径对应的目标路径距离。
[0086]
其中,若某个节点具有多个待选路径距离,并且多个待选路径距离相等时,可以将多个待选路径距离同时作为目标路径距离,并将多个待选路径距离对应的源节点同时作为前节点保存。例如,若节r1的两个待选路径距离相同,则可以将节点d1和节点p0同时作为节点r1的前节点保存。
[0087]
可选地,该方法还可以包括:
[0088]
在待计算节点为除起始节点之外的其它节点、且无入边的情况下,设置待计算节点与起始节点之间的目标路径距离为第一预设值,并将待计算节点的前节点设置为第二预设值;第一预设值为与最长路径距离值对应的无穷小值和/或与最短路径距离值对应的无穷大值;第二预设值表示待计算节点的前节点为空。
[0089]
在一种实施例中,在除起始节点之外的所有节点中,可能存在没有入边的节点,例如节点d0和节点d1之间可能并不存在非固定边1022。在该情况下,当确定节点d1为待计算节点时,由于节点d1没有入边,无法确定节点d1与起始节点d0之间的目标路径距离。此时,可以设置节点d1与起始节点d0之间的目标路径距离为第一预设值,并设置节点d1的前节点为第二预设值。当需要确定起始节点与结束节点之间的最长路径时,第一预设值可以为无穷小值;当需要确定起始节点与结束节点之间的最短路径时,第一预设值可以为无穷大值;
当需要同时确定起始节点与结束节点之间的最短路径和最长路径时,第一预设值可以同时包括无穷大值和无穷小值。无穷小值和无穷大值用于辅助确定其它节点的目标路径距离。例如,在确定节点r1的待选路径距离时,当需要确定起始节点与结束节点之间的最长路径时,可以对节点d1的无穷小值和固定边201的权重进行求和,得到节点d1的待选路径距离,该待选路径距离也无穷小值;当需要确定起始节点与结束节点之间的最短路径时,可以对节点d1的无穷大值和固定边201的权重进行求和,得到节点d1的待选路径距离,该待选路径距离也无穷大值。当某个节点的目标路径距离为无穷大值和无穷小值时,表示节点与起始节点之间没有路径。当某个节点的目标路径距离为无穷大值或无穷小值时,可以设置节点的前节点为第二预设值,表示节点没有前节点,也即表示节点与起始节点之间没有路径。
[0090]
步骤404、重复执行选择待计算节点的步骤、确定待选路径距离的步骤和确定目标路径距离的步骤,直至确定所有节点的目标路径距离和前节点。
[0091]
本实施例中,可以重复执行步骤401、步骤402和步骤403,直至确定所有节点的目标路径距离和前节点。此时,可以根据所有前节点,确定起始节点与结束节点之间的最长路径和/或最短路径。结合上述举例,若需要确定最长路径,则每个节点的目标路径距离均为最大待选路径距离,每个节点的前节点均为最大待选路径距离对应的源节点,此时由所有前节点组成的路径即从起始节点至结束节点之间的最长路径,结束节点的目标路径距离为起始节点与结束节点之间的最长路径距离。若需要确定最短路径,则每个节点的目标路径距离均为最小待选路径距离,每个节点的前节点均为最小待选路径距离对应的源节点,此时由所有前节点组成的路径即从起始节点至结束节点之间的最短路径,结束节点的目标路径距离为起始节点与结束节点之间的最短路径距离。若需要同时确定最长路径和最短路径,则针对最长路径,由每个节点的最大待选路径距离对应的前节点组成的路径为最长路径,结束节点的最大目标路径距离为起始节点与结束节点之间的最长路径距离;针对最短路径,由每个节点的最小待选路径距离对应的前节点组成的路径为最短路径,结束节点的最小目标路径距离为起始节点与结束节点之间的最短路径距离。
[0092]
综上所述,本发明实施例中,按节点的编码顺序,依次从多个子图中选择至少一个子图内的节点作为待计算节点,在待计算节点具有至少一条入边的情况下,根据入边的权重与所连接的源节点的目标路径距离确定待选路径距离,从所有待选路径距离中确定待计算节点的目标路径距离,并将待计算节点的目标路径距离对应的源节点作为待计算节点的前节点,重复执行选择待计算节点的步骤、确定待选路径距离的步骤和确定目标路径距离的步骤,直至确定所有节点的目标路径距离和前节点。针对等增量图数据,通过入边的权重确定节点与起始节点之间的最短或最长路径距离,不需要对节点的路径距离进行多次更新,效率较高。并且,由于采用节点的入边计算节点与起始节点之间的路径距离,因此可以对多个子图中的节点进行并行处理,可以进一步提高处理效率。
[0093]
可选地,根据入边的权重、以及入边所连接的源节点的目标路径距离确定待选路径距离的步骤,可以包括:
[0094]
按编码顺序,依次对选择的至少一个子图内的待计算节点执行确定待选路径距离的步骤。
[0095]
在一种实施例中,当选择多个子图内的节点为待计算节点时,可以根据编码顺序,依次确定每个子图内待计算节点的待选路径距离。结合上述举例,在确定某个节点的待选
路径距离时,由于该节点的入边所连接的源节点的目标路径距离并未确定,因此需要等待一定时间,进一步当需要该节点的目标路径距离确定其它节点的待选路径距离时,需要进一步的等待。因此,可以按编码顺序,依次确定每个子图内的待计算节点的待选路径距离。例如,在同时确定子图100和子图200内的节点为待计算节点时,可以按编码顺序,首先确定子图100内的待计算节点的待选路径距离,然后确定子图200内的待计算节点的待选路径距离。此时,在确定节点r1的待选路径距离时,并不需要等待确定节点p0的目标路径距离。
[0096]
可选地,依次对选择的至少一个子图内的待计算节点执行确定待选路径距离的步骤,可以包括:
[0097]
针对每个子图,按子图中待计算节点的编码顺序,依次对子图内的待计算节点执行确定待选路径距离的步骤。
[0098]
在一种实施例中,在确定每个子图中待计算节点的待选路径距离时,可以按编码顺序,依次确定子图内每个节点的待选路径距离。结合上述举例,针对子图100内的待计算节点,可以按节点的编码顺序,首先确定节点d0的待选路径距离,然后确定节点r0的待选路径距离,接着确定节点e0的待选路径距离。按子图100内多个待计算节点的编码顺序,依次确定每个节点的待选路径距离,可以避免减少等待时间,提高效率。
[0099]
本发明实施例中,在确定多个子图内的节点为待计算节点时,可以按编码顺序,依次确定每个子图内待计算节点的待选路径距离,可以减少等待时间,提高效率。
[0100]
参照图5,示出了本发明实施例中的一种图数据处理装置的结构示意图,图数据处理装置包括具有至少一个处理单元(process unit,pu)的处理模块,处理单元中包括多个处理子单元(process element,pe)。
[0101]
其中,图数据中包括多个节点,按图数据中多个节点的编码顺序,图数据被划分为多个子图和连接不同子图内节点的非固定边;每个子图中包括多个节点,以及连接子图内节点的固定边;非固定边的源节点在编码顺序中的位置在目的节点之前。对图数据的理解可以参考上述举例,本实施例对此不做赘述。
[0102]
处理模块可以是图数据处理装置中的存储模块,也可以是设置在其它装置中的存储模块,处理模块与存储模块连接,处理模块可以从存储模块获取图数据。存储模块可以采用上述举例中的存储格式将图数据存储到存储模块中,也可以采用其它格式将图数据存储到存储模块中。
[0103]
本实施例中,处理模块用于在至少一个处理单元中具有空闲处理单元的情况下,按多个节点的编码顺序,依次从存储模块中为空闲处理单元获取一个子图内的节点作为待计算节点,并为空闲处理单元获取待计算节点的入边信息。进一步的,处理模块还用于将待计算节点和待计算节点的入边信息分配给空闲处理单元中的一个处理子单元,使处理子单元在待计算节点具有至少一条入边的情况下,根据入边信息中包括的入边的权重、以及入边所连接的目标源节点的目标路径距离确定待选路径距离;目标源节点的目标路径距离为多个节点中的起始节点与目标源节点之间的所有路径距离中的最长路径距离和/或最短路径距离。
[0104]
示例性地,处理模块500中可以包括如图5所示的处理单元501、处理单元502和处理单元503,图5中符号pu为处理单元,符号pe为处理子单元。处理模块在启动对图数据的处理之后,可以对3个处理单元进行监测,当确定某个处理单元处于空闲状态时,可以将该处
理单元作为空闲处理单元。此时,处理模块可以按多个节点编码顺序,从存储模块中获取图数据中的一个子图内的节点,并获取待计算节点的入边信息,将获取的节点作为待计算节点分配给空闲处理单元。结合图1所示,在启动对图数据的处理时,处理模块中的3个处理单元均处于空闲状态,处理模块可以按编码顺序,依次提取指令i0、指令i1和指令i2分别对应的前3个子图内的节点作为待计算节点,为处理单元501分配指令i0对应的子图内的待计算节点,为处理单元502分配指令i1对应的子图内的待计算节点,以及为处理单元503分配指令i2对应的子图内的待计算节点。同时,处理模块还可以从存储模块中获取待计算节点的入边信息,入边信息可以包括待计算节点的入边所连接的源节点,以及入边的权重。处理模块获取节点和节点的入边信息的过程可以参考上述举例,本实施例在此不做赘述。
[0105]
本实施例中,处理子单元在接收到分配的待计算节点和入边信息之后,首先可以确定待计算节点是否有入边,在具有入边的情况下,确定入边连接的目标源节点的目标路径距离,并对目标路径距离和入边的权重进行求和,得到待计算节点的待选路径距离。处理子单元确定待计算节点的目标路径距离和前节点的过程可参考上述举例,本实施例在此不做赘述。
[0106]
在一种实施例中,存储模块可以是图数据处理装置中的内存模块,在处理子单元确定某个待计算节点的目标路径距离和前节点之后,处理模块可以向内存模块输出该待计算节点的目标路径距离和前节点,使内存模块将该待计算节点的目标路径距离和前节点存储到内存模块中的目标位置。当其他处理子单元在确定其它待计算节点的待选路径距离时,若确定该待计算节点为源节点,处理模块可以从目标位置读取该待计算节点的目标路径距离,为其它处理子单元提供该待计算节点的目标路径距离。
[0107]
可选地,当处理单元确定一个子图内所有待计算节点的目标路径距离和前节点之后,处理模块可以向内存模块发送该子图内所有节点的目标路径距离和前节点。内存模块可以以子图为单元,通过连续的存储区域,顺序存储一个子图内所有节点的目标路径距离和前节点。相应的,当某个处理子单元需要获取源节点的目标路径距离时,处理模块可以向内存模块发送数据请求,内存模块可以响应于数据请求,向处理模块发送源节点的目标路径距离,由处理模块为处理子单元提供源节点的目标路径距离。内存模块存储目标路径距离和前节点的具体方法,以及处理模块从内存模块获取源节点的目标路径距离的具体过程可以根据需求设置,本实施例对此不做限制。
[0108]
本实施例中,处理模块还用于从所有待选路径距离中确定待计算节点的目标路径距离并输出,以及将待计算节点的目标路径距离对应的源节点作为待计算节点的前节点并输出;待计算节点的目标路径距离为与最长路径距离对应的最大待选路径距离和/或与最短路径距离对应的最小待选路径距离。处理模块重复执行为空闲处理单元获取待计算节点和入边信息的步骤、分配待计算节点和入边信息的步骤,以及确定并输出目标路径距离和前节点的步骤,直至输出所有节点的目标路径距离和前节点。
[0109]
结合上述举例,处理模块在获取前3个子图内的节点作为待计算节点之后,若处理单元501中的多个处理子单元确定了子图100内所有节点的目标路径距离和前节点,则处理单元501进入空闲状态。相应的,处理模块在确定监测处理单元501为空闲处理单元之后,可以按编码顺序,继续获取指令i3对应的子图内的节点作为待计算节点,并获取每个待计算节点入边信息,将指令i3对应的每个待计算节点和待计算节点入边信息分配给处理单元
501中的一个处理子单元。以此类推,处理模块重复检测空闲处理单元,直至将所有子图内的节点作为待计算节点分配给处理单元,并由处理子单元确定每个节点的目标路径距离和前节点,处理模块可以将每个节点的目标路径距离和前节点输出给内存模块,直至输出所有节点的目标路径距离和前节点。其中,处理子单元可以设置起始节点的目标路径距离为0,前节点为空。需要说明的是,处理单元的数量可以根据需求设置为一个或多个,每个处理单元中可以设置较多数量的处理子单元,以适应包括不同数量节点的子图。其中,从所有待选路径距离中确定待计算节点的目标路径距离并输出,以及将待计算节点的目标路径距离对应的源节点作为待计算节点的前节点并输出的过程也可以由处理模块中的处理单元或处理子单元实施,本实施例不做具体限制。
[0110]
可选地,处理子单元还用于在待计算节点为除起始节点之外的其它节点、且无入边的情况下,设置待计算节点与起始节点之间的目标路径距离为第一预设值,并将待计算节点的前节点设置为第二预设值;第一预设值为与最长路径距离值对应的无穷小值和/或与最短路径距离值对应的无穷大值;第二预设值表示待计算节点的前节点为空。
[0111]
如图6所示,图6示出了本发明实施例中的另一种图数据处理装置的结构示意图,图数据处理装置包括处理模块500、缓存模块600和内存模块700,处理模块500与缓存模块600连接,缓存模块600与内存模块700连接。
[0112]
其中,处理模块还用于在缓存模块中为每个待计算节点申请一个存储区域,以及向缓存模块输出待计算节点的目标路径距离和前节点;缓存模块用于接收并在待计算节点的存储区域存储待计算节点的目标路径距离和前节点;处理模块还用于从缓存模块获取目标源节点的目标路径距离。
[0113]
处理子单元具体用于若目标源节点为起始节点,则将入边的权重作为待选路径距离;若处理模块从缓存模块获取到目标源节点的目标路径距离,则对入边的权重与目标源节点的目标路径距离进行求和,得到待选路径距离;若处理模块未从缓存模块获取到目标源节点的目标路径距离,则等待处理模块从缓存模块获取到目标源节点的目标路径距离之后,执行求和步骤,得到待选路径距离。
[0114]
在一种实施例中,可以在图数据处理装置中设置缓存模块,以缓存已经确定节点的目标路径距离和前节点。处理模块在获取一个子图内的节点作为待计算节点之后,可以向缓存模块发送分配请求,从缓存模块申请连续的多个存储区域,以存储子图内每个待计算节点的目标路径距离和前节点。缓存模块在接收到分配请求之后,可以在缓存模块中为子图内的每个待计算节点分配一个存储区域,同一个子图内多个待计算节点的多个存储区域按节点的编码顺序,依次位于缓存模块中同一个区域,每个存储区域存储一个待计算节点的目标路径距离和前节点。
[0115]
如图6所示,缓存模块600中包括多个缓存行,历史长度为缓存行的数量,每个缓存行中存储区域的数量对应一个子图中包括的所有待计算节点的数量。每个缓存行的头部可以设置一个独占位,缓存行中包括的每个存储区域中可以依次存储有效位、距离和前节点数据。独占位用于标志该缓存行是否空闲,例如独占位为1时,表示该缓存行已经被分配给其中一个子图,为0时表示该缓存行空闲。有效位用于标志存储区域的数据是否有效,例如有效位为1时,表示存储区域内的数据有效,为0时表示存储区域内的数据无效。距离即待计算节点的目标路径距离,前节点数组即待计算节点的一个或多个前节点。缓存模块中的头
指针指向缓存模块中的空闲缓存行,头指针的头指针编号初始化为0。当缓存模块在接收到处理模块发送的分配请求之后,可以将头指针指向的空闲缓存行中的独占位置位为1,将该缓存行分配给子图,并将当前的头指针编号发送给处理模块,然后头指针编号加1,头指针指向下一个空闲的缓存行。每个缓存行用于存储一个子图内节点的目标路径距离和前节点,因此每个头指针编号对应一个子图内节点的目标路径距离和前节点。
[0116]
在一种实施例中,每个存储区域的空间大小一致,并且顺序设置,处理模块可以基于头指针编号和偏移量,确定每个待计算节点的存储区域在缓存行中的存储地址。偏移量对应待计算节点在子图中的位置,例如待计算节点为子图中的第一个节点,则偏移量对应缓存行中的第一个存储区域,若待计算节点为子图中的第三个节点,则偏移量对应缓存行中的第三个存储区域。处理模块将某个子图内的待计算节点分配给一个处理单元,并接收到缓存模块为该子图分配缓存行后发送的头指针编号之后,可以记录处理单元与头指针编号之间的对应关系。当处理单元中的某个处理子单元在确定某个待计算节点的目标路径距离和前节点之后,处理模块首先可以确定处理子单元处理的待计算节点在子图中的位置,根据位置确定偏移量,然后向缓存模块发送包括对应的头指针编号、偏移量、目标路径距离和前节点的数据包。缓存模块在接收到数据包之后,首先根据头指针编号确定对应的缓存行,并根据偏移量确定缓存行中的目标存储区域,将接收到的目标路径距离和前节点存储到目标存储区域中。缓存模块在向某个存储区域存入目标路径距离和前节点之后,可以将存储区域的有效位置1,标识该存储区域已经存储有待计算节点的目标路径距离和前节点,该存储区域中的数据为有效数据。
[0117]
本实施例中,处理子单元在确定某个待计算节点的待选路径距离时,需要获取入边连接的目标源节点的目标路径距离。此时处理模块可以生成第一数据请求,第一数据请求中包括目标源节点所在子图对应的头指针编号,以及该目标源节点的偏移量。对应的,缓存模块在接收到第一数据请求之后,先根据头指针编号从所有缓存行中确定目标缓存行,然后根据偏移量从目标缓存行中确定目标源节点的存储区域,在存储区域的有效位为1的情况下,从存储区域中读取目标源节点的目标路径距离,并向处理模块发送目标源节点的目标路径距离,由处理模块将目标路径距离转发给对应的处理子单元。反之,缓存模块在确定存储区域的有效位为0时,则确定还未存储有目标源节点的目标路径距离,可以向处理模块发送响应信息,使处理模块控制处理子单元等待,并在预设时长之后重新向缓存模块发送第一数据请求,直至获取到目标源节点的目标路径距离,向处理子单元提供目标路径距离。
[0118]
在本发明实施例中,在图数据处理装置中设置缓存模块,缓存模块可以在图数据处理过程中缓存已经计算得到的节点的目标路径距离和前节点,并在需要某个节点的目标路径距离计算其他节点的目标路径距离时,可以快速为处理模块提供该节点的目标路径距离,可以避免从内存模块直接获取,从而可以提高效率。缓存模块与处理模块的数据交互过程可以包括但不限于上述举例。
[0119]
本实施例中,缓存模块与内存模块连接,缓存模块还用于在子图内的所有待计算节点的目标路径距离和前节点均存入缓存模块的情况下,向内存模块发送子图内的所有待计算节点的目标路径距离和前节点,以使内存模块存储子图中的所有待计算节点的目标路径距离和前节点;缓存模块还用于从内存模块获取目标源节点的目标路径距离,以为处理
模块提供目标源节点的目标路径距离。
[0120]
本实施例中,缓存模块还用于在某个缓存行中的所有有效位均为1时,确定对应子图中所有节点的目标距离路径和前节点均已确定,可以将该缓存行中所有节点的目标路径距离和前节点输出给内存模块存储。如图6所示,可以在图数据处理装置中设置内存模块,内存模块由内存控制器和内存组成。缓存模块中的尾指针可以指向缓存行中待写入内存的一个缓存行,当该缓存行中的所有有效位均为1时,表示该缓存行对应的子图内的所有节点的目标路径距离和前节点已经确定,缓存模块可以向内存模块发送该缓存行中存储的所有节点的目标路径距离和前节点,由内存控制器将接收到的数据存储到内存中。在将缓存行中的数据写入内存之后,可以将缓存行的独占位清零,使缓存行处于空闲状态,并将缓存行中的每个有效位清零,以将缓存行分配给其它子图。
[0121]
可选地,缓存模块在向内存模块发送一个缓存行中的目标路径距离和前节点时,可以同时向内存模块发送该缓存行的头指针编号,使内存模块根据头指针编号,依次顺序存储接收到的每个子图内的节点目标路径距离和前节点。
[0122]
其中,缓存模块在接收到第一数据请求之后,在根据第一数据请求中的头指针编号,确定目标源节点的目标路径距离和前节点已经被存储到内存的情况下,缓存模块可以向内存模块发送第二数据请求,第二数据请求中也可以包括头指针编号和偏移量,内存控制可以根据头指针编号和偏移量,从内存中获取目标源节点的目标路径距离和前节点,并向缓存模块返回目标源节点的目标路径距离和前节点,由缓存模块将目标源节点的目标路径距离和前节点发送给处理模块。或者,内存模块可以通过数组或矩阵的形式存储每个子图内所有节点的目标路径距离和前节点,缓存模块可以根据目标源节点在图数据中的编码位置,确定目标源节点的目标路径距离在数组或矩阵中的位置,以根据确定的位置从内存模块中获取目标源节点的目标路径距离。内存模块存储目标路径距离的具体方式,以及内存模块和缓存模块的数据交互过程可以根据需求设置,本实施例对此不做限制。
[0123]
在一种实施例中,图数据处理装置位于电子设备中,图数据处理装置中包括处理模块和缓存模块,内存模块为电子设备中的内存模块,处理模块、内存模块和缓存模块之间可以通过系统总线连接。图数据存储在内存模块中,在图数据处理过程中,处理模块可以向电子设备中的直接存储器访问(direct memory access,dma)控制器发送dma请求,使dma控制器向电子设备中的cpu发送总线请求,以获取系统总线的控制权。在获取到控制权之后,处理模块可以发送dma请求,从内存模块获取节点作为待计算节点,并获取待计算节点的入边信息。处理模块在得到待计算节点的目标路径距离和前节点之后,由缓存模块将节点的目标路径距离和前节点写入内存模块。或者,图数据处理装置包括处理模块、内存模块和缓存模块,内存模块与其它电子设备连接。在确定节点的目标路径距离和前节点并存入内存模块之后,电子设备可以从内存模块中读取节点的目标路径距离和前节点。
[0124]
综上所述,本实施例中的图数据处理装置包括处理模块,处理模块中的处理单元包括多个处理子单元。针对等增量图数据,结合等增量图数据的特定,采用节点的入边确定节点与起始节点之间的路径距离,使每个处理单元中的多个处理子单元可以对一个子图内的所有节点进行并行处理,从而可以提高图数据的处理效率。
[0125]
本发明实施例还提供一种电子设备,包括如上所述的图数据处理装置。
[0126]
图7示出了本发明实施例中的一种电子设备的结构框图。例如,电子设备700可以
是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0127]
参照图7,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。
[0128]
处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
[0129]
存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0130]
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
[0131]
多媒体组件708包括在所述电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0132]
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
[0133]
i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0134]
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如
cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0135]
通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0136]
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0137]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0138]
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种图数据处理方法。
[0139]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0140]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0141]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0142]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0143]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0144]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0145]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0146]
以上对本发明所提供的一种图数据处理方法和装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献