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

图数据的处理方法、装置、电子设备及存储介质与流程

2021-11-24 20:33:00 来源:中国专利 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.图1示出了本发明的一种图数据的结构示意图;
25.图2示出了图1中图数据的存储示意图;
26.图3示出了本发明的一种图数据的处理方法实施例的步骤流程图;
27.图4

1示出了将图2中的顶点数组进行划分得到的多个顶点分组的示意图;
28.图4

2示出了本发明的一种目标图数据的存储示意图;
29.图5示出了多个原始图数据的存储密度曲线图;
30.图6示出了本发明的一种图数据的处理装置实施例的结构框图;
31.图7是根据一示例性实施例示出的一种电子设备的结构框图。
具体实施方式
32.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
33.为了更详细的介绍本发明,首先对图数据进行简要介绍。
34.如图1所示,图1示出了本发明的一种图数据的结构示意图,图数据中包括顶点1至顶点12,图1中的每个圆表示一个顶点,圆中的数字表示顶点对应的对象。其中,各个顶点之间通过边直接或间接连接,边具有方向,边出发的顶点为源顶点,边指向的顶点为目的顶点。例如,边101从顶点1指向顶点2,顶点1为顶点2对应的源顶点,顶点2为顶点1对应的目的顶点。通常情况下,图数据以csr(compress sparse row,压缩稀疏行)格式存储,csr格式使用偏移数组、边数组和顶点数组存储图数据。如图2所示,图2示出了图1中图数据的存储示意图,顶点数组203中依次存储每个顶点的相关信息;边数组202按顶点的存储顺序,依次存储每个顶点作为目的顶点时连接的每条边分别对应的源顶点的标识信息;偏移数组201依
次存储顶点数组203中每个顶点对应的一个位置信息,该位置信息指示顶点作为目的顶点时对应的所有源顶点的标识信息中,位于边数组202中的第一个标识信息在边数组202中的位置。例如,顶点1至顶点12依次存储在顶点数组203中;顶点6作为目的顶点时对应的源顶点包括顶点5和顶点10,将顶点6对应的源顶点(即顶点5和顶点10)的标识信息存储至边数组202的相应位置,顶点5在边数组202中的存储位置为6,存储位置6为偏移数组201存储的对应顶点6的位置信息,数字6存储在偏移数组201中的第六位,表示顶点6作为目标顶点时,从边数组202中的第6位开始,依次存储顶点6对应的源顶点。需要说明的是,本实施例中的顶点指的是顶点对应的对象具有的一系列参数的集合。
35.在图数据的处理过程中,可以根据顶点的度数来表征顶点与其他顶点之间的关联程度,顶点的度数越大,该顶点与其他顶点之间的关联度越大。度数可以根据顶点的出度计算,或者根据顶点的入度计算,或者根据出度和入度计算。其中,顶点的出度为该顶点作为源顶点时连接的边的数量,即以该顶点为源顶点的边的数量;顶点的入度为该顶点作为目的顶点时连接的边的数量,即以该顶点为目的顶点的边的数量。如图1所示,顶点1作为源顶点时连接的边包括边101和边102,则顶点1的出度为2;顶点1作为目的顶点时连接的边包括边103,则顶点1的入度为1。根据顶点1的出度计算顶点1的度数时,顶点1的度数为2;根据顶点1的入度计算顶点1的度数时,顶点1的度数为1;根据顶点1的出度和入度计算顶点1的度数时,顶点1的度数为3。
36.在图计算过程中,一般都采用以顶点为中心(vertex

centric)的计算模式,在每次计算顶点的属性值时,需要读取该顶点对应的目的顶点和/或源顶点的属性值,目的顶点和源顶点构成该顶点的邻顶点。例如,在计算顶点1的属性值时,需要获取顶点1对应的目的顶点2和目的顶点3的属性值,或者获取顶点1对应的源顶点4的属性值,或者获取目的顶点2和目的顶点3的属性值以及源顶点4的属性值。由此可知,当某个顶点的度数较大时,该顶点与其他顶点之间的关联度较大,在图计算过程中会作为大量其他顶点的邻顶点被访问,在整个图计算过程中,顶点的度数越大,被访问的次数越多,即顶点的访问率越高。其中,顶点的属性表示顶点对应的对象所具有的特性参数,例如当某个顶点对应真实世界中的一个人物时,顶点可以具有年龄、兴趣和性别等特性参数。例如年龄属性的属性值为23岁,性别属性的属性值为男。
37.实际应用中,cpu在进行图计算时,首先按图数据中顶点在内存的存储位置,将内存中连续存储的多个顶点读入缓存,然后从缓存中读取顶点进行计算。若读入缓存的多个顶点之间的关联度比较高,则在短时间内,cpu大概率上只需要从缓存中读取顶点进行计算,不需要从内存中读取顶点,cpu的计算效率比较高。反之,当cpu每次读入缓存的多个顶点之间的关联度比较低时,cpu需要频繁从内存读取顶点,从内存读取数据所需的时间比从缓存读取数据所需的时间长,导致cpu的计算效率较低。
38.本发明实施例的核心构思之一在于,首先按顶点的存储顺序,将原始图数据中连续存储的多个顶点划分到一个顶点分组中,然后对顶点分组中所有顶点的存储顺序进行重排。由于各个顶点分组之间的存储顺序不变,在对顶点分组内的顶点的存储顺序进行重排时,对顶点的存储位置做小范围的调整,属于同一个顶点分组、关联度较高的多个顶点依旧存储在相近的位置。cpu在进行图计算时,关联度较高的顶点仍存储在相近位置,大概率上会被同时读入缓存,并且在同一顶点分组内度数相同或相近的顶点存储在相邻位置,因此
访问率相近的顶点大概率上会被同时读入缓存,从而可以提高图数据的局部性,避免cpu频繁从内存中读取顶点,进一步的可以提高图计算的效率。
39.参照图3,示出了本发明的一种图数据的处理方法实施例的步骤流程图,具体可以包括如下步骤:
40.步骤301、获取原始图数据。
41.本实施例中,图数据的处理方法可以由服务器或计算机等电子设备执行,原始图数据为电子设备从图数据的存储位置中获取的、由电子设备直接生成的图数据。电子设备首先可以从图数据的存储位置获取原始图数据,然后将原始图数据划分为多个顶点分组,并对顶点分组内的顶点进行排序。原始图数据的具体获取方法可以根据需求设置,本实施例对此不做限制。
42.步骤302、将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组。
43.本实施例中,电子设备可以按原始图数据中顶点的存储顺序,依次对图数据中的顶点进行划分,将连续存储的多个顶点划分为一个顶点分组,从而将原始图数据中的所有顶点划分为多个顶点分组。结合图2所示,顶点在顶点数组203中的位置与顶点的实际存储位置对应,电子设备可以按顶点在顶点数组203中的位置顺序,从顶点数组203中的第一个顶点开始,依次将预设顶点数量的顶点划分为一个顶点分组。预设顶点数量例如为4,电子设备可以从顶点数组203中的第一个顶点开始,即从顶点1开始,将连续存储的顶点1、顶点2、顶点3和顶点4划分为如图4

