CN113515674A - 时序图随机游走的采样方法及装置 - Google Patents
时序图随机游走的采样方法及装置 Download PDFInfo
- Publication number
- CN113515674A CN113515674A CN202110647794.0A CN202110647794A CN113515674A CN 113515674 A CN113515674 A CN 113515674A CN 202110647794 A CN202110647794 A CN 202110647794A CN 113515674 A CN113515674 A CN 113515674A
- Authority
- CN
- China
- Prior art keywords
- data block
- vertex
- sampling
- edge
- neighbor
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供一种时序图随机游走的采样方法及装置,该采样方法包括:在对时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并获取所述当前顶点对应的数据块的前缀和数组;生成第一随机数,根据第一随机数确定待采样的目标数据块;若目标数据块中的所有邻居边均满足时序约束,对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。本申请将时序图中每个顶点的所有邻居边分割为多个数据块,并结合前缀和采样和别名采样,实现了时序图上的快速随机游走采样。
Description
技术领域
本申请涉及图处理技术领域,具体地,涉及一种时序图随机游走的采样方法及装置。
背景技术
许多真实世界的应用程序本质上是时序图,其中,时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序,边上的时序信息表明特定边何时发生变化,这些时序信息对于正确解释各种时序图是至关重要的。以通勤网络中的通勤枢纽为例,如图1所示,如果一个通勤者从顶点8到达顶点7,那么这个通勤者在下一时刻将能够到达顶点7所连接的所有位置,即{0,1,2,3,4,5,6},因为从顶点7到这些目的地的时序晚于顶点8到7的时序。然而,如果通勤者从顶点9到达顶点7,那么这个通勤者在下一时刻的有效目的地将仅包括{3,4,5,6}。显然,时序信息在这个通勤图示例的安排中起着重要的作用。在现实中,时序信息对于正确处理许多真实世界的图形应用程序(如电子商务、社交网络等)是至关重要的。
随机游走是许多图应用中流行的基本工具,如图预处理、图挖掘、顶点嵌入、顶点分类等。目前的随机游走算法一般是在静态图上进行,静态图上的随机游走通常从某一个顶点开始,在每一步游走时,根据每个随机游走应用定义的转移概率从当前顶点的邻居中采样一条边进行下一步的游走,不断重复以上过程,直至满足游走终止条件。
目前的各项研究均是基于静态图进行的,然而考虑到时序信息的重要性,需要研究一种时序图上的随机游走方法。时序图上随机游走的关键问题在于如何从当前顶点的邻居顶点中采样下一顶点,即,游走策略。
发明内容
本申请实施例提供一种时序图随机游走的采样方法及装置,以解决上述技术问题。
第一方面,本申请实施例提供一种时序图随机游走的采样方法,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样方法包括:
在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,构建每个数据块的别名表并根据所述顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组;每个数据块包括至少一条邻居边且各数据块中边的时序依次递减,边的时间权值由其时序确定;
在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并获取所述当前顶点对应的数据块的前缀和数组;
生成第一随机数,确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内,并从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块;
若所述目标数据块中的所有邻居边均满足时序约束,则对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点;其中,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序。
第二方面,本申请实施例提供一种时序图随机游走的采样方法,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样方法包括:
在对所述时序图进行随机游走前,进行如下预处理:
将时序图中每一顶点的邻居边集合分别进行分层划分,其中,第p层包括将邻居边集合按照2p-1的长度划分出的至少一个数据块,第p层中的每个数据块包括2p-1条邻居边且各数据块中边的时序依次递减;
分别构建每一层中所包括的每一数据块的别名表;
根据所述顶点的邻居边数量M构建所述顶点的M个前缀和数组;其中,第q个前缀和数组表示如果进行采样时所述顶点的满足时序约束的边的数量为q时,根据数值q在各层索引出的数据块的时间权值的前缀和;时间权值根据边的时序确定,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序;q∈[1,M];
在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并从当前顶点的所有邻居边中确定满足时序约束的边的数量;
将所述数量分解为至少一个加数之和,每个加数均为2的幂次方;
根据每个加数在相应层中索引出相应的数据块;
根据索引出的数据块获取所述M个前缀和数组中的目标前缀和数组;
生成第三随机数,确定所述第三随机数落在所述目标前缀和数组所形成的第h个数值区间内,并从所述索引出的数据块中确定第h个数据块,作为待采样的目标数据块;
对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
在本申请提供的时序图随机游走的采样方法中,首先对时序图进行特定的预处理,将时序图中每个顶点的所有邻居边分割为多个数据块,为每个数据块建立一个别名表并为多个数据块建立前缀和数组;在进行每轮采样时,首先通过前缀和采样从当前顶点所对应的多个数据块中采样出一个目标数据块,然后针对目标数据块进行别名采样,本实施例结合了两种采样方式(即前缀和采样和别名采样),实现了时序图上的快速随机游走采样。此外,为进一步降低采样复杂度,本申请还提出一种基于数据块分层划分的采样方法,由于该采样方法可以有效排除“目标数据块中包含不满足时序约束的边”这类情况,使得每次采样出的目标数据块都必然能够进行别名采样,因此平均采样速度更快。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了通勤网络中的通勤枢纽的时序示意图;
图2示出了本申请实施例提供的时序图随机游走的采样方法的流程图;
图3示出了图2中步骤140的具体流程图;
图4示出了图2中步骤160的具体流程图;
图5示出了本申请实施例采样顶点7的下一顶点的示意图;
图6示出了本申请实施例中对时序图中每一顶点的邻居边集合进行分层划分的流程图;
图7示出了将顶点7的邻居边集合进行分层划分后的结果示意图;
图8示出了本申请实施例提供的时序图随机游走的采样方法的另一流程图;
图9示出了图8中步骤430~440的辅助索引示意图;
图10示出了本申请实施例中的采样方法的采样效果测试结果;
图11示出了本申请实施例提供的时序图随机游走的采样装置的示意图;
图12示出了本申请实施例提供的时序图随机游走的采样装置的另一示意图。
具体实施方式
以下结合附图对本申请的示例性实施例进行详细说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
研究发现,在随机游走中整合时序信息可以显著提高模型在许多与图相关的应用中的准确性。在随机游走算法中,首先从时序图上任意选定一个顶点作为起始顶点,从起始顶点开始采样随机游走的下一顶点,在到达该下一顶点后,继续以该顶点作为当前顶点,从当前顶点的邻居顶点中采样下一顶点,重复以上采样过程,直至当前顶点无法采样出下一顶点,获得一条游走路径。与静态图不同的是,时序图上的随机游走路径必须保证路径上各顶点的时序是递增的。当在时序图上以不同的顶点作为起始顶点执行随机游走后,将输出一串随机游走序列。随机游走的关键问题在于如何从当前顶点的邻居顶点中采样下一顶点,即,游走策略。本申请实施例提供一种高性能的时序图随机游走的采样方法,以支持时序图上的随机游走。
图2示出了本申请实施例提供的时序图随机游走的采样方法的流程图,图2示出的是若在随机游走前对时序图中各顶点的邻居边集合进行第一预处理的情况下,如何从当前顶点的邻居顶点中采样出随机游走的下一顶点。
请参照图2,该方法包括:
步骤110,在随机游走前对时序图中各顶点的邻居边集合进行第一预处理。
需要说明的是,时序图中包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序,图1为时序图的其中一种示意图,本实施例下文以图1为例对本技术方案进行说明。
在步骤110中,具体包括:将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,构建每个数据块的别名表并根据该顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组。每个数据块包括至少一条邻居边且各数据块中边的时序依次递减,边的时间权值由其时序确定,例如,每条边的时间权值可以由线性时间权值规则定义。为便于理解,本实施例中暂将边上的时序作为其时间权值。
可选的,根据公式D/trunkSize+trunkSize≈内存容量,计算trunkSize;其中,trunkSize表示数据块的大小,D为时序图中顶点度数的最大值;将时序图中每一顶点的邻居边集合按照trunkSize进行分割,获得每一顶点对应的至少一个数据块;每个数据块中包括trunkSize条邻居边,剩余不足trunkSize条的邻居边组成一个数据块。
以图1中的顶点7为例,顶点7的邻居边为能够从顶点7进行转移的边,顶点7的邻居边集合为{0,1,2,3,4,5,6},为便于阐述,在本实施例中以顶点编号作为其边的编号,例如,0表示从顶点7转移到顶点0的边。假设trunkSize=2,则将顶点7的邻居边集合划分为四个数据块,分别为{6,5}、{4,3}、{2,1}和{0},且时序依次递减。当然,在实际应用中各数据块内边的数量也可以互不相同。
然后,分别构建每个数据块的别名表(AlisaTable),共获得四个别名表。
其中,别名表是根据数据块内每条边的边采样概率构建,边采样概率由边的时间权值确定,任一条边的边采样概率为wi/Sum,wi为这条边的时间权值,Sum为该数据块内所有边的时间权值之和。别名表包括第一数组和第二数组,第一数组存储第j列对应的邻居边s的概率分布占第j列的总概率分布的比例,第二数组存储第j列中不为邻居边s的另一条邻居边的边编号,每一列中至多存储两条邻居边。别名表(AlisaTable)的具体构建过程可以参照现有技术,在此不赘述。
然后,根据顶点7的四个数据块的时间权值建立数据块的前缀和数组,得到前缀和数组为{0,13,22,27,28}。
步骤120,在对时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点。
随机游走包括多轮采样,每轮采样时需从当前顶点的邻居顶点中采样出随机游走的下一顶点,该下一顶点作为下一轮采样时的当前顶点。
步骤130,获取当前顶点对应的数据块的前缀和数组。
步骤140,生成第一随机数,确定第一随机数落在前缀和数组所形成的第i个数值区间内,并从当前顶点的至少一个数据块中确定第i个数据块,作为待采样的目标数据块。
步骤140为对当前顶点的该至少一个数据块进行前缀和采样。示例性的,前缀和数组{0,13,22,27,28}共形成四个数值区间,分别为(0,13]、(13,22]、(22,27]和(27,28]。生成第一随机数,确定第一随机数落在哪一个数值区间内,将该数值区间所对应的数据块作为待采样的目标数据块。例如,若第一随机数落在(0,13]范围内,则取第一个数据块{6,5}作为目标数据块,若第一随机数落在(22,27]范围内,则取第三个数据块{2,1}作为目标数据块。
在一种具体实施例中,请参照图3,步骤140包括:
步骤141,根据本轮采样前所游走的前一条边的时序,从当前顶点的所有邻居边中确定出满足时序约束的边。
当前顶点的邻居边为连接当前顶点且能够从当前顶点进行转移的边。其中,时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序。例如,当前顶点为7,前一条边是从顶点9到达顶点7,故前一条边的时序为3,而本轮采样的边的时序必须大于前一条边的时序3,因此顶点7满足此时序约束的边包括{6,5,4,3}。
步骤142,根据满足时序约束的每条边的时间权值确定第一随机数生成范围;第一随机数生成范围为(0,N],N为满足时序约束的所有边的时间权值之和。
顶点7满足时序约束的边包括{6,5,4,3},则根据每条边的时间权值确定第一随机数生成范围为(0,22]。
步骤143,在第一随机数生成范围内生成第一随机数;其中,第一随机数落在前缀和数组所形成的各数值区间的概率符合当前顶点对应的至少一个数据块的采样概率的分布。
在这之前,根据时序图中各顶点对应的每一数据块内每条边的时间权值分别计算各数据块的采样概率,每一顶点对应的各数据块的采样概率之和为1。每一数据块的采样概率为该数据块内所有边的时间权值之和与该顶点的所有数据块的所有边的时间权值之和的比例。仍以顶点7为例,其邻居边集合划分为数据块{6,5}、{4,3}、{2,1}和{0},其中,数据块{6,5}的采样概率为13/28,数据块{4,3}的采样概率为9/28,数据块{2,1}的采样概率为5/28,数据块{0}的采样概率为1/28。通过第一随机数选中各数据块作为目标数据块的概率符合上述采样概率的分布。
步骤144,确定第一随机数落在前缀和数组所形成的第i个数值区间内。
步骤145,从当前顶点对应的所有数据块中确定第i个数据块,将第i个数据块作为待采样的目标数据块。
在确定目标数据块后,执行:
步骤150,判断目标数据块中的所有邻居边是否均满足时序约束;若是,执行步骤160,若否,执行步骤170至步骤190。
步骤160,对目标数据块进行别名采样,以从目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
若目标数据块中的所有邻居边均满足时序约束,则对目标数据块进行别名采样,以从目标数据块中采样出一条邻居边。具体的,请参照图4,对目标数据块进行别名采样的具体过程包括:
步骤161,确定第一随机数与该第i个数值区间的任一端点的差值。
步骤162,将差值与第i个数值区间的长度的比值作为参考概率,确定该参考概率落在目标数据块对应的别名表中的第m列。
步骤163,判断参考概率是否小于第一数组中第m列对应的比例;若小于,跳转执行步骤164,否则,跳转执行步骤165。
步骤164,采样第m列对应的邻居边n。
步骤165,采样第m列中不为邻居边n的另一条邻居边。
图5以顶点7为例,示出了本申请实施例采样顶点7的下一顶点的示意图。顶点7对应有四个数据块{6,5}、{4,3}、{2,1}和{0},图中示出了各数据块中每条边的时间权值,以及示出了四个数据块所对应的四个别名表,以及示出了顶点7对应的前缀和数组{0,13,22,27,28}。
示例性的,假设第一随机数为18,确定第一随机数18落在前缀和数组的第2个数值区间内,则采样第2个数据块{4,3}作为目标数据块。若目标数据块中邻居边4和邻居边3均满足时序约束,则对数据块{4,3}进行别名采样,以从邻居边4和邻居边3中采样出一条边。获取数据块{4,3}的别名表,计算参考概率为(18-13)/(22-13)=5/9,由于参考概率大于0.5,则确定参考概率落在该别名表中的第2列(反之,若参考概率小于0.5,则确定参考概率落在该别名表中的第1列)。别名表包括第一数组和第二数组,第一数组存储第j列所对应的邻居边s的概率分布占第j列的总概率分布的比例,第二数组存储第j列中不为邻居边s的另一条邻居边的边编号。如图5所示,第2列中包括邻居边3和邻居边4,通过第一数组判断参考概率5/9是否小于第2列所对应的邻居边3的比例,若小于,则采样邻居边3,否则,采样邻居边4。
若数据块中包括x条边,则参考概率∈(0,1/x]时,确定参考概率落在别名表中的第1列,参考概率∈(1/x,2/x]时,确定参考概率落在别名表中的第2列,参考概率∈(2/x,3/x]时,确定参考概率落在别名表中的第3列,以此类推。
在通过别名表采样出一条邻居边后,将采样出的邻居边的顶点作为随机游走的下一顶点,随机游走至该顶点,并以该顶点作为下一轮采样的当前顶点,继续进行采样。
进一步的,若目标数据块中包含不满足时序约束的边,例如目标数据块为{2,1},其中,邻居边2满足时序约束而邻居边1不满足时序约束,由于目标数据块中包含不满足条件的边,此时无法使用别名表进行采样,于是只能再次进行前缀和采样,即对目标数据块内满足时序约束的边进行前缀和采样。当目标数据块中包含不满足时序约束的边时执行以下步骤:
步骤170,根据目标数据块内满足时序约束的边的时间权值确定边的前缀和数组。
步骤180,在边的前缀和数组的数值范围内生成第二随机数。
步骤190,确定第二随机数落在边的前缀和数组所形成的第k个数值区间内,从满足时序约束的边中采样第k条邻居边,将采样出的第k条邻居边的顶点作为随机游走的下一顶点。
在步骤170~190中,确定目标数据块{2,1}中满足时序约束的邻居边2的前缀和数组,在该前缀和数组的数值范围(22,25]内生成第二随机数,此时确定第二随机数落在该前缀和数组的第1个数值区间内,从满足时序约束的边中采样对应的第1条邻居边,即采样邻居边2。
在此实施方式下,共进行了两次前缀和采样,第一次即步骤140中,将数据块作为采样对象,对多个数据块进行前缀和采样,第二次即步骤190中,将目标数据块内满足时序约束的边作为采样对象,对多条边进行前缀和采样。
可选的,若目标数据块中仅包含一条邻居边,一种简单的方式为:直接采样目标数据块中唯一的邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
可选的,在对时序图进行第一预处理后,即在构建每个数据块的别名表并根据顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组之后,该方法还包括:判断时序图对应的所有别名表及所有前缀和数组是否能全部存储在内存中;若不能全部存储在内存中,则将所有别名表及所有前缀和数组全部或部分存储在外存中。
其中,将所有别名表及所有前缀和数组全部或部分存储在外存中可以包括:将时序图中每一顶点对应的数据块的前缀和数组全部存储在内存中;将时序图中每一顶点对应的各个别名表优先存储在内存中,待内存不足后,将剩余未存储的别名表存储在外存中。由于数据块的前缀和数组全部存储在内存中,在步骤130~140中,可以快速获取所需的前缀和数组并快速采样出目标数据块,待确定目标数据块后,将目标数据块的别名表从外存载入到内存中,在内存中对别名表进行别名采样。
为进一步降低采样复杂度,本实施例提出数据块的分层设计,并基于此分层设计提出一种辅助索引方法。具体的,在进行随机游走前,对时序图中每一顶点的邻居边集合进行分层划分,以便于在采样时快速索引出数据块。其具体步骤如图6所示,包括:
步骤310,在进行随机游走前,将时序图中每一顶点的邻居边集合分别进行分层划分;其中,第p层包括将邻居边集合按照2p-1的长度划分出的至少一个数据块,第p层中的每个数据块包括2p-1条邻居边。
仍以顶点7为例,图7示出了将顶点7的邻居边集合进行分层划分后的结果示意图。如图7所示,在第1层中,将顶点7的邻居边集合{0,1,2,3,4,5,6}按照20的长度进行划分,得到七个数据块,在第2层中,将顶点7的邻居边集合{0,1,2,3,4,5,6}按照21的长度进行划分,得到四个数据块,在第3层中,将顶点7的邻居边集合{0,1,2,3,4,5,6}按照22的长度进行划分,得到一个数据块。
步骤320,分别构建每一层中所包括的每一数据块的别名表。
图7中共示出了12个数据块,共计算获得12个别名表。
步骤330,根据每一顶点的邻居边数量M构建每一顶点的M个前缀和数组。其中,第q个前缀和数组表示如果进行采样时该顶点的满足时序约束的边的数量为q时,根据数值q在各层索引出的数据块的时间权值的前缀和。q∈[1,M]。
步骤340,将时序图的所有别名表及所有前缀和数组存储在内存中。
结合上述分层设计方法,图8示出了本申请实施例提供的时序图随机游走的采样方法的另一流程图,图8示出的是若在随机游走前对时序图中各顶点的邻居边集合进行分层划分的情况下,如何从当前顶点的邻居顶点中采样出随机游走的下一顶点。
请参照图8,该采样方法包括:
步骤410,在对时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点。
步骤420,从当前顶点的所有邻居边中确定满足时序约束的边的数量。
以顶点7为例,其邻居边集合{0,1,2,3,4,5,6}中满足时序约束的边的数量可能为1、2、3、4、5、6、7。
步骤430,将该数量分解为至少一个加数之和,每个加数均为2的幂次方。
步骤440,根据每个加数在相应层中索引出相应的数据块。
其中,该至少一个加数由大到小排列,步骤440包括:取第一个加数,在长度为当前所取加数的层中索引第1个数据块;取下一个加数,在长度为当前所取加数的层中索引第r+1个数据块,r为当前已索引出的所有数据块的大小的前缀和;在取完所有加数后,获得由每个加数索引出的数据块。
步骤430~440为本实施例提供的一种辅助索引方法。图9示出了该辅助索引方法的示意图,以下结合图9对步骤430~440中的辅助索引方法进行说明。如图9所示:
1)当满足时序约束的边的数量为1时,将1分解为至少一个加数之和,即有1=1,于是取加数1,在长度为1的层中索引第1个数据块,最终索引获得数据块{6}。
2)当满足时序约束的边的数量为2时,将2分解为至少一个加数之和,即有2=2,于是取加数2,在长度为2的层中索引第1个数据块,最终索引获得数据块{6,5}。
3)当满足时序约束的边的数量为3时,将3分解为至少一个加数之和,即有3=2+1,于是取第一个加数2,在长度为2的层中索引第1个数据块,取下一个加数1,在长度为1的层中索引第r+1个数据块,由于当前已索引出的所有数据块的大小的前缀和为2,因此索引第3个数据块,最终索引获得数据块{6,5}和{4}。
4)当满足时序约束的边的数量为4时,将4分解为至少一个加数之和,即有4=4,于是取加数4,在长度为4的层中索引第1个数据块,最终索引获得数据块{6,5,4,3}。
5)当满足时序约束的边的数量为5时,将5分解为至少一个加数之和,即有5=4+1,于是取第一个加数4,在长度为4的层中索引第1个数据块,取下一个加数1,在长度为1的层中索引第r+1个数据块,由于当前已索引出的所有数据块的大小的前缀和为4,因此索引第5个数据块,最终索引获得数据块{6,5,4,3}和{2}。
6)当满足时序约束的边的数量为6时,将6分解为至少一个加数之和,即有6=4+2,于是取第一个加数4,在长度为4的层中索引第1个数据块,取下一个加数2,在长度为2的层中索引第r+1个数据块,由于当前已索引出的所有数据块的大小的前缀和为4,因此索引第5个数据块,最终索引获得数据块{6,5,4,3}和{2,1}。
7)当满足时序约束的边的数量为7时,将7分解为至少一个加数之和,即有7=4+2+1,于是取第一个加数4,在长度为4的层中索引第1个数据块,取下一个加数2,在长度为2的层中索引第r+1个数据块,由于当前已索引出的所有数据块的大小的前缀和为4,因此索引第5个数据块,取下一个加数1,在长度为1的层中索引第r+1个数据块,由于当前已索引出的所有数据块的大小的前缀和为6,因此索引第7个数据块,最终索引获得数据块{6,5,4,3}、{2,1}和{0}。
在进行采样时,通过上述辅助索引方法,根据当前顶点的满足时序约束的边的数量可以快速定位数据块。在前述步骤320中,根据满足时序约束的边的数量,针对每一可能的数量所索引出的数据块构建时间权值的前缀和数组。例如顶点7的满足时序约束的边的数量有7种情况,每种情况对应一种索引出的数据块,从而构建出7种前缀和数组。例如,在步骤320中,针对满足时序约束的边的数量为6的情况,构建数据块{6,5,4,3}和{2,1}的时间权值的前缀和数组,同时,针对满足时序约束的边的数量为7的情况,构建数据块{6,5,4,3}、{2,1}和{0}的时间权值的前缀和数组。
在通过辅助索引方法索引出相应的数据块后,执行:
步骤450,根据索引出的数据块获取M个前缀和数组中的目标前缀和数组。
步骤460,生成第三随机数,确定第三随机数落在目标前缀和数组所形成的第h个数值区间内,并从索引出的数据块中确定第h个数据块,作为待采样的目标数据块。
步骤470,对目标数据块进行别名采样,以从目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
需要说明的是,由于所有的数都能够分解为2的幂次方之和,索引出的每个数据块中的所有边必然都满足时序约束,因此,通过步骤460的前缀和采样获得的目标数据块中必然全部为满足时序约束的边,不会出现目标数据块中包含不满足时序约束的边的情况。
可以理解的,别名采样比前缀和采样的采样速度更快,由于图8所示的方法排除了“目标数据块中包含不满足时序约束的边”这类情况,使得每次采样出的目标数据块都必然能够进行别名采样,因此,图8所示的方法相较图2所示的方法,平均采样速度更快。
进一步的,如果当前顶点的所有邻居边的时序均早于本轮采样前所游走的前一条边,那么当前顶点将无法采样出下一顶点,于是可停止采样,输出一条游走路径。
为了验证本申请实施例提供的采样方法的实际使用效果,根据该采样方法构建时序图的随机游走引擎,本文中称为“TEA”。在带有较大SSD(固态硬盘)的设备上,在TEA中实现了三个算法,分别为Linear weight random walk(线性边权随机游走)、Exponentialweight random walk(指数边权随机游走)和node2vec,并使用四个数据集(growth、edit、delicious、twitter)进行了测试。对于每组测试,将TEA与目前效果最好的两种系统(GraphWalker、KnightKing)进行了对比,各组测试结果如图10中的表格所示,表格中的数值表示采样一条邻居边所花费的时间。从图10可见,TEA在上述三个算法中均可获得不错的效果,运行效率比现有系统最多可以提高上千倍。
基于同一发明构思,本申请实施例提供一种时序图随机游走的采样装置,请参照图11,该采样装置包括:
第一预处理模块510,用于在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,构建每个数据块的别名表并根据所述顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组;每个数据块包括至少一条邻居边且各数据块中边的时序依次递减,边的时间权值由其时序确定;
第一顶点确定模块520,用于在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并获取所述当前顶点对应的数据块的前缀和数组;
第一前缀和采样模块530,用于生成第一随机数,确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内,并从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块;
第一别名采样模块540,用于若所述目标数据块中的所有邻居边均满足时序约束,则对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点;其中,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序。
同时,本申请实施例还提供一种时序图随机游走的采样装置,请参照图12,该采样装置包括:
第二预处理模块610,用于在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别进行分层划分,其中,第p层包括将邻居边集合按照2p -1的长度划分出的至少一个数据块,第p层中的每个数据块包括2p-1条邻居边且各数据块中边的时序依次递减;分别构建每一层中所包括的每一数据块的别名表;根据所述顶点的邻居边数量M构建所述顶点的M个前缀和数组;其中,第q个前缀和数组表示如果进行采样时所述顶点的满足时序约束的边的数量为q时,根据数值q在各层索引出的数据块的时间权值的前缀和;时间权值根据边的时序确定,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序;q∈[1,M];
第二顶点确定模块620,用于在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并从当前顶点的所有邻居边中确定满足时序约束的边的数量;
数据块索引模块630,用于将所述数量分解为至少一个加数之和,每个加数均为2的幂次方;根据每个加数在相应层中索引出相应的数据块;根据索引出的数据块获取所述M个前缀和数组中的目标前缀和数组;
第二前缀和采样模块640,用于生成第三随机数,确定所述第三随机数落在所述目标前缀和数组所形成的第h个数值区间内,并从所述索引出的数据块中确定第h个数据块,作为待采样的目标数据块;
第二别名采样模块650,用于对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
可以理解,本实施例中的时序图随机游走的采样装置,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,该时序图随机游走的采样装置中未提及之处可以参照时序图随机游走的采样方法中的相应描述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种时序图随机游走的采样方法,其特征在于,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样方法包括:
在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,构建每个数据块的别名表并根据所述顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组;每个数据块包括至少一条邻居边且各数据块中边的时序依次递减,边的时间权值由其时序确定;
在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并获取所述当前顶点对应的数据块的前缀和数组;
生成第一随机数,确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内,并从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块;
若所述目标数据块中的所有邻居边均满足时序约束,则对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点;其中,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序。
2.根据权利要求1所述的方法,其特征在于,所述生成第一随机数,确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内,并从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块,包括:
根据本轮采样前所游走的前一条边的时序,从当前顶点的所有邻居边中确定出满足时序约束的边;
根据满足时序约束的每条边的时间权值确定第一随机数生成范围;所述第一随机数生成范围为(0,N],N为满足时序约束的所有边的时间权值之和;
在所述第一随机数生成范围内生成第一随机数;其中,所述第一随机数落在所述前缀和数组所形成的各数值区间的概率符合所述当前顶点对应的所述至少一个数据块的采样概率的分布;
确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内;
从当前顶点对应的所述至少一个数据块中确定第i个数据块,将所述第i个数据块作为待采样的目标数据块。
3.根据权利要求2所述的方法,其特征在于,在将时序图中每一顶点的邻居边集合分别划分为至少一个数据块之后,所述方法还包括:
根据所述顶点对应的每一数据块内每条边的时间权值分别计算各数据块的采样概率,所述顶点对应的各数据块的采样概率之和为1。
4.根据权利要求2所述的方法,其特征在于,所述别名表是根据所述数据块内每条边的边采样概率构建,边采样概率由边的时间权值确定,所述别名表包括第一数组和第二数组,第一数组存储第j列对应的邻居边s的概率分布占第j列的总概率分布的比例,第二数组存储第j列中不为邻居边s的另一条邻居边的边编号,每一列中至多存储两条邻居边;所述对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,包括:
确定所述第一随机数与所述第i个数值区间的任一端点的差值;
将所述差值与所述第i个数值区间的长度的比值作为参考概率,确定所述参考概率落在所述目标数据块对应的别名表中的第m列;
判断所述参考概率是否小于第一数组中第m列对应的比例;
若小于,则采样所述第m列对应的邻居边n;
若不小于,则采样所述第m列中不为邻居边n的另一条邻居边。
5.根据权利要求1所述的方法,其特征在于,在从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块之后,所述方法还包括:
若所述目标数据块中仅包含一条邻居边,则直接采样所述目标数据块中的所述邻居边,将采样出的所述邻居边的顶点作为随机游走的下一顶点。
6.根据权利要求1所述的方法,其特征在于,在从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块之后,所述方法还包括:
若所述目标数据块中包含不满足时序约束的边,根据所述目标数据块内满足时序约束的边的时间权值确定边的前缀和数组;
在所述边的前缀和数组的数值范围内生成第二随机数;
确定所述第二随机数落在所述边的前缀和数组所形成的第k个数值区间内,从所述满足时序约束的边中采样第k条邻居边,将采样出的所述第k条邻居边的顶点作为随机游走的下一顶点。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,包括:
根据公式D/trunkSize+trunkSize≈内存容量,计算trunkSize;其中,trunkSize表示数据块的大小,D为所述时序图中顶点度数的最大值;
将所述时序图中每一顶点的邻居边集合按照trunkSize进行分割,获得每一顶点对应的至少一个数据块;每个数据块中包括trunkSize条邻居边,剩余不足trunkSize条的邻居边组成一个数据块。
8.根据权利要求1所述的方法,其特征在于,在构建每个数据块的别名表并根据所述顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组之后,所述方法还包括:
判断所述时序图对应的所有别名表及所有前缀和数组是否能全部存储在内存中;若不能全部存储在内存中,则将所有前缀和数组存储在内存中,并将各个别名表优先存储在内存中,待内存不足后,将剩余未存储的别名表存储在外存中。
9.根据权利要求8所述的方法,其特征在于,在对所述目标数据块进行别名采样之前,所述方法还包括:
将所述目标数据块的别名表从外存载入到内存中。
10.一种时序图随机游走的采样方法,其特征在于,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样方法包括:
在对所述时序图进行随机游走前,进行如下预处理:
将时序图中每一顶点的邻居边集合分别进行分层划分,其中,第p层包括将邻居边集合按照2p-1的长度划分出的至少一个数据块,第p层中的每个数据块包括2p-1条邻居边且各数据块中边的时序依次递减;
分别构建每一层中所包括的每一数据块的别名表;
根据所述顶点的邻居边数量M构建所述顶点的M个前缀和数组;其中,第q个前缀和数组表示如果进行采样时所述顶点的满足时序约束的边的数量为q时,根据数值q在各层索引出的数据块的时间权值的前缀和;时间权值根据边的时序确定,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序;q∈[1,M];
在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并从当前顶点的所有邻居边中确定满足时序约束的边的数量;
将所述数量分解为至少一个加数之和,每个加数均为2的幂次方;
根据每个加数在相应层中索引出相应的数据块;
根据索引出的数据块获取所述M个前缀和数组中的目标前缀和数组;
生成第三随机数,确定所述第三随机数落在所述目标前缀和数组所形成的第h个数值区间内,并从所述索引出的数据块中确定第h个数据块,作为待采样的目标数据块;
对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
11.根据权利要求10所述的方法,其特征在于,所述至少一个加数由大到小排列,所述根据每个加数在相应层中索引出相应的数据块,包括:
取第一个加数,在长度为当前所取加数的层中索引第1个数据块;
取下一个加数,在长度为当前所取加数的层中索引第r+1个数据块,r为当前已索引出的所有数据块的大小的前缀和;
在取完所有加数后,获得由每个加数索引出的数据块。
12.一种时序图随机游走的采样装置,其特征在于,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样装置包括:
第一预处理模块,用于在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别划分为至少一个数据块,构建每个数据块的别名表并根据所述顶点对应的各个数据块中边的时间权值建立数据块的前缀和数组;每个数据块包括至少一条邻居边且各数据块中边的时序依次递减,边的时间权值由其时序确定;
第一顶点确定模块,用于在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并获取所述当前顶点对应的数据块的前缀和数组;
第一前缀和采样模块,用于生成第一随机数,确定所述第一随机数落在所述前缀和数组所形成的第i个数值区间内,并从当前顶点的所述至少一个数据块中确定第i个数据块,作为待采样的目标数据块;
第一别名采样模块,用于若所述目标数据块中的所有邻居边均满足时序约束,则对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点;其中,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序。
13.一种时序图随机游走的采样装置,其特征在于,所述时序图包括多个顶点,顶点与顶点间通过边相连,每条边上具有相应的时序;随机游走包括多轮采样,每轮采样时从当前顶点的邻居顶点中采样出随机游走的下一顶点;所述采样方法包括:
第二预处理模块,用于在对所述时序图进行随机游走前,进行如下预处理:将时序图中每一顶点的邻居边集合分别进行分层划分,其中,第p层包括将邻居边集合按照2p-1的长度划分出的至少一个数据块,第p层中的每个数据块包括2p-1条邻居边且各数据块中边的时序依次递减;分别构建每一层中所包括的每一数据块的别名表;根据所述顶点的邻居边数量M构建所述顶点的M个前缀和数组;其中,第q个前缀和数组表示如果进行采样时所述顶点的满足时序约束的边的数量为q时,根据数值q在各层索引出的数据块的时间权值的前缀和;时间权值根据边的时序确定,所述时序约束为:该条边的时序大于本轮采样前所游走的前一条边的时序;q∈[1,M];
第二顶点确定模块,用于在对所述时序图进行随机游走的多轮采样时,确定本轮采样的当前顶点,并从当前顶点的所有邻居边中确定满足时序约束的边的数量;
数据块索引模块,用于将所述数量分解为至少一个加数之和,每个加数均为2的幂次方;根据每个加数在相应层中索引出相应的数据块;根据索引出的数据块获取所述M个前缀和数组中的目标前缀和数组;
第二前缀和采样模块,用于生成第三随机数,确定所述第三随机数落在所述目标前缀和数组所形成的第h个数值区间内,并从所述索引出的数据块中确定第h个数据块,作为待采样的目标数据块;
第二别名采样模块,用于对所述目标数据块进行别名采样,以从所述目标数据块中采样出一条邻居边,将采样出的邻居边的顶点作为随机游走的下一顶点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110647794.0A CN113515674B (zh) | 2021-06-10 | 2021-06-10 | 时序图随机游走的采样方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110647794.0A CN113515674B (zh) | 2021-06-10 | 2021-06-10 | 时序图随机游走的采样方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515674A true CN113515674A (zh) | 2021-10-19 |
CN113515674B CN113515674B (zh) | 2022-10-25 |
Family
ID=78065674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110647794.0A Active CN113515674B (zh) | 2021-06-10 | 2021-06-10 | 时序图随机游走的采样方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515674B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115345285A (zh) * | 2022-10-18 | 2022-11-15 | 北京白海科技有限公司 | 基于gpu的时序图神经网络训练方法、系统及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684520A (zh) * | 2019-01-07 | 2019-04-26 | 东北大学 | 一种大规模时序图顶点相似度计算方法 |
CN112507244A (zh) * | 2019-09-16 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 社交数据推荐方法、装置、分布式计算集群及存储介质 |
CN112559847A (zh) * | 2020-12-10 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 网络图中节点搜索方法、装置、电子设备和存储介质 |
-
2021
- 2021-06-10 CN CN202110647794.0A patent/CN113515674B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684520A (zh) * | 2019-01-07 | 2019-04-26 | 东北大学 | 一种大规模时序图顶点相似度计算方法 |
CN112507244A (zh) * | 2019-09-16 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 社交数据推荐方法、装置、分布式计算集群及存储介质 |
CN112559847A (zh) * | 2020-12-10 | 2021-03-26 | 腾讯科技(深圳)有限公司 | 网络图中节点搜索方法、装置、电子设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115345285A (zh) * | 2022-10-18 | 2022-11-15 | 北京白海科技有限公司 | 基于gpu的时序图神经网络训练方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113515674B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Acar et al. | Parallel batch-dynamic graph connectivity | |
JPH02227725A (ja) | 区画分割方法及び装置 | |
Brönnimann et al. | Space-efficient planar convex hull algorithms | |
Sanders et al. | Parallel label-setting multi-objective shortest path search | |
CN109656798B (zh) | 基于顶点重排序的超级计算机大数据处理能力测试方法 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN106709503A (zh) | 一种基于密度的大型空间数据聚类算法k‑dbscan | |
CN111292805A (zh) | 一种三代测序数据重叠检测方法及系统 | |
CN105488176A (zh) | 数据处理方法和装置 | |
CN100476824C (zh) | 存储元素的方法与系统及查找元素的方法与系统 | |
CN111191778B (zh) | 深度学习网络处理方法、装置与编译器 | |
CN108549696B (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN113515674B (zh) | 时序图随机游走的采样方法及装置 | |
CN110097581B (zh) | 基于点云配准icp算法构建k-d树的方法 | |
Shen et al. | Many sequential iterative algorithms can be parallel and (nearly) work-efficient | |
CN105843907A (zh) | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 | |
CN106503386A (zh) | 评估光功率预测算法性能优劣的方法及装置 | |
He et al. | Parallel outlier detection using kd-tree based on mapreduce | |
US7987250B2 (en) | Maximum clique in a graph | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速系统 | |
CN110532528B (zh) | 基于随机游走的书籍相似度计算方法及电子设备 | |
KR102006283B1 (ko) | 패스트맵을 이용한 데이터셋의 m-트리 적재방법 | |
CN106445960A (zh) | 一种数据聚类方法和装置 | |
Merry et al. | Accelerating kd-tree searches for all k-nearest neighbours | |
Hayashi et al. | Parallel and memory-efficient Burrows-Wheeler transform |
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 |