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

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

2022-08-03 05:41:14 来源:中国专利 TAG:


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


背景技术:

2.图(graph)是一种用于表示对象之间关联关系的抽象数据结构,使用节点(vertex)和边(edge)进行描述,节点表示对象,边表示对象之间的关系,可抽象成用图描述的数据即为图数据。现有技术中通常采用邻接矩阵(adjacency matrix,am)和压缩稀疏行/列(compress sparse row,csr)等格式存储图数据。
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.图1示出了本发明实施例中的一种图数据的组成示意图;
35.图2示出了本发明实施例中的一种图数据存储方法实施例的步骤流程图;
36.图3示出了本发明实施例中的一种图数据头部示意图;
37.图4示出了本发明实施例中的一种图数据的存储示意图;
38.图5示出了本发明实施例中的另一种图数据的存储示意图;
39.图6示出了本发明实施例中的一种图数据存储方法的硬件实现示意图;
40.图7示出了本发明实施例中的一种图数据存储装置的结构示意图;
41.图8示出了本发明实施例中的一种电子设备的结构框图。
具体实施方式
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的分派阶段,以此类推可以实现多条指令的并行处理。流水线阶段的划分方式可以包括但不限于上述举例,本实施例对此不做限制。
44.图1中每个圆圈可以表示指令中的一个流水线阶段,符号的下标与指令对应。在同一条指令中,后一个流水线阶段的执行依赖于前一个流水线阶段的执行结果,两个阶段之间具有关联关系。例如,在指令i0中,准备阶段r0的执行依赖于分派阶段d0的执行结果。在不同指令的两个流水线阶段之间,后一条指令中的某个流水线阶段的执行依赖之前的一条指
令中的某个流水线阶段的执行结果,两个流水线阶段具有关联关系。例如,在指令i3与指令i1之间,指令i3的准备阶段需要获取指令i1的完成阶段的执行结果,指令i3的准备阶段与指令i1的完成阶段之间具有关联关系。以上仅为示例性举例,各个流水线阶段之间的关联关系可以根据实际需求设置,本实施例对此不做限制。cpu在每条指令的执行过程中,针对指令中的每个流水线阶段,可以分别生成一个节点,并且后一个流水线阶段依赖前一个流水线阶段的执行结果,两个阶段之间具有关联关系,可以生成连接两个节点的一条固定边,固定边的源节点为连接的前一个流水线阶段的节点,目的节点为后一个流水线阶段的节点。
45.图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,以及属于其他指令的子图。图1中不同子图之间的图结构相同,不同子图具有相同数量的节点,并且相同位置上的节点具有相同的固定边,节点的位置指的是节点在子图内包括的所有节点中的编码顺序,例如,子图100和子图200具有相同数量的节点,节点d0为子图100中的第一个节点,节点d1为子图200中的第一个节点,节点d0与节点d1为同位置的两个节点。并且,节点d0与节点d1具有相同的固定边,即固定边101与固定边201,固定边101从子图100中的第一个节点d0指向第二个节点r0,固定边201从子图200中的第一个节点d1指向第二个节点r2,子图100中的固定边101与子图200中的固定边201对应。
46.在不同指令的两个流水线阶段之间,后一条指令中的某个流水线阶段的执行依赖于前一条指令中的某个流水线阶段的执行结果,两个流水线阶段具有关联关系,可以生成对应的一条非固定边。例如,在指令i0与指令i1之间,指令i1的准备阶段需要获取指令i0的完成阶段的执行结果,可以生成一条非固定边1021,非固定边1021连接的源节点为子图100中的节点p0,目的节点为子图200中的节点r1。同理,可以生成图数据中的其它非固定边。图1中不同子图之间的图结构相同,不同子图具有相同数量的节点,节点的编码顺序相同,并且相同位置上的节点具有相同的固定边。例如,子图100和子图200具有相同数量的节点,并且子图100中的第一个节点d0与子图200中的第一个节点d1具有相同的固定边,即固定边101与固定边201,固定边101从子图100中的第一个节点d0指向第二个节点r0,固定边201从子图200中的第一个节点d1指向第二个节点r1,子图100中的固定边101与子图200中的固定边201对应。
47.在图1所示图数据的获取过程中,图数据中的节点以子图为单位,每次增加一个子图的节点,图1所示的图数据可以称之为等增量图数据。需要说明的是,等增量图数据并不限于上述举例中的使用场景,实际应用中的其它使用场景也可以应用等增量图数据进行表达。图1所示的图数据可以由电子设备在运行过程中自动生成并存储,也可以从连接的其它电子设备中获取并存储。
48.本发明实施例的核心构思之一在于,针对等增量图数据,将图数据划分为多个子图,多个子图具有相同的图结构,可以建立针对多个子图的图数据头部,通过图数据头部描述多个子图的图结构,存储多个子图之间的相同信息,并通过信息集合存储各个子图之间的差异信息。在调整图数据时,只需根据节点调整对应的信息集合即可,并不需要调整整个图数据的结构,耗时较短。
49.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
50.参照图2,示出了本发明实施例中的一种图数据存储方法实施例的步骤流程图,该方法可以包括如下步骤:
51.步骤201、获取图数据。
52.其中,图数据中包括多个子图,每个子图中包括多个节点,以及连接多个节点的固定边;图数据中还包括连接不同子图内节点的至少一条非固定边;多个子图具有相同的图结构。
53.本实施例中,图数据存储方法可以由计算机和服务器等电子设备实施,电子设备在获取图数据并存储的过程中,每次可以获取一个或多个子图,以及连接不同子图内节点的非固定边,也可以一次性获取全部子图和非固定边。结合上述举例,若图数据由电子设备自动生成,则电子设备可以持续生成子图和非固定边;若图数据从连接的其它电子设备获取,则可以直接获取全部图数据。获取图数据的具体方法可以包括但不限于上述举例。
54.步骤202、建立并存储图数据头部。
55.其中,图数据头部中包括图结构的结构信息,结构信息用于描述图结构中的节点和固定边。结构信息中可以包括图结构中的节点集合和固定边的集合。
56.本实施例中,可以根据起始子图中包括的每个起始节点的节点编号,生成与起始节点的节点编号对应的参考节点编号,并根据起始子图中包括的每条起始固定边的连接信息和参考节点编号建立图数据头部。起始子图即多个子图中的第一个子图,例如图1所示的第一条指令i0对应的子图100,起始节点即起始子图中的节点d0、节点r0、节点e0、节点p0和节点c0,起始固定边即起始子图中的固定边101、固定边102、固定边103和固定边104。多个子图具有相同的图结构,在图数据头部可以采用同一个参考节点编号表示不同子图中同位置的节点。例如,图1中的节点d0、节点d1、节点d2、节点d3和节点d4可以采用参考节点编号d表示,节点r0、节点r1、节点r2、节点r3和节点r4可以采用参考节点编号r表示。可以采用多个参考节点编号分别对应多个子图中同位置的节点,以描述多个子图中的节点集合。可以采用多个参考节点编号之间的连接关系,描述多个子图中固定边的集合。
57.在一种实施例中,图数据头部可以由编号数组和连接信息列表组成,编号数组用于顺序存储多个参考节点编号,连接信息列表用于存储固定边的第一连接信息和非固定边的第二连接信息。第一连接信息用于描述固定边连接的源节点和目的节点的参考节点编号,第二连接信息用于描述非固定边连接的源节点和目的节点的参考节点编号。编号数组例如一维数组n[5]={d,r,e,p,c},编号数组中的第1个元素存储子图中第一个节点的参考节点编号d,第2个元素存储子图中第二个节点的参考节点编号r,依次类推可以存储子图中每个节点对应的参考节点编号,以描述多个子图的节点集合。可以直接将起始子图中每个节点的节点编号作为对应的参考节点编号,也可以为起始子图中的每个节点设置一个唯一
的编号作为参考节点编号。多个参考节点编号在编号数组中顺序设置,因此可以根据参考节点编号在编号数组中的位置,确定参考节点编号对应的节点。例如,参考节点编号e在编号数组中的第3位,则可以确定参考节点编号e为子图中第三个节点的参考节点编号;参考节点编号p在编号数组中的第4位,则可以确定参考节点编号p为子图中第四个节点的参考节点编号。
[0058]
如表1所示,表1为一示例性的连接信息列表。
[0059]
索引12345
ꢀꢀ
连接信息d-rr-ee-pp-cd-d
ꢀꢀ
[0060]
表1
[0061]
连接信息列表中包括多个连接信息,以及每个连接信息的索引。表1中,第一连接信息和第二连接信息为相同格式的连接信息。每个连接信息用于描述一条边的源节点和目的节点,连接信息的第一位为边连接的源节点的参考节点编号,第二位为边连接的目的节点的参考节点编号。例如,连接信息(d-r)为连接信息,第一位d表示边连接的源节点的参考节点编号为d,第二位r表示边连接的目的节点的参考节点编号为r。连接信息的索引用于从连接信息列表中获取连接信息,例如当某个固定边的索引为1时,可以根据索引1,从表1中确定连接信息(d-r),从而可以确定该固定边连接的源节点是所在子图中的第一个节点(参考节点编号d对应子图中第一个节点),目的节点是所在子图中的第二个节点(参考节点编号r对应子图中第二个节点)。进一步的,根据固定边所在的子图的子图编号,可以确定该固定边连接的源节点和目的节点。例如,若该固定边所在子图的子图编号为1时,可以确定该固定边连接的源节点为d1,目的节点为r1。
[0062]
其中,当连接信息为第二连接信息时,需要确定非固定边连接的源节点所在的源子图的子图编号,以及目的节点所在的目的子图的子图编号。例如,当某个非固定边的索引为5时,可以从表1中确定第二连接信息(d-d),进一步的若确定该非固定边连接的源节点所在的源子图的子图编号为1,以及目的节点所在的目的子图的子图编号2,则可以确定该非固定边连接的源节点为d1,目的节点为d2。
[0063]
可选地,建立并存储图数据头部的步骤可以包括:
[0064]
获取多个参考节点编号;每个参考节点编号对应多个子图中同位置的一个节点;
[0065]
建立编码矩阵;编码矩阵中数值相同的行号和列号对应同一个参考节点编号;
[0066]
从编码矩阵中确定与固定边对应的矩阵位置,并在矩阵位置中添加对应固定边的索引;矩阵位置的行号为固定边的源节点对应的参考节点编号,矩阵位置的列号为固定边的目的节点对应的参考节点编号。
[0067]
在一种实施例中,可以通过编码矩阵的形式建立图数据头部。如图3所示,图3示出了本发明实施例中的一种图数据头部示意图,编码矩阵为5行5列的编码矩阵,第1行至第5行的行号分别为参考节点编号d、r、e、p和c,从第1列至第5列的列号分别为参考节点编号d、r、e、p和c。数值相同的行号和列号由同一个参考节点编号编码,例如第3行的行号和第3列的列号均为参考节点编号e。编码矩阵的行号对应固定边和非固定边所连接的源节点,列号对应固定边和非固定边所连接的目的节点。例如,第p行表示固定边或非固定边连接的源节点的参考节点编号为p,第r列表示固定边或非固定边连接的目的节点的参考节点编号为r。
[0068]
在建立编码矩阵之后,可以根据起始固定边连接的源节点和目的节点的参考节点
编号,从编码矩阵中确定起始固定边的矩阵位置,并在对应位置添加唯一的索引。例如,起始固定边102连接的源节点为r0,目的节点为e0,源节点的参考节点编号为r,目的节点的参考节点编号为e,则起始固定边102的矩阵位置在第r行、第e列,可以在编码矩阵中的第r行、第e列设置唯一的索引“3”,索引“3”对应节点r0与节点e0之间的固定边,同时对应同位置的节点r1与节点e1之间的固定边,以及节点r2与节点e2之间的固定边,节点r3与节点e3之间的固定边,节点r4与节点e4之间的固定边。其中,上述参考节点编号也可以用阿拉伯数字1、2、3、4和5替换,参考节点编号的具体类型可以根据需求设置,本实施例对此不做限制。
[0069]
在本发明实施例中,通过编码矩阵的形式建立图数据头部时,可以通过编码矩阵的行列关系存储第一连接信息和第二连接信息对应的源节点和目的节点,可以获得较小数据量的图数据头部,从而可以降低图数据所需的存储空间。
[0070]
在另一种实施例中,可以直接将起始子图作为图数据头部,由于起始子图与其它子图的图结构相同,因此可以基于起始子图的结构,确定其它所有子图的图结构,可以直接将起始子图的节点集合和固定边的集合作为图数据头部。在向图数据头部中添加非固定边的连接信息时,可以将非固定边的连接信息存储在起始子图的相邻位置,非固定边的连接信息可以只包括非固定边的源节点的编号和目的节点的编号。其中,图数据头部的格式可以包括但不限于上述举例,可以根据子图中具有的第一类边和第二类边灵活设计图数据头部,图数据头部的具体形式可以包括但不限于上述举例。
[0071]
实际应用中,可以根据子图中具有的固定边和非固定边灵活设计图数据头部,图数据头部的具体形式可以包括但不限于上述举例。
[0072]
步骤203、在图数据头部中添加非固定边的连接信息。
[0073]
其中,连接信息用于描述非固定边的源节点和目的节点。
[0074]
本实施例中,电子设备在获取到非固定边之后,首先可以判断图数据头部中是否已经存储有非固定边的第二连接信息,若未存储非固定边的第二连接信息,则在图数据头部中增加第二连接信息。结合上述举例,若针对子图200,电子设备在执行指令i1的过程中,可以生成与指令i1中的准备阶段对应的节点r1,并且可以生成非固定边1021,非固定边1021连接的源节点为p0,目的节点为r1。此时,可以查找图数据头部中是否包括非固定边1021的第二连接信息(p-r)。例如,若图数据头部由编号数组和连接信息列表组成,可以确定表1中未包括与固定边1021对应的第二连接信息(p-r),可以在表1所示连接信息列表中增加一项连接信息(p-r),并设置唯一的索引“6”,得到如表2所示的连接信息列表。
[0075]
索引123456 连接信息d-rr-ee-pp-cd-dp-r [0076]
表2
[0077]
同理,若图数据头部为编码矩阵,在检测到图3所示的编码矩阵中的第p行、第r列为空时,可以在第p行、第r列的位置设置一个唯一的索引6。相反的,若连接信息列表或编码矩阵中已经存在第二连接信息(p-r),可以不在连接信息列表或编码矩阵中添加第二连接信息(p-r)。
[0078]
步骤204、设置并存储唯一标识子图的子图编号,并在子图内包括关键节点的情况下,对应存储关键节点的第一信息集合。
[0079]
其中,关键节点为目标非固定边的目的节点;第一信息集合中包括目标非固定边
的源节点所在子图的子图编号,以及目标非固定边的连接信息在图数据头部中的索引。
[0080]
本实施例中,在获取到起始子图之后,电子设备可以设置唯一标识起始子图的子图编号,并存储起始子图的子图编号。在获取到起始子图之后的其它子图时,电子设备可以为子图设置唯一的子图编号。多个子图的子图编号可以按第二编码顺序编码,以为每个子图设置唯一的子图编码。如图4所示,图4示出了本发明实施例中的一种图数据的存储示意图,子图编号401为起始子图的子图编号0,若子图200为新增子图,可以在子图编号0的基础上设置子图200的子图编号402为1,并在子图100的存储位置之后存储子图编号402。子图200中的节点d1为非固定边1022的目的节点,节点r1为非固定边1021的目的节点,节点c1为非固定边1023的目的节点,节点d1、节点r1和节点c1为关键节点,非固定边1022、非固定边1021和非固定边1023为目标非固定边。可以分别增加非固定边1021的第一信息集合403,非固定边1022的第一信息集合404,以及非固定边1023的第一信息集合405,并在子图编号402之后对应存储第一信息集合403、第一信息集合404和第一信息集合405。
[0081]
在一种实施例中,每个非固定边的第一信息集合中的第一个信息表示非固定边连接的源子图的子图编号,第二个信息表示非固定边在图数据头部中的索引。例如,非固定边1021的第一信息集合403中的第一个信息0表示非固定边1021连接的源节点p0在子图编号为0的子图100中,索引6对应图3所示的编码矩阵中的第p行、第r列。在图数据的读取过程中,首先可以根据第一信息集合403中的第二个信息(即索引6),从图3所示的编码矩阵或表2所示的连接信息列表中确定第二连接信息p-r,进一步的根据第一个信息(即子图编号0),确定源节点为p0,以及根据子图编号1确定目的节点为r1。依次类推,可以存储每个子图的子图编号,以及对应的第一信息集合。
[0082]
可选地,该方法还可以包括:
[0083]
在获取到固定边的权重的情况下,存储固定边的第二信息集合;第二信息集合中包括所属固定边的权重,第二信息集合与所属固定边所在子图的子图编号对应存储。
[0084]
在一种实施例中,电子设备还可以获取固定边的权重,并存储固定边的权重。结合图1所示,固定边的权重可以是固定边所连接的两个节点分别对应的流水线阶段之间的延迟时间。例如,在i0指令的执行过程中,若分派阶段执行时的第一时间与准备阶段执行时的第二时间之间的延迟时间为1个时钟周期,则可以设置固定边101的权重为1,若准备阶段执行时的第二时间与执行阶段执行时的第三时间之间的延迟时间为0个时钟周期,则可以设置固定边102的权重为0。同理,可以设置固定边103的权重为20,固定边104的权重为1,以及子图200中每条固定边的权重。
[0085]
如图5所示,图5示出了本发明实施例中的另一种图数据的存储示意图,针对子图100,可以存储固定边101的第二信息集合406,固定边102的第二信息集合407,固定边103的第二信息集合408,以及固定边104的第二信息集合409。第二信息集合406中包括的信息“1”为第二信息集合406所属的固定边101的权重1。同理,当获取的新增子图200中包括的每条固定边的权重时,可以存储每条固定边的第二信息集合。第二信息集合中还可以包括固定边的其它信息,本实施例对此不做限制。
[0086]
其中,在存储子图中多条固定边的第二信息集合时,可以按多条固定边的顺序,依次存储多个第二信息集合。如图5所示,第二信息集合406、第二信息集合407、第二信息集合408和第二信息集合409顺序存储在子图编号0之后的存储区域,依次对应子图100中的第一
条固定边101、第二条固定边102、第三条固定边103和第四条固定边104。在获取子图中的固定边的过程中,可以根据存储位置,从子图编号0之后的存储区域中获取子图100中每条固定边的权重。
[0087]
可选地,第二信息集合中还可以包括所属固定边在图数据头部中的索引。
[0088]
在一种实施例中,还可在固定边的第二信息集合中添加固定边在图数据头部中的索引。结合上述举例,可以在第二信息集合406中增加一个信息,该信息为固定边101的索引2。在第二信息集合中设置索引之后,可以根据第二信息集合中的索引,从图数据头部中获取固定边的第一连接信息,确定固定边连接的源节点和目的节点的参考节点编号,进一步的可以根据第二信息集合对应的子图编号,确定固定边连接的目的节点和源节点。例如,若某条固定边的第二信息集合中包括索引2,则可以根据索引2从图数据头部中确定第二连接信息(d-r),进一步的根据第二信息集合对应的子图编号0,可以确定固定边连接的源节点为子图100内的节点d0,目的节点为子图100内的节点r0。
[0089]
在本发明实施例中,可以在图数据中存储固定边的第二信息集合,第二信息集合中可以包括固定边的权重,通过存储固定边的权重,可以更好的对图数据进行处理。同时,在第二信息集合中存储固定边的索引时,可以便于从图数据头部中获取固定边的第一连接信息。第二信息集合中还可以存储固定边的其它信息,本实施例对此不做限制。
[0090]
可选地,该方法还可以包括:
[0091]
在获取到目标非固定边的权重的情况下,在第一信息集合中添加目标非固定边的权重。
[0092]
在一种实施例中,电子设备还可以获取非固定边的权重,获取非固定边的权重与获取固定边的权重的过程相同。电子设备在获取非固定边的过程中,若获取到非固定边的权重,可以在非固定边的第一信息集合中添加非固定边的权重。如图5所示,针对目标非固定边1021,可以在对应的第一信息集合403中添加第三个信息10,第三个信息10即目标非固定边1021的权重。同理,可以获取其它非固定边的权重,并在对应的第一信息集合中添加权重。
[0093]
在本发明实施例中,可以在非固定边的第一信息集合中增加非固定边的权重,以存储非固定边的更多信息,可以更好的对图数据进行处理。实际应用中,也可以在第一信息集合中增加非固定边的其它相关信息。
[0094]
如图6所示,图6示出了本发明实施例中的一种图数据存储方法的硬件实现示意图,在图数据的存储过程中,可以基于数据图头部建立存储区域,第一区域存储子图编号,第二区域存储子图编号对应的第二信息集合,第三区域存储子图编号对应的第一信息集合。第一区域中从上之下依次存储每个子图的子图编号;在第二区域中,根据图数据头部中的第一连接信息,依次划分为多列,每列的列头存储固定边的第一连接信息,每列存储对应固定边的权重;在第三区域中,根据图数据头部中的第二连接信息,依次划分为多组,每组的组头存储第二连接信息,每组中包括有效(valid)列、源子图(source unit)列和权重(weight)列。其中,源子图列用于存储非固定边连接的源节点所在的源子图的子图编号,权重列用于存储非固定边的权重,有效列用于存储有效位,当有效位为1时表示该组数据为有效数据。例如,图6中子图编号0对应子图100,子图编号0对应的第二区域中依次存储固定边101的权重、固定边102的权重、固定边103的权重和固定边104的权重。由于子图100中的节
点未作为关键节点连接非固定边,因此子图编号0对应的第三区域中的所有有效位均为0。子图编号1对应子图200,在子图编号1对应的第三区域中的(p-r)组,源子图位为0,表示非固定边连接的源节点在子图100中,权重位为10,表示非固定边的权重为10,有效位为1,表示权重位和源子图位中的数据有效。由(p-r)组的组头可以确定非固定边的连接的源节点的参考节点编号为p,目的节点的参考节点编号为r,进一步的根据源子图位中的数据0可以确定源节点为p0,根据对应的子图编号1可以确定目的节点为r1,从而可以确定非固定边p
0-r1,以及非固定边p
0-r1的权重为10。以上仅为示例性举例,图数据的硬件存储方式可以根据需求设置,本实例对此不做限制。
[0095]
可选地,该方法还可以包括:
[0096]
在获取到节点的属性的情况下,存储节点的第三信息集合;第三信息集合与所属子图的子图编号对应存储,第三信息集合中包括节点的属性。
[0097]
在一种实施例中,电子设备可以获取节点的属性,并在图数据中增加节点的第三信息集合。属性信息可以描述节点对应的对象的特征,例如上述举例中的每个节点对应指令中的一个流水线阶段,节点的属性可以描述流水线阶段的特征,每个阶段的属性可以包括一项或多项。结合上述举例,当子图中还包括每个节点的属性时,可以在图5和图4所示的图数据中增加每个节点的第三信息集合,第三信息集合中包括节点的一项或多项属性。第三信息集合的设置方法可以参考第一信息集合,在每个第三信息集合中设置节点的参考节点编号,以及对应的一项或多项属性。可选地,所有子图中同位置的节点的属性相同时,可以在图数据头部中增加每个参考节点编号对应所有节点的属性。
[0098]
在本发明实施例中,当获取到节点的属性时,可以在图数据中增加节点的第三信息集合,通过第三信息集合存储节点的属性。在图数据的处理器过程中,可以从第三信息集合中获取节点的属性,对图数据进行处理。
[0099]
结合图4和图5所示,在图数据存储时,可以通过图数据头部存储多个子图中的结构信息,可以针对多个相同结构的子图存储一份相同的结构信息。同时,可以基于子图编号存储信息集合,信息集合中包括每个子图中固定边的权重信息,以及非固定边的权重信息等多个子图之间的差异信息,从而可以避免针对每个子图存储一份结构信息,可以降低图数据的数据量,从而减少存储空间。并且,在图数据存储过程中,在根据起始子图建立图数据头部之后,针对起始子图之后的每个新增的子图,只需要增加子图的子图编号,以及对应的信息集合即可,存储过程较为简单,不需要对图数据的结构进行调整。
[0100]
本实施例中,通过图数据头部存储多个子图的图结构,避免存储每个子图中的固定边和节点集合,可以实现对图数据的压缩,本实施例提供的图数据存储方式可以称之为单元压缩结构。在图数据存储之后,在基于单元压缩结构恢复图数据时,可以基于图数据头部和信息集合恢复图数据中的每个子图。在恢复过程中,首先可以获取子图编号,然后从图数据头部中获取子图对应的多个参考节点编号和子图编号,恢复得到子图中的多个节点集合。例如,若需要恢复子图200,首先可以从图数据头部中获取多个参考节点编号d、r、e、p和c,然后根据子图编号1和参考节点编号d、r、e、p和c恢复得到子图200的节点集合,即节点d0、节点r 0
、节点e0、节点p0和节点c0。接着可以根据图数据头部中存储的第一连接信息,确定子图100中的固定边,例如若第一信息集合中包括固定边的索引,则可以根据索引从图数据头部中确定第一连接信息,根据子图编号1可以确定每个固定边连接的源节点和目的节
点,从而可以确定子图200中的每条固定边。同时,可以从第二信息集合中确定子图200中每条固定边的权重。针对子图200中的非固定边,可以根据子图编号1确定存储的多个第一信息集合,然后根据第一信息集合中的索引从图数据头部中确定第二连接信息,以及根据第一信息集合中的源子图编号,确定非固定边连接的源节点,根据子图编号2确定目的节点,从而可以确定子图200中的非固定边。同时,可以从每条非固定边的第一信息集合中获取非固定边的权重,至此恢复子图200中节点集合和固定边集合,以及子图200所连接的每条非固定边,以及每条固定边和非固定边的权重。
[0101]
综上所述,本发明实施例中,获取图数据,建立并存储图数据头部,在图数据头部中添加非固定边的连接信息,设置并存储唯一标识子图的子图编号,并在子图内包括关键节点的情况下,对应存储关键节点的第一信息集合。针对等增量图数据,建立针对多个子图的图数据头部,通过图数据头部存储多个子图之间的相同信息,并通过信息集合存储各个子图之间的差异信息。在调整图数据时,只需根据节点调整对应的信息集合即可,并不需要调整整个图数据的结构,耗时较短。
[0102]
进一步的,结合图4和图5所示,在图数据存储过程中,只需要存储图数据头部和每个子图对应的子图内的固定边的权重,以及对应的非固定边的相关信息,可以避免存储每个子图内的固定边和节点集合,从而可以减少存储的数据量,降低图数据存储过程中所需的存储空间。
[0103]
参照图7,示出了本发明实施例中的一种图数据存储装置的结构示意图,该装置700可以包括:
[0104]
获取模块701,用于获取图数据;图数据中包括多个子图,每个子图中包括多个节点,以及连接多个节点的固定边;图数据中还包括连接不同子图内节点的至少一条非固定边;多个子图具有相同的图结构;
[0105]
建立模块702,用于建立并存储图数据头部,图数据头部中包括图结构的结构信息;
[0106]
添加模块703,用于在图数据头部中添加非固定边的连接信息,连接信息用于描述非固定边的源节点和目的节点;
[0107]
存储模块704,用于设置并存储唯一标识子图的子图编号,并在子图内包括关键节点的情况下,对应存储关键节点的第一信息集合;关键节点为目标非固定边的目的节点;第一信息集合中包括目标非固定边的源节点所在子图的子图编号,以及目标非固定边的连接信息在图数据头部中的索引。
[0108]
可选地,存储模块704还用于在获取到目标非固定边的权重的情况下,在第一信息集合中添加目标非固定边的权重。
[0109]
可选地,存储模块704还用于在获取到固定边的权重的情况下,存储固定边的第二信息集合;第二信息集合中包括所属固定边的权重,第二信息集合与所属固定边所在子图的子图编号对应存储。
[0110]
可选地,建立模块702包括:
[0111]
获取单元,用于获取多个参考节点编号;每个参考节点编号对应多个子图中同位置的一个节点;
[0112]
建立单元,用于建立编码矩阵;编码矩阵中数值相同的行号和列号对应同一个参
考节点编号;
[0113]
添加单元,用于从编码矩阵中确定与固定边对应的矩阵位置,并在矩阵位置中添加对应固定边的索引;矩阵位置的行号为固定边的源节点对应的参考节点编号,矩阵位置的列号为固定边的目的节点对应的参考节点编号。
[0114]
可选地,第二信息集合中还包括所属固定边在图数据头部中的索引。
[0115]
存储模块704还用于在获取到节点的属性的情况下,存储节点的第三信息集合;第三信息集合与节点所在子图的子图编号对应存储,第三信息集合中包括节点的属性。
[0116]
本发明实施例还提供一种电子设备,包括如上所述的图数据存储装置。
[0117]
图8示出了本发明实施例中的一种电子设备的结构框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0118]
参照图8,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。
[0119]
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理部件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0120]
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0121]
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
[0122]
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当电子设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0123]
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0124]
i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0125]
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0126]
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0127]
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0128]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
[0129]
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种图数据存储方法。
[0130]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0131]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0132]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中
指定的功能的装置。
[0133]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0134]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0135]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0136]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0137]
以上对本发明所提供的一种图数据存储方法和装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

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

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

相关文献