1所示的第一顶点分组401,以及将连续存储的顶点5至顶点8划分为如图4

1所示的第二顶点分组402,将连续存储的顶点9至顶点12划分为如图4

1所示的第三顶点分组403。
44.实际应用中,电子设备也可以从顶点数组中的最后一个顶点开始,或者从顶点数组中的其他位置开始对顶点数组中的顶点进行划分。预设顶点数量的具体值可以根据需求具体设置,每个顶点分组中包括的顶点数量可以相同或不同,本实施例对此不做限制。
45.其中,电子设备在生成图数据时,会根据顶点对应的对象之间的关联关系,顺序生成并存储多个顶点。因此,在原始图数据中,存储位置相邻的顶点之间的关联度较高。将原始图数据中连续存储的多个顶点划分到一个顶点分组中时,可以将关联度较高的多个顶点划分到一个顶点分组中。结合图1和图2所示,第一顶点分组中的顶点之间具有的边比较多,关联度比较高,因此第一顶点分组中的多个顶点存储在相邻位置,而第一顶点分组中的顶点与第三顶点分组中的顶点之间的边较少或者没有边,因此第一顶点分组中的顶点与第三顶点分组中的顶点存储在相距较远的位置。
46.需要说明的是,为了便于举例说明,本实施例中的图数据只包括少量顶点,顶点分组中也只包括少量顶点,而在实际应用中,图数据和顶点分组中包括的顶点数量远大于本实施例中的顶点数量。
47.步骤303、根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排。
48.在一种实施例中,电子设备可以根据顶点分组中每个顶点的度数,按照预设度数顺序对顶点分组中包括的所有顶点的存储顺序进行重排,例如,预设度数顺序为度数从大到小的顺序或者度数从小到大的顺序。结合图4

1所示,顶点的度数为顶点的出度与入度之
和,在第一顶点分组401中,顶点1的度数为3、顶点2的度数为2、顶点3的度数为2,顶点4的度数为3,按照度数从大到小的顺序对第一顶点分组401中所有顶点的存储顺序进行重排后,第一顶点分组401中顶点的存储顺序为顶点1、顶点4、顶点2和顶点3,如图4

2所示。同理,可以对第二顶点分组402和第三顶点分组403中所有顶点的存储顺序进行重排。从而,在步骤303中,针对步骤302中划分得到的每个顶点分组,根据顶点的度数对该顶点分组中所有顶点的存储顺序进行了重排。
49.实际应用中,也可以根据顶点的出度或入度计算顶点的度数,在对顶点分组中所有顶点的存储顺序进行重排时,也可以按度数从小到大的顺序进行重排。在重排过程中,当多个顶点的度数相同时,度数相同的多个顶点的存储顺序可以随机设置。
50.步骤304、基于重排后的顶点分组,组成目标图数据。
51.本实施例中,在对顶点分组中所有顶点的存储顺序进行重排之后,可以根据重排后的顶点分组,组成目标图数据。结合图2和图4

2所示,在分别对第一顶点分组、第二顶点分组和第三顶点分组中所有顶点的存储顺序进行重排之后,可以由重排后的第一顶点分组401、第二顶点分组402和第三顶点分组403组成图4

2所示的顶点数组,即目标图数据,由图4

2所示的顶点数组存储原始图数据中的顶点。
52.在目标图数据中,第一顶点分组401、第二顶点分组402和第三顶点分组403三者之间的相对存储位置不变,在对每个顶点分组内所有顶点的存储顺序进行重排之后,即使改变了某个顶点的存储位置,该顶点仍然位于所在顶点分组对应的存储范围内,顶点分组对应的群落结构并不发生变化,因此可以保留顶点分组对应的群落结构。当顶点分组的群落结构保留时,可以使顶点分组内关联度较高的多个顶点存储在相近的位置。同时,对顶点分组内顶点的存储顺序进行重排时,可以使顶点分组中访问率较高的顶点存储在相近的位置。cpu从内存中读取顶点时,很大概率上可以将同一顶点分组内的顶点同时读入缓存,在未将同一顶点分组内的顶点同时读入缓存时,很大概率上可以将同一个顶点分组内访问率较高的多个顶点同时读入缓存,在图计算过程中可以避免频繁从内存读取顶点,提高图数据的局部性,从而可以提高图计算的效率。
53.需要说明的是,在实际应用中,图数据中包括的顶点数量巨大,大概率上将同一顶点分组内的顶点同时读入缓存即可提高图计算的效率。并且,即使同时读入缓存的是存储位置相邻的不同顶点分组中的顶点,例如第一顶点分组中的部分顶点和第二顶点分组中的部分顶点,由于第一顶点分组和第二顶点分组在原始图数据中的存储位置相邻,第一顶点分组内的顶点和第二顶点分组内的顶点之间的关联度也相对较高,一定程度上也可以降低cpu从内存读取顶点的概率,提高图计算的效率。
54.综上所述,本实施例中,电子设备获取原始图数据,将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组,根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排,基于重排后的顶点分组,组成目标图数据。将连续存储的多个顶点划分到一个顶点分组中,在对顶点分组内顶点的存储顺序进行重排时,对顶点的存储位置做小范围的调整,可以在保留图数据的群落结构的基础上将访问率较大的顶点存储在相邻位置,提高图数据的局部性,从而可以提高图计算的效率。
55.可选地,顶点分组中的顶点数量不高于处理器中目标缓存的顶点容量。
56.在一种实施例中,目标缓存可以是cpu中包括的所有缓存。例如,cpu中包括一级缓
存、二级缓存和三级缓存,一级缓存的容量为a,二级缓存的容量为b,三级缓存的容量为c,电子设备生成的每个顶点的数据量(或称为占用存储空间大小)为w,当目标缓存包括所有缓存时,目标缓存的顶点容量为(a b c)/w。在对图数据中的顶点进行分组时,设置(a b c)/w为顶点分组中顶点的数量上限,可以控制每个顶点分组中的顶点数量不高于(a b c)/w。
57.实际应用中,cpu从缓存中读取数据的速度大于从内存中读取数据的速度,控制顶点分组中的顶点数量不高于所有缓存的顶点容量时,cpu在每次从内存读取顶点时,可以将整个顶点分组中的所有顶点同时读入缓存。在针对顶点分组内的顶点进行计算时,由于同一顶点分组内的顶点之间的关联度较高,对顶点分组内的顶点的访问率高于顶点分组之外的顶点的访问,由于整个顶点分组内的所有顶点都位于缓存内,可以降低cpu从内存读取顶点的概率,从而可以提高图计算的效率。
58.可选地,目标缓存可以包括一级缓存和二级缓存。
59.在一种实施例中,目标缓存可以只包括cpu中的一级缓存和二级缓存。结合上述举例,目标缓存包括一级缓存和二级缓存时,在对图数据中的顶点进行分组的过程中,设置(a b)/w为顶点分组中顶点的数量上限,可以控制顶点分组中的顶点数量不高于(a b)/w。
60.实际应用中,由于cpu从一级缓存和二级缓存中读取数据的速度大于从三级缓存和内存中读取数据的速度,控制顶点分组中的顶点数量不高于一级缓存和二级缓存的顶点容量时,cpu在每次从内存读取顶点时,可以将整个顶点分组中的所有顶点同时读入一级缓存和二级缓存。在针对顶点分组内的顶点进行计算时,由于整个顶点分组内的所有顶点都位于一级缓存和二级缓存内,可以降低cpu从内存和三级缓存读取顶点的概率,从而可以提高图计算的效率。
61.在另一种实施例中,当一级缓存的容量较大时,可以将一级缓存作为目标缓存,控制每个顶点分组中顶点的数量小于或等于一级缓存的顶点容量。结合上述举例,目标缓存包括一级缓存时,在对图数据中的顶点进行分组的过程中,设置a/w为顶点分组中顶点的数量上限,可以控制顶点分组中的顶点数量不高于a/w。
62.实际应用中,由于cpu从一级缓存读取数据的速度大于从二级缓存和三级缓存中读取数据的速度,控制顶点分组中的顶点数量不高于一级缓存的顶点容量时,cpu在每次从内存读取顶点时,可以将整个顶点分组中的所有顶点同时读入一级缓存。在针对顶点分组内的顶点进行计算时,由于整个顶点分组内的所有顶点都位于一级缓存内,可以降低cpu从内存、二级缓存或三级缓存中读取顶点的概率,从而可以提高图计算的效率。
63.其中,当一级缓存的容量较小时,可以控制顶点分组中顶点的数量高于一级缓存的顶点容量,以避免顶点分组中包括较少的顶点数量,从而可以避免破坏图数据中的群落结构。
64.可选地,步骤302可以通过如下方式实现:
65.确定原始图数据中顶点群落的平均顶点数量;其中,顶点群落由具有直接或间接关系的多个顶点组成;其中,该直接关系的多个顶点即为图1中通过边直接连接的多个顶点;该间接关系的多个顶点即为图1中通过边间接连接的多个顶点。
66.基于处理器所包括的一级缓存的顶点容量和平均顶点数量,确定顶点分组中顶点的数量下限;
67.按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个顶点分组。
68.在一种实施例中,确定原始图数据中顶点群落的平均顶点数量的步骤可以通过如下方式实现:
69.获取原始图数据在不同群落规模下的存储密度;存储密度由群落规模对应的顶点群落所包括的源顶点或目的顶点的数量与顶点总量的比值确定;
70.基于存储密度的变化趋势,确定目标群落规模;目标群落规模与变化趋势的趋势转折区对应;
71.将目标群落规模具有的顶点数量作为平均顶点数量。
72.其中,群落规模表示顶点群落的大小。由于图数据中的每个顶点分别对应真实或虚拟世界中的一个对象,不同对象之间具有一定的关联关系,因此具有直接或间接关系的多个顶点可以构成一个顶点群落,顶点群落包括的顶点数量越多,顶点群落的群落规模越大。需要说明的是,顶点群落并无清晰的划分标准,结合图1所示,可以将顶点1至顶点4划分为一个顶点群落,也可以将顶点1至顶点8划分为一个顶点群落,本实施例中只需确定图数据中顶点群落的平均规模,顶点群落的平均规模具有的顶点数量为平均顶点数量。
73.结合图1所示,若群落规模为4,在顶点1、顶点2、顶点3和顶点4组成的顶点群落中,顶点总量为4,目的顶点包括顶点1、顶点2、顶点3和顶点4分别对应的目的顶点,即顶点1对应的目的顶点2和目的顶点3,以及顶点4对应的目的顶点1,根据目的顶点计算存储密度时,顶点1、顶点2、顶点3和顶点4组成的顶点群落对应的存储密度为3/4。同理,在顶点1、顶点2、顶点3和顶点4组成的顶点群落中,源顶点包括顶点2和顶点3对应的顶点1,以及顶点1对应的顶点4,根据源顶点计算存储密度时,顶点1、顶点2、顶点3和顶点4组成的顶点群落对应的存储密度为2/4。其中,存储密度越大,cpu在针对顶点群落内的某个顶点进行计算时,访问本顶点群落内的其他顶点的概率越大。结合上述举例,在顶点1、顶点2、顶点3和顶点4组成的顶点群落内,若需要基于顶点2对应的源顶点计算顶点2的属性值,则需要访问顶点分组内的顶点1。相反的,顶点4对应的源顶点包括第二顶点分组内的顶点7,若需要计算顶点4的属性值,则需要访问第二顶点分组内的顶点。若第二顶点分组未被读入缓存,则需要从内存中读取顶点7,降低了cpu的计算效率。因此,当某个顶点分组对应的存储密度越大时,针对该顶点分组内的顶点进行计算时,cpu访问该顶点分组内的顶点的概率越大,相应的访问其他顶点分组内的顶点的概率越小。
74.在一种实施例中,针对包括大量顶点的原始图数据,可以获取原始图数据中不同群落规模下的存储密度,以根据存储密度的变化趋势,确定原始图数据中顶点群落的平均规模,也即确定平均顶点数量。
75.可选地,基于存储密度的变化趋势,确定目标群落规模的步骤可以通过如下方式实现:
76.获取由不同群落规模对应的存储密度构成的存储密度曲线;
77.确定存储密度曲线中导数从大到小变化的区域为趋势转折区;
78.基于趋势转折区对应的至少一个群落规模,确定目标群落规模。
79.如图5所示,图5示出了多个原始图数据的存储密度曲线图,图5中的横坐标为不同群落规模对应的顶点数量,纵坐标为存储密度。电子设备可以控制原始图数据的群落规模
以8192(8192表示8192个顶点)为变化单位依次增加,并统计不同群落规模分别对应的存储密度,由不同群落规模对应的存储密度,得到图5所示曲线图,第一存储密度曲线501为第一原始图数据在不同群落规模下分别对应的存储密度,第二存储密度曲线502为第二原始图数据在不同群落规模下分别对应的存储密度,第三存储密度曲线503为第三原始图数据在不同群落规模下分别对应的存储密度。
80.其中,电子设备可以根据原始图数据对应的存储密度曲线,确定原始图数据对应的存储密度的变化趋势,从而确定变化趋势的趋势转折区。如图5所示,可以对第一存储密度曲线501进行求导,确定第一存储密度曲线501在不同群落规模下的导数,确定导数从大到小变化的区域为第一存储密度曲线501的趋势转折区504,进一步的可以确定趋势转折区504对应的群落规模为第一原始图数据的目标群落规模,将目标群落规模具有的顶点数量作为平均顶点数量。其中,在图5所示的存储密度曲线图中,在趋势转折区504的左侧,群落存储密度较小,cpu在进行图计算时访问顶点群落内的顶点的概率较小;而在趋势转折区504的右侧,群落存储密度较大,cpu在进行图计算时访问顶点群落内顶点的概率较大。趋势转折区对应的顶点群落为图数据中顶点群落的平均规模,顶点群落的平均规模对应的顶点数量为平均顶点数量。需要说明的是,趋势转折区可以对应一个或多个群落规模,可以根据需求选择其中的一个群落规模作为目标群落规模,或者对趋势转折区域对应的多个群落规模求平均值,将多个群落规模的平均值作为目标群落规模。具体从趋势转折区确定目标群落规模的方法可以根据需求设置,本实施例对此不做限制。
81.在图数据中,由于顶点群落并无明确的划分依据,因此很难确定图数据中顶点群落的具体大小,获取原始图数据在不同群落规模下的存储密度,根据存储密度的变化趋势预测顶点群落的规模,可以预测得到较为准确的平均群落规模。
82.本实施例中,可以根据一级缓存的顶点容量和顶点群落的平均顶点数量,确定顶点分组中顶点的数量下限,然后以不低于该数量下限的顶点数量对原始图数据中的顶点进行划分,得到多个顶点分组。例如,可以将一级缓存的顶点容量和平均顶点数量之间的最大值作为顶点分组中顶点的数量下限。结合上述举例,若平均顶点数量为m,一级缓存的顶点容量为a/w,在a/w与m之间,若a/w大于m则将a/w作为顶点分组中顶点的数量下限,反之将m作为顶点分组中顶点的数量下限。或者,也可以将a/w与m的平均值作为顶点分组中顶点的数量下限。具体根据一级缓存的顶点容量和平均顶点数量确定顶点分组中顶点的数量下限的方法可以根据需求设置,本实施例对此不做限制。
83.在确定顶点分组内顶点的数量下限之后,可以按顶点的存储顺序,以不低于数量下限的顶点数量对原始图数据中的顶点进行划分。结合上述举例,在确定顶点分组内顶点的数量上限和数量下限之后,可以从数量上限与数量下限之间选择确定预设顶点数量n,n不高于数量上限、且不低于数量下限。在对原始图数据中的顶点进行分组的过程中,可以按顶点在顶点数组中的存储位置,从第一个顶点或最后一个顶点开始,依次将n个顶点划分为一个顶点分组,得到多个顶点分组。
84.实际应用中,当顶点分组内顶点的数量不低于数量下限时,可以使顶点分组中具有较多数量的顶点,从而可以尽可能的保留图数据的群落结构。结合上述举例,当顶点分组的数量下限大于平均顶点数量时,顶点分组具有的顶点数量不低于图数据中顶点群落的平均规模,可以尽可能的保留图数据的群落结构。
85.可选地,步骤302还可以通过如下方式实现:
86.将一级缓存的顶点容量作为顶点分组中顶点的数量下限;
87.按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个顶点分组。
88.在一种实施例中,可以直接将一级缓存的顶点容量作为顶点分组中顶点的数量下限。结合上述举例,可以直接将一级缓存的顶点容量a/w作为顶点的数量下限,在分组过程中,可以从数量下限a/w与数量上限之间,确定不低于数量下限、且不高于数量上限的预设顶点数量n,并根据预设顶点数量n对图数据中的顶点进行分组。
89.实际应用中,顶点分组具有的顶点的数量下限不低于一级缓存的顶点容量,可以使顶点分组中具有较多数量的顶点,从而可以更好的保留顶点的群落结构。
90.可选地,步骤303可以通过如下方式实现:
91.基于预设的多个连续度数区间,将顶点分组中度数属于同一度数区间的顶点划分到一个子分组中,得到多个子分组;
92.根据多个连续度数区间的顺序,对多个子分组的存储顺序进行重排。
93.例如,预设的度数区间包括:第一度数区间[y, ∞)、第二度数区间[x,y)、第三度数区间[0,x),其中,x<y。可以将度数属于第一度数区间[y, ∞)的顶点划分为第一子分组,将度数属于第二度数区间[x,y)的顶点划分为第二子分组,以及将度数属于第三度数区间[0,x)的顶点划分为第三子分组。然后按第一度数区间、第二度数区间和第三度数区间的顺序,确定第一子分组的存储位置在第二子分组之前,第二子分组的存储位置在第三子分组之前。度数区间的范围、度数区间的数量可以根据需求设置,本实施例对此不做限制。
[0094]
结合图4

2所示,例如,预设的度数区间包括:[2, ∞)和[0,2),[2, ∞)的度数数值大于[0,2)的度数数值,因此,这2个度数区间的顺序是:[2, ∞)在前、[0,2)在后。针对第一顶点分组401,由于顶点1和顶点4的度数属于[2, ∞),因此,将顶点1和顶点4划分为第一子分组;同理,由于顶点2和顶点3的度数属于[0,2),因此,将顶点2和顶点3划分为第二子分组。按照这2个度数区间的顺序,将第一子分组的存储位置设置在第二子分组的存储位置之前,在目标图数据中先存储第一分子组,后存储第二子分组。
[0095]
实际应用中,在将顶点分组内的多个顶点划分为多个子分组,对多个子分组的存储位置进行排序时,可以将访问率高的顶点存储在相邻的位置,提高顶点分组内顶点的局部性,从而可以提高图计算的效率。
[0096]
可选地,在对子分组的存储顺序进行重排时,可以保持子分组内各顶点之间的相对位置与各顶点在原始图数据时的相对位置一致。结合上述举例,在将第一顶点分组401内的顶点划分为第一子分组顶点1和顶点4、第二子分组顶点2和顶点3之后,第一子分组内顶点1与顶点4的相对位置不变,与原始图数据中顶点1与顶点4的相对位置一致。
[0097]
实际应用中,针对子分组内的顶点,保持顶点之间的相对位置与顶点在原始图数据中的相对位置一致,可以保留各顶点在原始图数据中的相对位置关系,进一步的可以保留图数据中的群落结构。
[0098]
在一种实施例中,在对顶点分组中所有顶点的存储顺序进行重排的过程中,首先可以确定顶点分组中所有顶点的平均度数,然后根据平均度数,将顶点分组中度数大于或等于平均度数的顶点划分为第一子分组,将小于平均度数的顶点划分为第二子分组。针对
第一子分组内的顶点,根据顶点的度数,对第一子分组内的顶点的存储顺序进行重排。针对第二子分组内的顶点,不对第二子分组内的顶点进行排序,可以保持第二子分组内各顶点之间的相对位置与各顶点在原始图数据中的相对位置不变。将顶点分组内度数较高的顶点存储在相近位置,可以提高顶点分组的局部性,保持度数较低的各顶点之间的相对位置与各顶点在原始图数据中的相对位置不变,可以保留图数据的群落结构,提高图计算的效率。
[0099]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0100]
参照图6,示出了本发明的一种图数据的处理装置实施例的结构框图,装置600可以包括如下模块:
[0101]
获取模块601,用于获取原始图数据。
[0102]
分组模块602,用于将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组。
[0103]
排序模块603,用于根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排。
[0104]
重组模块604,用于基于重排后的顶点分组,组成目标图数据。
[0105]
可选地,顶点分组中的顶点数量不高于处理器中目标缓存的顶点容量。
[0106]
可选地,分组模块602,具体用于确定原始图数据中顶点群落的平均顶点数量;顶点群落由具有直接或间接关系的多个顶点组成;基于处理器所包括的一级缓存的顶点容量和平均顶点数量,确定顶点分组中顶点的数量下限;按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个顶点分组。
[0107]
可选地,分组模块602,具体用于将处理器所包括的一级缓存的顶点容量作为顶点分组中顶点的数量下限;按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个所顶点分组。
[0108]
可选地,第一确定模块,具体用于获取原始图数据在不同群落规模下的存储密度;存储密度由群落规模对应的顶点群落所包括的源顶点或目的顶点的数量与顶点总量的比值确定;基于存储密度的变化趋势,确定目标群落规模;目标群落规模与变化趋势的趋势转折区对应;将目标群落规模具有的顶点数量作为平均顶点数量。
[0109]
可选地,排序模块603,具体用于基于预设的多个连续度数区间,将顶点分组中度数属于同一度数区间的顶点划分到一个子分组中,得到多个子分组;根据多个连续度数区间的顺序,在顶点分组中对多个子分组的存储顺序进行重排。
[0110]
在本发明实施例中,电子设备获取原始图数据,将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组,根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排,基于重排后的顶点分组,组成目标图数据。将连续存储的多个顶点划分到一个顶点分组中,在对顶点分组内顶点的存储顺序进行重排时,对顶点的存储位置做小范围的调整,可以在保留图数据的群落结构的基础上将访问率较大的顶点存储在相邻位置,提高图数据的局部性,从而可以提高图计算的效率。
[0111]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0112]
图7是根据一示例性实施例示出的一种电子设备的结构框图。例如,电子设备700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0113]
参照图7,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。
[0114]
处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理部件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
[0115]
存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0116]
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
[0117]
多媒体组件708包括在所述电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0118]
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
[0119]
i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0120]
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子
设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0121]
通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0122]
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0123]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
[0124]
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种图数据的处理方法,该方法包括:
[0125]
获取原始图数据。
[0126]
将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组。
[0127]
根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排。
[0128]
基于重排后的顶点分组,组成目标图数据。
[0129]
可选地,顶点分组中的顶点数量不高于处理器中目标缓存的顶点容量。
[0130]
可选地,将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组,包括:
[0131]
确定原始图数据中顶点群落的平均顶点数量;顶点群落由具有直接或间接关系的多个顶点组成;
[0132]
基于处理器所包括的一级缓存的顶点容量和平均顶点数量,确定顶点分组中顶点的数量下限;
[0133]
按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个顶点分组。
[0134]
可选地,将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组,包括:
[0135]
将处理器所包括的一级缓存的顶点容量作为顶点分组中顶点的数量下限;
[0136]
按原始图数据中顶点的存储顺序,以不低于数量下限的顶点数量对图数据中的顶点进行划分,得到多个顶点分组。
[0137]
可选地,确定原始图数据中顶点群落的平均顶点数量,包括:
[0138]
获取原始图数据在不同群落规模下的存储密度;存储密度由群落规模对应的顶点群落所包括的源顶点或目的顶点的数量与顶点总量的比值确定;
[0139]
基于存储密度的变化趋势,确定目标群落规模;目标群落规模与变化趋势的趋势转折区对应;
[0140]
将目标群落规模具有的顶点数量作为平均顶点数量。
[0141]
可选地,根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排,包括:
[0142]
基于预设的多个连续度数区间,将顶点分组中度数属于同一度数区间的顶点划分到一个子分组中,得到多个子分组;
[0143]
根据多个连续度数区间的顺序,在顶点分组中对多个子分组的存储顺序进行重排。
[0144]
在本发明实施例中,电子设备获取原始图数据,将原始图数据中连续存储的多个顶点划分为一个顶点分组,得到多个顶点分组,根据顶点分组中顶点的度数,对顶点分组中所有顶点的存储顺序进行重排,基于重排后的顶点分组,组成目标图数据。将连续存储的多个顶点划分到一个顶点分组中,在对顶点分组内顶点的存储顺序进行重排时,对顶点的存储位置做小范围的调整,可以在保留图数据的群落结构的基础上将访问率较大的顶点存储在相邻位置,提高图数据的局部性,从而可以提高图计算的效率。
[0145]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0146]
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0147]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0148]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0149]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0150]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0151]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0152]
以上对本发明所提供的一种图数据的处理方法和装置、一种电子设备以及一种存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

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

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

相关文献