CN113761293A - 图数据强连通分量挖掘方法、装置、设备及存储介质 - Google Patents
图数据强连通分量挖掘方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113761293A CN113761293A CN202110584276.9A CN202110584276A CN113761293A CN 113761293 A CN113761293 A CN 113761293A CN 202110584276 A CN202110584276 A CN 202110584276A CN 113761293 A CN113761293 A CN 113761293A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- label
- directed graph
- attribute value
- 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.)
- Pending
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/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2216/00—Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
- G06F2216/03—Data mining
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种图数据强连通分量挖掘方法、装置、设备及存储介质,该方法获取包括多个节点的有向图;然后将有向图划分为多个区块图,对各个区块图中节点的第一标签进行异步的标签传播更新,从而大大加快第一标签迭代的速度,并在有向图的全部节点的第一标签更新完成后,将更新前后对应的第一标签相同的节点作为第一子节点,可确定出该有向图中和第一子节点属于同一强连通分量的节点;该方法通过异步的标签传播更新,能够加速第一标签的更新速度,从而减少标签传播过程中所需要的迭代次数,有效提高强连通分量挖掘的效率,有利于减少计算资源的消耗。本申请可广泛应用于大数据技术领域。
Description
技术领域
本申请涉及大数据技术领域,尤其是一种图数据强连通分量挖掘方法、装置、设备及存储介质。
背景技术
图作为一种数据结构,广泛存在于自然科学以及社会科学的各个领域。例如,图中各个节点的连通性问题,在电信电力网络、运输系统、计算机程序设计、故障诊断、人工智能、印刷电路板设计、用户分析等场景中经常被考虑、分析和应用到。
当前,针对节点连通性问题的研究包括挖掘有向图中的强连通分量的任务。相关技术中采用的挖掘算法,单机执行时受到图数据的数据量限制,难以适应大规模的图数据需求;而采用分布式挖掘的算法,往往需要迭代的次数过多,需要耗费大量的硬件资源。综上,相关技术中采用的图数据强连通分量挖掘方式实用性不高,挖掘的效果往往不太理想。
发明内容
本申请的目的在于至少一定程度上解决现有技术中存在的技术问题之一。
为此,本申请实施例的一个目的在于提供一种图数据强连通分量挖掘方法,该方法能够提高强连通分量挖掘的效率,有利于减少计算资源的消耗。
为了达到上述技术目的,本申请实施例中所采取的技术方案包括:
一方面,本申请实施例提供一种图数据强连通分量挖掘方法,该方法包括以下步骤:
获取有向图;所述有向图中包括多个节点,各个所述节点对应有第一标签,所述第一标签包括第一入度属性值和第一出度属性值;不同的所述节点对应的所述第一入度属性值不同,不同的所述节点对应的所述第一出度属性值不同;
将所述有向图划分为多个区块图;
对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签;
当所述有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;所述第一子节点为更新前后对应的第一标签相同的节点。
另一方面,本申请实施例提供一种图数据强连通分量挖掘装置,该装置包括:
获取模块,用于获取有向图;所述有向图中包括多个节点,各个所述节点对应有第一标签,所述第一标签包括第一入度属性值和第一出度属性值;不同的所述节点对应的所述第一入度属性值不同,不同的所述节点对应的所述第一出度属性值不同;
划分模块,用于将所述有向图划分为多个区块图;
存储与更新模块,用于对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签;
处理模块,用于当所述有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;所述第一子节点为更新前后对应的第一标签相同的节点。
可选地,在一些实施例中,所述装置还包括:
双向边压缩模块,用于确定所述有向图中的节点对,并将所述节点对合并为一个节点;所述节点对包括第二子节点和第三子节点,所述第二子节点和所述第三子节点存在双向连接关系。
可选地,在一些实施例中,所述装置还包括:
传播模块,用于对所述有向图中节点的所述第一入度属性值和所述第一出度属性值进行标签传播更新,得到各个所述节点的第二标签;所述第二标签包括第二入度属性值和第二出度属性值;
解耦模块,用于根据所述第二标签确定并删除所述有向图中的解耦边;所述解耦边两端连接的节点对应的所述第二标签不同。
可选地,在一些实施例中,所述存储与更新模块包括:
第一存储模块,用于将所述有向图中各个所述节点的所述第一入度属性值存储至服务器;
第一拉取模块,用于通过多个处理单元异步拉取各个所述区块图中节点的所述第一入度属性值以及每个所述节点对应的第三入度属性值;其中,每个所述处理单元处理至少一个所述区块图;所述第三入度属性值为所述节点的入度连接节点的第一入度属性值;
第一更新模块,用于在所述处理单元中,通过所述节点对应的所述第三入度属性值更新所述节点的所述第一入度属性值,并将更新后的所述第一入度属性值同步到所述服务器。
可选地,在一些实施例中,所述第一更新模块包括:
第一确定子模块,用于确定所述节点对应的所述第一入度属性值和所述第三入度属性值中的最小值或者最大值;
第一处理子模块,用于将所述最小值或者所述最大值作为所述节点更新后的第一入度属性值。
可选地,在一些实施例中,所述存储与更新模块包括:
第二存储模块,用于将所述有向图中各个所述节点的所述第一出度属性值存储至服务器;
第二拉取模块,用于通过多个处理单元异步拉取各个所述区块图中节点的所述第一出度属性值以及每个所述节点对应的第三出度属性值;其中,每个所述处理单元处理至少一个所述区块图;所述第三出度属性值为所述节点的出度连接节点的第一出度属性值;
第二更新模块,用于在所述处理单元中,通过所述节点对应的所述第三出度属性值更新所述节点的所述第一出度属性值,并将更新后的所述第一出度属性值同步到所述服务器。
可选地,在一些实施例中,所述第二更新模块包括:
第二确定子模块,用于确定所述节点对应的所述第一出度属性值和所述第三出度属性值中的最小值或者最大值;
第二处理子模块,将所述最小值或者所述最大值作为所述节点更新后的第一出度属性值。
可选地,在一些实施例中,所述装置还包括:
抽取模块,用于从所述有向图中抽取出已确定的强连通分量,得到更新后的有向图。
可选地,在一些实施例中,所述装置还包括:
第一检测子模块,用于检测所述有向图中的节点个数;
第三处理子模块,用于当所述节点个数小于等于第一阈值,将所述有向图发送到单个的处理单元进行强连通分量挖掘;或者,
第二检测子模块,用于检测所述有向图中节点之间的连接关系个数;
第四处理子模块,用于当所述连接关系个数小于等于第二阈值,将所述有向图发送到单个的处理单元进行强连通分量挖掘。
可选地,在一些实施例中,所述装置还包括:
初始化模块,用于当所述节点个数大于第一阈值或者当所述连接关系个数大于第二阈值,对更新后的有向图中各个所述节点对应的第一标签进行初始化,并返回所述划分模块执行将所述有向图划分为多个区块图的步骤。
可选地,在一些实施例中,所述第三处理子模块或者所述第四处理子模块包括:
发送子模块,用于将所述有向图发送到单个的所述处理单元;
第一搜索子模块,用于在所述处理单元中,对所述有向图进行深度优先搜索,按照被搜索到的顺序依次将各个所述节点加入到堆栈中;
第二搜索子模块,用于从所述堆栈的栈顶向栈中依次搜索第四子节点;所述第四子节点对应的第一时间戳和第二时间戳相同;其中,所述第一时间戳为各个所述节点被搜索到时的时间戳,所述第二时间戳为各个所述节点可追溯到最早的时间戳;
挖掘子模块,用于确定与所述第四子节点的第一时间戳或者第二时间戳相同的节点属于同一强连通分量。
可选地,在一些实施例中,所述处理模块包括:
第五处理子模块,用于在所述有向图中的全部节点更新完成后,从所述有向图中确定所述第一子节点;
第三搜索子模块,用于从所述第一子节点开始,沿入度或者出度的方向进行深度优先搜索,确定与所述第一子节点携带有相同第一标签的节点属于同一强连通分量。
另一方面,本申请实施例提供一种计算机设备,该设备包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现前面所述的图数据强连通分量挖掘方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,其中存储有处理器可执行的程序,前面所述处理器可执行的程序在由处理器执行时用于实现前面所述的图数据强连通分量挖掘方法。
另一方面,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在前面所述的计算机可读存储介质中;前面所述的计算机设备的处理器可以从前面所述的计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前面所述的图数据强连通分量挖掘方法。
本发明的优点和有益效果将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到:
本申请实施例中提供的图数据强连通分量挖掘方法,通过获取包括多个节点的有向图,其中各个节点对应有第一标签,第一标签包括节点的第一入度属性值和第一出度属性值;然后将有向图划分为多个区块图,对各个区块图中节点的第一标签进行异步的标签传播更新,从而大大加快第一标签迭代的速度,并在有向图的全部节点的第一标签更新完成后,将更新前后对应的第一标签相同的节点作为第一子节点,可确定出该有向图中和第一子节点属于同一强连通分量的节点;该图数据强连通分量挖掘方法通过异步的标签传播更新,能够加速第一标签的更新速度,从而减少标签传播过程中所需要的迭代次数,有效提高强连通分量挖掘的效率,有利于减少计算资源的消耗。
附图说明
为了更清楚地说明本申请实施例或者现有技术中的技术方案,下面对本申请实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1为本申请实施例中提供的一种强连通分量的应用场景示意图;
图2为本申请实施例中提供的另一种强连通分量的应用场景示意图;
图3为本申请实施例中提供的一种图数据强连通分量挖掘方法的流程示意图;
图4为本申请实施例中提供的一种获取到的有向图的示意图;
图5为本申请实施例中提供的一种图数据强连通分量挖掘方法中划分区块图的示意图;
图6为本申请实施例中提供的另一种图数据强连通分量挖掘方法中划分区块图的示意图;
图7为本申请实施例中提供的一种图数据强连通分量挖掘方法中更新第一入度属性值的示意图;
图8为本申请实施例中提供的一种图数据强连通分量挖掘方法中有向图的第一标签更新后的示意图;
图9为本申请实施例中提供的一种图数据强连通分量挖掘方法中异步更新的实施环境示意图;
图10为本申请实施例中提供的另一种图数据强连通分量挖掘方法中异步更新的实施环境示意图;
图11为本申请实施例中提供的一种图数据强连通分量挖掘方法中异步更新第一标签的原理示意图;
图12为本申请实施例中提供的一种图数据强连通分量挖掘方法中通过单个处理单元进行挖掘的示意图;
图13为本申请实施例中提供的一种图数据强连通分量挖掘方法中双向边压缩的示意图;
图14为本申请实施例中提供的一种图数据强连通分量挖掘方法中双边解耦的示意图;
图15为本申请实施例中提供的一种图数据强连通分量挖掘方法的处理流程示意图;
图16为本申请实施例中提供的一种图数据强连通分量挖掘装置的结构示意图;
图17为本申请实施例中提供的一种计算机设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
在对本申请实施例进行进一步详细说明之前,首先对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
图(Graph):指由许多节点(也可以称为顶点)通过相互之间的连接而组成的一种数据形式,其中的节点可以是人,机构等实体,节点之间的连接(称作边)表示某种关系(如好友关系,从属关系等);一个图可以只有一种节点和一种边(称为单一图),也可以有多种节点或多种边(称为异构图),其中图中的边可以是有向边(称为有向图)或无向边(称为无向图)。
强连通:对于一个有向图中的任意两个节点u和节点v,如果同时存在节点u到节点v的有向路径和节点v到节点u的有向路径,则称节点u与节点v强连通。
强连通图:如果一个有向图中任意两个节点之间都强连通,那么这个有向图是一个强连通图。
强连通分量(Strongly Connected Component,SCC):有向图的极大强连通子图称为其强连通分量。
深度优先搜索(DFS):一种搜索算法,具体是从图中某节点v出发执行步骤:访问顶点v;依次从节点v的未被访问的邻接节点出发,对图进行深度优先遍历;直至图中和节点v有路径相通的节点都被访问;若图中尚有节点未被访问,则从一个未被访问的节点出发,重新进行深度优先遍历,直到图中所有节点均被访问过为止。
本申请实施例中所提供的图数据强连通分量挖掘方法可以应用于大数据技术之中。大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理极为大量的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
本申请实施例中的图数据强连通分量挖掘方法,可以应用大数据技术中的数据挖掘、分布式数据库和云计算平台处理相关的图数据,例如基于云计算技术,分布式地开展强连通分量的挖掘任务。云计算(Cloud Computing)是一种新兴的计算模式,它可以将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。云计算的资源池中主要包括计算设备(为虚拟化机器,包含操作系统)、存储设备和网络设备。
随着计算机科技的发展,数据分析技术逐步兴起并被运用在了各行各业。在这其中,图作为一种典型的数据结构,在各类应用场景中经常被运用到,对图数据的分析和开发,也是当下的一个热门领域。相关技术中,图数据的连通性问题是其分析应用中的一个重要组成部分。对于有向图来说,例如有向图G,如果对图G中任意两个节点(记为节点u和节点v),既存在从节点u到节点v的路径,也存在从节点v到节点u的路径,则可以称该有向图为强连通有向图。对于非强连通的有向图,其极大强连通子图称为强连通分量。
有向图的强连通分量具有非常广阔的应用场景:例如在社交软件中,往往需要分析人物关系网用以确定用户之间的关联性,此时可能就需要确定一组用户群组成的图数据的强连通分量,参照图1,图1中用户11给用户12发送过信息,用户12给用户13发送过信息,而用户13又给用户11发送过信息,则用户11、用户12和用户13之间任意两者都可以通过第三者传递信息,说明用户11、用户12和用户13三者之间强相关。再比如说,参照图2,在通信网络中为了确定两台通信设备之间能否互相传递信息,就需要确定一组通信设备组成的图数据的强连通分量,如果两台通信设备同属一个强连通分量,则两者就可以互相传递信息。类似地,有向图的强连通分量还可以在交通运输、可靠性分析、电路故障诊断、情报分析等多种场景下得到应用。
上述强连通分量的应用基础包括从有向图中正确无误地挖掘出强连通分量,相关技术中,对强连通分量的挖掘主要采用基于深度优先搜索的算法,具体可以分为单机执行的算法和分布式执行的算法,其中,单机执行的挖掘算法可处理图数据的数据量存在较大限制,当数据量较小时能够较为高效地完成强连通分量的挖掘,但难以适应大规模的图数据挖掘需求;分布式执行的算法虽然可以完成对大批量图数据的强连通分量挖掘,然而这种挖掘方式会出现大量的冗余计算,算法的迭代速度较慢,需要耗费大量的硬件资源,且挖掘时长也比较长。综合上述可以看出,相关技术中的强连通分量挖掘技术,单机执行的算法难以满足实际的应用需求,即使是分布式执行的算法也需要较长的时间,且冗余计算会花费大量的计算资源,收益较低。
有鉴于此,本申请实施例中提供一种图数据强连通分量挖掘方法,该方法获取包括多个节点的有向图,其中各个节点对应有第一标签,第一标签包括节点的第一入度属性值和第一出度属性值;然后将有向图划分为多个区块图,对各个区块图中节点的第一标签进行异步的标签传播更新,从而大大加快第一标签迭代的速度,并在有向图的全部节点的第一标签更新完成后,将更新前后对应的第一标签相同的节点作为第一子节点,可确定出该有向图中和第一子节点属于同一强连通分量的节点;该图数据强连通分量挖掘方法通过异步的标签传播更新,能够加速第一标签的更新速度,从而减少标签传播过程中所需要的迭代次数,有效提高强连通分量挖掘的效率,有利于减少计算资源的消耗。
下面结合附图,对本申请实施例的具体实施方式进行说明,首先将描述本申请实施例中的图数据强连通分量挖掘方法。
本申请实施例中提供了一种图数据强连通分量挖掘方法,该方法可以独立应用于终端或者服务器中,也可以基于终端和服务器之间的数据交互执行,还可以应用于终端或服务器中的软件,用于实现一部分的软件功能。在一些实施例中,上述的终端可以是智能手机、平板电脑、笔记本电脑或者台式计算机等;服务器可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务以及大数据和人工智能平台等服务的云服务器;软件可以是独立的应用程序或者依赖宿主程序的小程序等,但并不局限于以上形式。终端以及服务器之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
图3是本申请实施例中提供的一种图数据强连通分量挖掘方法的一个可选的流程图,图3中的方法包括步骤110至步骤130。
步骤110、获取有向图;有向图中包括多个节点,各个节点对应有第一标签,第一标签包括第一入度属性值和第一出度属性值;不同的节点对应的第一入度属性值不同,不同的节点对应的第一出度属性值不同;
本申请实施例中,对于获取的有向图的来源并不做限制。例如,该有向图既可以是根据应用场景中的相关信息生成得到的图数据,也可以是基于其他挖掘算法已经执行过部分强连通分量挖掘任务后剩余的图数据;换句话说,本申请实施例中的方法既可以单独从完整的图数据开始执行挖掘任务,也可以用于处理其他算法未完成的挖掘任务。
参照图4,图4中示出了一种获取到的有向图的结构示意图,该有向图中存在有多个节点,一些节点之间存在有表示连接路径的边。可以理解的是,图4仅为一个有向图的结构示例,并不意味对本方法实际应用中处理的图数据的结构做限制,换句话说,本申请实施例中的挖掘方法适用于包括各种数量节点的、各种节点间连接关系的图数据。
为方便描述起见,图4中对各个节点做了编号以示区分,不同节点对应的编号不同。具体地,在该有向图中,每个圆圈表示一个节点,圆圈中的数字表示该节点对应的编号,图4中有向图的各个节点对应的编号依次为0~10,各个节点可分别记为第零节点0、第一节点1、第二节点2......第十节点10。在有向图中,两个节点之间的边具有指向性,例如第一节点1和第二节点2之间的边由第二节点2指向第一节点1,表明在这两个节点之间存在由第二节点2到第一节点1的有向路径。当然,在一些节点间,可能存在双向的连接关系,例如图4中的第九节点9和第十节点10,既存在由第九节点9指向第十节点10的边,也存在由第十节点10指向第九节点9的边,此时可以称第九节点9和第十节点10为一个节点对,每个节点对中的节点可以记为第二子节点和第三子节点,例如图4中的第九节点9就可以记为节点对的第二子节点,相对地,第十节点10可以记为节点对的第三子节点。
对于有向图中的各个节点和边来说,其所代表的具体含义可以根据图数据的应用领域灵活设定:例如,在一些实施例中,有向图可以表示一组用户群,则其中的各个节点可以表示一个用户,节点之间的边可以表示两个用户之间的关注关系,比如说第一节点1可以表示用户A,第二节点2可以表示用户B,第二节点2到第一节点1的有向路径表示用户B关注了用户A。在一些实施例中,有向图可以表示一组通信网络,则其中的各个节点可以表示一个通信设备,节点之间的边可以表示两个通信设备之间的信息传输关系,比如说第一节点1可以表示通信设备C,第二节点2可以表示通信设备D,第二节点2到第一节点1的有向路径表示通信设备D可以向通信设备C发送信息。
本申请实施例中,各个节点还对应有标签,这些标签用于后续的标签传播以确定各个节点和其他节点的连通性,将这些标签记为第一标签,每个第一标签包括两个值,分别记为第一入度属性值和第一出度属性值,第一标签可以表示为“(第一入度属性值,第一出度属性值)”。在初始状态时,不同节点对应的第一标签中的值均不相同,即不同的节点对应的第一入度属性值不同,不同的节点对应的第一出度属性值也不同。为描述方便起见,本申请实施例在初始化时,可以以各个节点对应的编号作为该节点对应的第一入度属性值和第一出度属性值。例如,对于第一节点1,其对应的编号为1,则可以将数值1作为第一节点1的第一入度属性值和第一出度属性值,故第一节点对应的标签可以表示为(1,1)。类似地,其他各个节点初始的第一标签均可以按照上述的方式设定,这样可以较为简易地达到各个节点对应的第一入度属性值、第一出度属性值不同的条件。当然,此处需要说明的是,上述初始化各个节点的第一标签为一种可能实现的方式,实际在设定第一标签时,能够满足不同节点对应的第一入度属性值不同、不同节点对应的第一出度属性值不同即可。并且,在一些实施例中,本方法处理的挖掘任务可能是其他算法部分处理后剩余的图数据,若这些图数据中同样带有第一标签,且第一标签的在其他算法中的初始化条件和本方法相同,则本方法在处理这些图数据时可以不必重新对各个节点进行第一标签的初始化,以节省计算资源,提高挖掘效率。
步骤120、将有向图划分为多个区块图;
本申请实施例中,在获取到需要处理的有向图后,可以将该有向图划分为多个区块图。具体地,此处的区块图可以是有向图中的节点和边的任意组合。对于该有向图的划分方式有多种:在一些实施例中,可以将有向图按照图结构随机分为几个部分,例如,参照图5,有向图510被随机分为两个部分,分别为区块图521和区块图522,其中,区块图521中包括第零节点0、第一节点1等8个节点,以及这些节点之间的边;区块图522中包括第八节点8、第九节点9和第十节点10共3个节点,以及这些节点之间的边。图5中的示例恰好将有向图中没有连通关系的两组节点分开,而实际上在划分区块图时,也可能出现其他的情况:参照图6,在图6中,有向图510被随机分为两个部分,分别为区块图531和区块图532,其中,区块图531中包括第零节点0到第五节点5共6个节点,以及这些节点之间的边;区块图532中包括第6节点6到第十节点10共5个节点,以及这些节点之间的边。需要注意的是,在图6中,有向图510被划分为区块图531和区块图532的过程中,一些节点之间的边被割裂开,例如第五节点5指向第七节点7的边,为了方便后续标签传播过程中属性值的更新,本申请实施例中在划分区块图的同时,可以对每个节点的连接关系和相邻节点的属性值进行记录并存储,作为各个节点处对应的连接节点信息。例如,对于第五节点5来说,和它存在直接连接关系的节点包括第三节点3、第四节点4和第七节点7,其中沿出度的方向连接的节点包括第三节点3、第四节点4和第七节点7,沿入度的方向连接的节点包括第三节点3,此时,可以按照入度和出度分别记录第五节点5的连接节点和这些节点对应的入度属性值或者出度属性值。具体地,第五节点5出度方向的连接节点可以记录为{第三节点3,第四节点4,第七节点7},对应的出度属性值可以记录为{3,4,7};第五节点5入度方向的连接节点可以记录为{第三节点3},对应的入度属性值(即第三节点3的入度属性值)为{3}。
基于上述的理解,在一些实施例中,还可以将有向图按照节点随机分为几个部分,由于各个节点可以保存它对应的连接节点信息,因此可以不必拘泥于节点之间的实际连接关系对有向图进行划分。例如,在一种可能实施的划分方式中,有向图可以被划分为第一区块图(包括第一节点1、第四节点4和第八节点8)、第二区块图(包括第二节点2、第三节点3和第七节点7)以及第三区块图(包括第五节点5、第六节点6、第九节点9和第十节点10)。虽然各个节点间可能并不存在实际的连接关系,但基于区块图中各个节点对应的连接节点信息,还是可以正常进行标签传播更新。
步骤130、对各个区块图中节点的第一入度属性值和第一出度属性值进行异步的标签传播更新,并在有向图的全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;第一子节点为更新前后对应的第一标签相同的节点。
本申请实施例中,对于各个区块图中的节点,可以执行异步的标签传播更新。标签传播更新指的是根据一个节点沿出度的方向所能到达的其他节点的第一标签或者沿入度的方向所能到达该节点的其他节点的第一标签,更新该节点的第一标签。例如,以图5中的区块图521为例,对于区块图521中的第一节点1,其初始的第一标签为(1,1),入度方向可以到达第一节点1的其他节点,也即能够沿有向边到达第一节点1的节点包括第零节点0(通过第二节点2到达)和第二节点2,因此可以根据第零节点0和第二节点2的第一入度属性值更新第一节点1的入度属性值。一般来说,在更新第一节点1的第一入度属性值时,为了方便区分和计算,可以从第零节点0和第二节点2的第一入度属性值中选取最大或者最小的第一入度属性值作为更新后的第一节点1的第一入度属性值。由于最大(或者最小)属性值具有收敛性,故而如果一个节点可以被图数据全部节点中具有最大(或者最小)入度属性值的节点到达时,那么该节点的第一入度属性值一定会被更新为最大(或者最小)入度属性值。本申请实施例中,为方便描述起见,以向最小的属性值进行更新为例进行说明,此时对于第一节点1来说,能够达到它的节点中,第一入度属性值最小的节点为第零节点0,最小的第一入度属性值为0,因此,第一节点1的第一入度属性值可以通过标签传播算法被更新为0。
上述过程说明了标签传播更新的原理,而实际更新过程中,第一节点1的第一入度属性值并不是直接被更新为0的,而是需要经过几轮的迭代后被更新为0。参照图7,图7示出了区块图521中各个节点的第一入度属性值的具体更新过程,在图7中,以第一轮更新为例,对标签传播算法的具体实施过程进行说明。在对各个节点的第一入度属性值进行更新时,首先确定各个节点的入度连接节点:例如对于第一节点1来说,它的入度连接节点为第二节点2,对于第四节点4来说,它的入度连接节点包括第二节点2、第五节点5和第六节点6。然后确定各个节点对应的入度连接节点的第一入度属性值,将该属性值记为节点对应的第三入度属性值:例如第一节点1对应的第三入度属性值为2;第四节点4对应的第四入度属性值为2、5和6,接着将各个节点自身原有的第一入度属性值和第三入度属性值中的最小值,作为该节点更新后的第一入度属性值,例如第一节点1对应的原第一入度属性值最小,则本轮更新后第一节点1的第一入度属性值仍为1;而第四节点4对应的第三入度属性值中的数值2最小,则本轮更新后第四节点4的第一入度属性值为2。可以理解的是,本申请实施例中,也可以以节点对应的第一入度属性值和第一出度属性值中的最大值为更新目标,其实施的原理和最小值类似,在此不再展开赘述。
图7中,对于区块图521来说,当全部节点的第一标签被更新一次后(更新也可以保持原值),认为完成一轮的标签传播更新。重复迭代以上的更新过程,当区块图521中的全部节点的第一入度属性值不再发生变化时,可以认为该区块图521入度方向的标签传播更新完成。从图7中可以看出,经过四轮的迭代更新后,图中全部节点的第一入度属性值均被更新为0,代表这部分区块图完成了入度方向的标签传播更新。
当然,本申请实施例中,对第一标签的标签传播更新,还包括对第一出度属性值的更新,对于第一出度属性值的更新过程和第一入度属性值的更新过程类似,同样是收集各个节点的出度连接节点的第一出度属性值,记为第三出度属性值,然后将各个节点自身原有的第一出度属性值和对应的第三出度属性值中的最小值或者最大值,作为该节点更新后的第一出度属性值,在此不再展开赘述。
本申请实施例中,当有向图中全部节点的第一标签均不再变化时,认为有向图中全部节点更新完成。参照图8,以区块图521作为一个单独的有向图,不考虑它和其他区块图之间的连接关系对其进行标签传播更新,图8为完成标签传播更新后的示意图,可以看到,此时区块图521的第一节点1对应的第一标签从(1,1)被更新为(0,0)。对于更新第一标签后的有向图,可以从中确定出能够达到较多节点以及被较多节点达到的起始节点,即更新前后对应的第一标签相同的节点,将其记为第一子节点。由于第一子节点并没有被其他的节点的第一标签所影响,因此可以确定其可能更新了批量节点的第一标签(如图8中的第零节点0),故可以从第一子节点开始,沿着入度或者出度的方向进行深度优先搜索,确定搜索到的全部和第一子节点携带有相同的第一标签的节点(包括第一子节点本身),除了第一子节点外的这部分节点的第一标签和第一子节点均相同,说明它们都可以沿有向路径到达第一子节点,也都可以被第一子节点沿有向路径到达,故而可以判断出这些节点两两之间可以互相到达,这些节点和第一子节点可以构成有向图的一个强连通子图。图8中,第零节点0为第一子节点,携带有和第零节点0的第一标签(0,0)相同的节点包括第一节点1和第二节点2,第零节点0、第一节点1和第二节点2属于同一个强连通子图。另一方面,除了上述这些节点之外,其他的节点由于和第一子节点的第一标签不同,说明它们必然不能沿有向路径到达第一子节点或者被第一子节点沿有向路径到达,故而也就说明其他的节点和第一子节点之间不是强连通的关系,也即其他的节点和第一子节点均不属于一个强连通分量,所以前述构成的强连通子图是有向图的一个极大强连通子图,也即属于同一强连通分量。例如图8中,除了第一节点1和第二节点2外,其他的全部节点均不能沿有向路径到达第零节点0,可以判断其他的节点均无法到达第零节点0、第一节点1和第二节点2中的任何一个节点,所以第零节点0、第一节点1和第二节点2组成的图数据即为一个强连通分量。
前述说明了本申请实施例各个区块图中节点的标签传播更新的过程,而不同的区块图在更新节点的标签时,整体是异步进行的。下面对本申请中第一标签的异步传播更新原理进行说明。
参照图9和图10,图9和图10示出了本申请实施例中异步的标签传播更新时一些可选的实施环境示意图。在图9所示出的实施环境中,对有向图进行异步的标签传播更新时可以设立多个处理单元,每个处理单元可以是一个终端设备,选定一个中心处理单元存储有向图的相关数据,其他的处理单元和中心处理单元之间双向通信;然后将有向图划分为多个区块图后,将各个区块图和区块图中节点对应的连接节点信息发送给其他的处理单元,一个区块图中节点的第一标签在一个处理单元中被处理,而一个处理单元可以依次处理多个区块图。如图9中,终端设备911、终端设备912、终端设备913、终端设备914、终端设备915可以被配置为用于处理区块图中节点的标签传播更新的处理单元;终端设备921可以被配置为存储有向图的相关数据的中心处理单元。
在图10所示出的实施环境中,可以将有向图的相关数据存储在云端的服务器1020中,然后将有向图划分为多个区块图后,将各个区块图和区块图中节点对应的连接节点信息发送给独立的处理单元,如图10中的终端设备1011、终端设备1012和终端设备1013均可以作为一个处理单元;类似地,一个区块图中节点的第一标签在一个处理单元中被处理,而一个处理单元可以依次处理多个区块图。具体地,可以在Spark on Angel高性能图计算平台上实现上述过程,该平台集成有参数服务器和多个分布式的处理单元,取消该平台上原本对拉取和上传的同步,只用一个数据结构来传递信息,不论是处理单元向服务器上传信息还是拉取信息,都只通过这一个数据结构来进行。
下面结合图11说明本申请实施例中异步更新的原理及优势,图11示出了本申请实施例中异步更新第一标签时的数据传输原理。本申请实施例中,异步更新的过程可以简单概括为:对有向图中各个节点的第一标签进行存储,根据存储的第一标签对各个区块图中节点的第一标签进行异步的标签传播更新,并根据标签传播更新的结果更新存储的第一标签,循环迭代上述过程,直至有向图中全部节点的第一标签均不再变化时,认为全部节点更新完成。
以第一入度属性值的更新为例,首先将有向图中各个节点的第一入度属性值存储在服务器中,然后在每个处理单元中,异步拉取一个或者多个区块图中节点对应的第一入度属性值和第三入度属性值,并根据这些信息更新区块图中节点的第一入度属性值,并将更新后的第一入度属性值同步到服务器中。如图11中,两个处理单元异步更新第一标签,分别记为第一处理单元1110和第二处理单元1120,其中第一处理单元1110在某刻拉取了一批区块图的数据S1,并依次处理上传了更新第一标签后的两组区块图数据S2和数据S4,而第二处理单元1120在拉取需要处理的区块图数据S3时,其中可能部分节点对应的连接节点信息正好被数据S2更新。例如参照图6,假设区块图531在数据S1中被第一处理单元1110拉取,在数据S2中被更新第一标签上传到服务器中,第二处理单元1120恰好处理区块图532,当其拉取含有区块图532的数据S3时,恰好数据S3中部分节点(如第六节点6和第七节点7)的连接节点信息已被更新过,则此时第二处理单元1120便可以提前拉取到更有用的数据。并且由于第一标签更新过程中比较、收敛的方向是一致的,即在每个处理单元中,较小(或者较大)的属性值总会被保存下来,故而标签传播的信息是异步兼容的。而异步更新的优势在于:整体上有向图的第一标签更新是分批次的,每一个批次都进行一次服务器端第一标签数据的部分更新,那么并行的处理单元上在执行拉取操作的时候就有可能拉取到最近更新的属性值,相当于提前拉取了标签传播过程下一轮的值。通过这样的更新方式,可以大大减少迭代轮次。理论上异步拉取发生的次数越多,那么迭代的轮次也越有可能大幅度减少。
在前述实施例中,通过并行的异步标签传播更新算法对有向图中的第一标签进行更新,有利于减少冗余计算量,缩减整个挖掘算法迭代的轮次。不过,由于分布式挖掘的方法或多或少总会存在冗余计算的问题,本申请实施例中在挖掘到强连通分量后,可以从有向图中抽取出该强连通分量,以减小整个有向图的数据量。并且,在确定到有向图的数据量可以在单机执行时,将其及时转入到单机执行的挖掘算法中,以更高效地完成挖掘任务。具体地,在单机挖掘时,相当于将余下的有向图数据发送到一个单一的处理单元中进行挖掘,该处理单元的存储能力应当可以容纳剩余有向图的全部数据量,在一些实施例中,可以实时检测有向图中的节点个数,当节点个数小于等于预设的第一阈值时,认为可以满足单机执行的需求。在一些实施例中,还可以实时检测有向图中节点之间的连接关系个数,即有向边的个数,当连接关系个数小于等于预设的第二阈值时,认为可以满足单机执行的数据量限制。此处,第一阈值和第二阈值的实际大小,可以根据单个处理单元的数据存储量来确定和调整,本申请中对此不作限制。而在一些实施例中,当从有向图中抽取出已确定的强连通分量得到更新后的有向图后,更新后的有向图的数据量大小仍然较大时,例如,可以是节点个数大于第一阈值或者连接关系个数大于第二阈值,认为剩余的有向图无法进行单机挖掘。此时,可以对剩余的有向图中节点的第一标签进行初始化,然后返回到步骤120划分区块图的步骤,重新执行本申请实施例中的挖掘方法,继续从中抽取挖掘到的强连通分量,直至剩余有向图的图数据大小可以在单机上执行。
下面,参照图12中的有向图来对本申请实施例中单机执行强连通分量挖掘的过程进行说明:在单个的处理单元中,其获取到可以单机挖掘的有向图后,首先对有向图进行深度优先搜索,并确定各个节点被搜索到时的时间戳,记为第一时间戳,以及各个节点可以追溯到的最小时间戳,记为第二时间戳。例如图12中的有向图包括有六个节点,分别为第一节点1到第六节点6,各个节点依次被搜索到的顺序为第一节点1、第二节点2、第三节点3、第六节点6、第四节点4和第五节点5,可以通过DFN[]表示各个节点被搜索到的第一时间戳,例如DFN[1]=1,表示第一节点第一个被搜索到,类似地,DFN[6]=4,表示第6节点第四个被搜索到。节点可以追溯到的时间戳,即为各个节点出度方向能到达的最早被搜索到的节点。节点的第二时间戳可以用LOW[]表示,例如LOW[5]=1,表示第五节点5可以到达第一个被搜索到的第一节点1,第五节点5对应的第二时间戳为1。
然后按照被搜索到的顺序,将各个节点依次放入到一个堆栈中,并从栈顶向栈中开始搜索第一时间戳和第二时间戳相同的节点,将该节点记为第四子节点,例如图12中,栈顶第五节点5的两个时间戳分别为6和1,不同,继续往栈中搜索;第四节点的两个时间戳分别为5和1,也不同,继续往栈中搜索;第六节点6的两个时间戳相同,均为4,并确定其他节点的时间戳没有和4相同的,则可以将第六节点6作为一个强连通分量出栈,继续搜索可以依次找到第三节点3为一个单独的强连通分量,第一节点1、第二节点2、第四节点4和第五节点5拥有相同的第二时间戳,可以认为属于同一强连通分量。即图12所示出的有向图,可以挖掘出三个强连通分量,分别记为{第六节点6}、{第三节点3}和{第一节点1、第二节点2、第四节点4和第五节点5}。本申请实施例中,当单机挖掘完成时,可以将前述抽取的强连通分量和单机挖掘得到的强连通分量进行整理,从而得到输入的有向图的强连通分量挖掘结果。
在一些实施例中,在进行强连通分量挖掘前,还可以对有向图进行双向边压缩和双边解耦的处理,以减小整个有向图的数据量。具体地,在进行双向边压缩时,参照图13,以图5中的有向图510为例,首先可以确定有向图510中的节点对,节点对即前述包括双向连接关系的第二子节点和第三子节点。例如有向图510中的第三节点3和第五节点5属于一个节点对,第六节点6和第四节点4也属于一个节点对,第九节点9和第十节点10也属于一个节点对。在确定到节点对后,因为节点对中的节点可以相互到达,故这两个节点是强连通的,可以压缩合并为一个节点。本申请实施例中,在对节点对进行压缩时,可以单独保留其中任意一个节点作为压缩后的节点对。例如,可以将第六节点6和第四节点4的节点对压缩为第四节点4,当然,也可以压缩为第六节点6,其他的各个节点对压缩方式类似。并且,需要说明的是,在一些实施例中,当执行完一轮双向边压缩后,新的有向图中可能有新的双向边生成。这是因为经过压缩后的节点对可能又和其他节点形成了新的节点对,例如有向图510中包括第九节点9和第十节点10的节点对被压缩为一个节点后(以压缩为第九节点9为例),将和第八节点8存在双向连接关系,故此时可以继续执行压缩,从而可以将第八节点8、第九节点9和第十节点10压缩为一个节点。可以理解的是,通过以上的双向边压缩处理,可以将原有的有向图中多个节点压缩为一个节点,对于复杂的有向图,执行多次双向边压缩操作后,图的规模将会有比较可观的缩小,可以减少数据处理量。
在进行双边解耦时,可以先对有向图中的各个节点进行标签传播更新,得到更新后的标签记为第二标签,第二标签中的属性值记为第二入度属性值和第二出度属性值。此处的标签传播更新算法,可以采用常规的算法执行,也可以采用前述的异步标签传播更新的方式执行。以前述的图8为例,图8中更新后的标签即为第二标签。参照图14,本申请实施例中,根据第二标签确定有向图中的解耦边,解耦边即有向边两端的节点对应第二标签不同的边,例如图14中,第五节点5的第二标签为(0,3),第四节点4的第二标签为(0,4),第五节点5和第四节点4之间的边即为解耦边。由于解耦边两端的节点在标签传播更新后得到的第二标签不完全一致,说明这两个节点在不同的强连通分量中,故而可以删去这两个节点之间的边,从而降低两个强连通分量之间的耦合程度,便于后续强连通分量的挖掘工作。
需要说明的是,本申请实施例中,在执行上述的双向边压缩和双边解耦处理操作时,也可以实时检测有向图的数据大小,当满足单机执行的要求时,及时地转入处理单元进行处理,以提高挖掘的效率。
下面结合具体的实施例对本申请的方法一种实现流程进行说明。
参照图15,本申请实施例中,在获取到需要处理的图数据后,首先初始化该图数据中各个节点的第一标签,然后按照图13所示出的方式对有向图进行双向边压缩处理,压缩合并掉其中的部分节点,对于压缩处理后的图数据,判断其数据量是否可以在单机的情况下执行挖掘,如果剩余图数据的数据量较小,可以在单机中执行挖掘,则将图数据发送到单机执行挖掘。如果剩余图数据的数据量较大,无法满足在单机中执行挖掘,那么可以按照图14所示出的方式对剩余图数据进行双向解耦处理,删减掉其中的部分有向边。对于解耦处理后的图数据,继续判断其数据量是否可以在单机的情况下执行挖掘,如果可以则将图数据发送到单机执行挖掘。如果仍无法满足,那么可以按照本申请中图3所示出的流程图的原理,执行本申请实施例中提供的图数据强连通分量挖掘方法,对有向图进行分布式的异步挖掘。
并且,在异步挖掘过程中,每执行完一轮的强连通分量挖掘,均继续判断数据量是否可以在单机的情况下执行挖掘,在不满足单机执行要求的情况下,初始化剩余图数据的第一标签后再次执行分布式的异步挖掘,循环上述异步挖掘的工作,直至剩余的图数据可以在单机上执行时,将剩余的图数据发送给单个处理单元进行挖掘。最终,当图数据在单机中执行挖掘算法结束后,合并整理单机挖掘和分布式的异步挖掘两个过程中得到的强连通分量,即可得到该图数据全部的强连通分量挖掘结果。
需要说明的是,图15所示出的实现流程为一种可选的实施方式,在实际执行中可以根据需要对具体的流程进行调整,例如在一些实施例中,可以更换双向边压缩处理和双向解耦处理的顺序,当然也可以去掉其中部分的处理流程,本申请实施例中对此不作限制。
参照图16,本申请实施例还公开了一种图数据强连通分量挖掘装置,包括:
获取模块1610,用于获取有向图;有向图中包括多个节点,各个节点对应有第一标签,第一标签包括第一入度属性值和第一出度属性值;不同的节点对应的第一入度属性值不同,不同的节点对应的第一出度属性值不同;
划分模块1620,用于将有向图划分为多个区块图;
存储与更新模块1630,用于对有向图中各个节点的第一标签进行存储,根据存储的第一标签对各个区块图中节点的第一标签进行异步的标签传播更新,并根据标签传播更新的结果更新存储的第一标签;
处理模块1640,用于当有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;第一子节点为更新前后对应的第一标签相同的节点。
可选地,在一些实施例中,装置还包括:
双向边压缩模块,用于确定有向图中的节点对,并将节点对合并为一个节点;节点对包括第二子节点和第三子节点,第二子节点和第三子节点存在双向连接关系。
可选地,在一些实施例中,装置还包括:
传播模块,用于对有向图中节点的第一入度属性值和第一出度属性值进行标签传播更新,得到各个节点的第二标签;第二标签包括第二入度属性值和第二出度属性值;
解耦模块,用于根据第二标签确定并删除有向图中的解耦边;解耦边两端连接的节点对应的第二标签不同。
可选地,在一些实施例中,存储与更新模块包括:
第一存储模块,用于将有向图中各个节点的第一入度属性值存储至服务器;
第一拉取模块,用于通过多个处理单元异步拉取各个区块图中节点的第一入度属性值以及每个节点对应的第三入度属性值;其中,每个处理单元处理至少一个区块图;第三入度属性值为节点的入度连接节点的第一入度属性值;
第一更新模块,用于在处理单元中,通过节点对应的第三入度属性值更新节点的第一入度属性值,并将更新后的第一入度属性值同步到服务器。
可选地,在一些实施例中,第一更新模块包括:
第一确定子模块,用于确定节点对应的第一入度属性值和第三入度属性值中的最小值或者最大值;
第一处理子模块,用于将最小值或者最大值作为节点更新后的第一入度属性值。
可选地,在一些实施例中,存储与更新模块包括:
第二存储模块,用于将有向图中各个节点的第一出度属性值存储至服务器;
第二拉取模块,用于通过多个处理单元异步拉取各个区块图中节点的第一出度属性值以及每个节点对应的第三出度属性值;其中,每个处理单元处理至少一个区块图;第三出度属性值为节点的出度连接节点的第一出度属性值;
第二更新模块,用于在处理单元中,通过节点对应的第三出度属性值更新节点的第一出度属性值,并将更新后的第一出度属性值同步到服务器。
可选地,在一些实施例中,第二更新模块包括:
第二确定子模块,用于确定节点对应的第一出度属性值和第三出度属性值中的最小值或者最大值;
第二处理子模块,将最小值或者最大值作为节点更新后的第一出度属性值。
可选地,在一些实施例中,装置还包括:
抽取模块,用于从有向图中抽取出已确定的强连通分量,得到更新后的有向图。
可选地,在一些实施例中,装置还包括:
第一检测子模块,用于检测有向图中的节点个数;
第三处理子模块,用于当节点个数小于等于第一阈值,将有向图发送到单个的处理单元进行强连通分量挖掘;或者,
第二检测子模块,用于检测有向图中节点之间的连接关系个数;
第四处理子模块,用于当连接关系个数小于等于第二阈值,将有向图发送到单个的处理单元进行强连通分量挖掘。
可选地,在一些实施例中,装置还包括:
初始化模块,用于当节点个数大于第一阈值或者当连接关系个数大于第二阈值,对更新后的有向图中各个节点对应的第一标签进行初始化,并返回划分模块执行将有向图划分为多个区块图的步骤。
可选地,在一些实施例中,第三处理子模块或者第四处理子模块包括:
发送子模块,用于将有向图发送到单个的处理单元;
第一搜索子模块,用于在处理单元中,对有向图进行深度优先搜索,按照被搜索到的顺序依次将各个节点加入到堆栈中;
第二搜索子模块,用于从堆栈的栈顶向栈中依次搜索第四子节点;第四子节点对应的第一时间戳和第二时间戳相同;其中,第一时间戳为各个节点被搜索到时的时间戳,第二时间戳为各个节点可追溯到最早的时间戳;
挖掘子模块,用于确定与第四子节点的第一时间戳或者第二时间戳相同的节点属于同一强连通分量。
可选地,在一些实施例中,处理模块包括:
第五处理子模块,用于在有向图中的全部节点更新完成后,从有向图中确定第一子节点;
第三搜索子模块,用于从第一子节点开始,沿入度或者出度的方向进行深度优先搜索,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量。
可以理解的是,图3所示的图数据强连通分量挖掘方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与图3所示的图数据强连通分量挖掘方法实施例相同,并且达到的有益效果与图3所示的图数据强连通分量挖掘方法实施例所达到的有益效果也相同。
参照图17,本申请实施例还公开了一种计算机设备,包括:
至少一个处理器1710;
至少一个存储器1720,用于存储至少一个程序;
当至少一个程序被至少一个处理器1710执行,使得至少一个处理器1710实现如图3所示的图数据强连通分量挖掘方法实施例。
可以理解的是,图3所示的图数据强连通分量挖掘方法实施例中的内容均适用于本计算机设备实施例中,本计算机设备实施例所具体实现的功能与图3所示的图数据强连通分量挖掘方法实施例相同,并且达到的有益效果与图3所示的图数据强连通分量挖掘方法实施例所达到的有益效果也相同。
本申请实施例还公开了一种计算机可读存储介质,其中存储有处理器可执行的程序,处理器可执行的程序在由处理器执行时用于实现如图3所示的图数据强连通分量挖掘方法实施例。
可以理解的是,图3所示的图数据强连通分量挖掘方法实施例的内容均适用于本计算机可读存储介质实施例中,本计算机可读存储介质实施例所具体实现的功能与图3所示的图数据强连通分量挖掘方法实施例相同,并且达到的有益效果与图3所示的图数据强连通分量挖掘方法实施例所达到的有益效果也相同。
本申请实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在上述的计算机可读存介质中;图17所示的计算机设备的处理器可以从上述的计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图3所示的图数据强连通分量挖掘方法。
可以理解的是,图3所示的图数据强连通分量挖掘方法实施例的内容均适用于本计算机程序产品或计算机程序实施例中,本计算机程序产品或计算机程序实施例所具体实现的功能与图3所示的图数据强连通分量挖掘方法实施例相同,并且达到的有益效果与图3所示的图数据强连通分量挖掘方法实施例所达到的有益效果也相同。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于实施例,熟悉本领域的技术人员在不违背本发明精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (15)
1.一种图数据强连通分量挖掘方法,其特征在于,包括以下步骤:
获取有向图;所述有向图中包括多个节点,各个所述节点对应有第一标签,所述第一标签包括第一入度属性值和第一出度属性值;不同的所述节点对应的所述第一入度属性值不同,不同的所述节点对应的所述第一出度属性值不同;
将所述有向图划分为多个区块图;
对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签;
当所述有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;所述第一子节点为更新前后对应的第一标签相同的节点。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
确定所述有向图中的节点对,并将所述节点对合并为一个节点;所述节点对包括第二子节点和第三子节点,所述第二子节点和所述第三子节点存在双向连接关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
对所述有向图中节点的所述第一入度属性值和所述第一出度属性值进行标签传播更新,得到各个所述节点的第二标签;所述第二标签包括第二入度属性值和第二出度属性值;
根据所述第二标签确定并删除所述有向图中的解耦边;所述解耦边两端连接的节点对应的所述第二标签不同。
4.根据权利要求1所述的方法,其特征在于,所述对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签,包括:
将所述有向图中各个所述节点的所述第一入度属性值存储至服务器;
通过多个处理单元异步拉取各个所述区块图中节点的所述第一入度属性值以及每个所述节点对应的第三入度属性值;其中,每个所述处理单元处理至少一个所述区块图;所述第三入度属性值为所述节点的入度连接节点的第一入度属性值;
在所述处理单元中,通过所述节点对应的所述第三入度属性值更新所述节点的所述第一入度属性值,并将更新后的所述第一入度属性值同步到所述服务器。
5.根据权利要求4所述的方法,其特征在于,所述通过所述节点对应的所述第三入度属性值更新所述节点的所述第一入度属性值,包括:
确定所述节点对应的所述第一入度属性值和所述第三入度属性值中的最小值或者最大值;将所述最小值或者所述最大值作为所述节点更新后的第一入度属性值。
6.根据权利要求1所述的方法,其特征在于,所述对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签,包括:
将所述有向图中各个所述节点的所述第一出度属性值存储至服务器;
通过多个处理单元异步拉取各个所述区块图中节点的所述第一出度属性值以及每个所述节点对应的第三出度属性值;其中,每个所述处理单元处理至少一个所述区块图;所述第三出度属性值为所述节点的出度连接节点的第一出度属性值;
在所述处理单元中,通过所述节点对应的所述第三出度属性值更新所述节点的所述第一出度属性值,并将更新后的所述第一出度属性值同步到所述服务器。
7.根据权利要求6所述的方法,其特征在于,所述通过所述节点对应的所述第三出度属性值更新所述节点的所述第一出度属性值,包括:
确定所述节点对应的所述第一出度属性值和所述第三出度属性值中的最小值或者最大值;
将所述最小值或者所述最大值作为所述节点更新后的第一出度属性值。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括以下步骤:
从所述有向图中抽取出已确定的强连通分量,得到更新后的有向图。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括以下步骤:
检测所述有向图中的节点个数;
当所述节点个数小于等于第一阈值,将所述有向图发送到单个的处理单元进行强连通分量挖掘;或者,
检测所述有向图中节点之间的连接关系个数;
当所述连接关系个数小于等于第二阈值,将所述有向图发送到单个的处理单元进行强连通分量挖掘。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括以下步骤:
当所述节点个数大于第一阈值或者当所述连接关系个数大于第二阈值,对更新后的有向图中各个所述节点对应的第一标签进行初始化,并返回所述将所述有向图划分为多个区块图的步骤。
11.根据权利要求9所述的方法,其特征在于,所述将所述有向图发送到单个的处理单元进行强连通分量挖掘,包括:
将所述有向图发送到单个的所述处理单元;
在所述处理单元中,对所述有向图进行深度优先搜索,按照被搜索到的顺序依次将各个所述节点加入到堆栈中;
从所述堆栈的栈顶向栈中依次搜索第四子节点;所述第四子节点对应的第一时间戳和第二时间戳相同;其中,所述第一时间戳为各个所述节点被搜索到时的时间戳,所述第二时间戳为各个所述节点可追溯到最早的时间戳;
确定与所述第四子节点的第一时间戳或者第二时间戳相同的节点属于同一强连通分量。
12.根据权利要求1所述的方法,其特征在于,所述当所述有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量,包括:
在所述有向图中的全部节点更新完成后,从所述有向图中确定所述第一子节点;
从所述第一子节点开始,沿入度或者出度的方向进行深度优先搜索,确定与所述第一子节点携带有相同第一标签的节点属于同一强连通分量。
13.一种图数据强连通分量挖掘装置,其特征在于,包括:
获取模块,用于获取有向图;所述有向图中包括多个节点,各个所述节点对应有第一标签,所述第一标签包括第一入度属性值和第一出度属性值;不同的所述节点对应的所述第一入度属性值不同,不同的所述节点对应的所述第一出度属性值不同;
划分模块,用于将所述有向图划分为多个区块图;
存储与更新模块,用于对所述有向图中各个节点的所述第一标签进行存储,根据存储的所述第一标签对各个所述区块图中节点的所述第一标签进行异步的标签传播更新,并根据所述标签传播更新的结果更新存储的所述第一标签;
处理模块,用于当所述有向图中全部节点更新完成后,确定与第一子节点携带有相同第一标签的节点属于同一强连通分量;所述第一子节点为更新前后对应的第一标签相同的节点。
14.一种计算机设备,其特征在于,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-12中任一项所述的方法。
15.一种计算机可读存储介质,其中存储有处理器可执行的程序,其特征在于:所述处理器可执行的程序在由处理器执行时用于实现如权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584276.9A CN113761293A (zh) | 2021-05-27 | 2021-05-27 | 图数据强连通分量挖掘方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110584276.9A CN113761293A (zh) | 2021-05-27 | 2021-05-27 | 图数据强连通分量挖掘方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113761293A true CN113761293A (zh) | 2021-12-07 |
Family
ID=78787211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110584276.9A Pending CN113761293A (zh) | 2021-05-27 | 2021-05-27 | 图数据强连通分量挖掘方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113761293A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115062567A (zh) * | 2022-07-21 | 2022-09-16 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
-
2021
- 2021-05-27 CN CN202110584276.9A patent/CN113761293A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115062567A (zh) * | 2022-07-21 | 2022-09-16 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
CN115062567B (zh) * | 2022-07-21 | 2023-04-18 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110210227B (zh) | 风险检测方法、装置、设备和存储介质 | |
US20230033019A1 (en) | Data processing method and apparatus, computerreadable medium, and electronic device | |
US20220230369A1 (en) | Generating a data visualization graph utilizing modularity-based manifold tearing | |
CN105045790A (zh) | 图数据搜索系统、方法和设备 | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
AU2017288044B2 (en) | Method and system for flexible, high performance structured data processing | |
WO2021027331A1 (zh) | 基于图数据的全量关系计算方法、装置、设备及存储介质 | |
CN111159577A (zh) | 一种社群划分方法、装置、存储介质及电子装置 | |
CN113761293A (zh) | 图数据强连通分量挖掘方法、装置、设备及存储介质 | |
CN111028092A (zh) | 基于Louvain算法的社区发现方法、计算机设备及其可读存储介质 | |
CN112783447A (zh) | 用于处理快照的方法、装置、设备、介质和产品 | |
CN114897666B (zh) | 图数据存储、访问、处理方法、训练方法、设备及介质 | |
CN113767403A (zh) | 知识图中过指定和欠指定的自动解析 | |
CN111651638A (zh) | 一种基于团簇属性和平衡理论在符号网络中挖掘内聚子图的方法 | |
Zou et al. | Parallel in situ detection of connected components in adaptive mesh refinement data | |
CN115099175A (zh) | 一种时序网表的获取方法、装置、电子设备和存储介质 | |
CN104778259A (zh) | 一种高效的数据分析处理方法 | |
CN104850591A (zh) | 一种数据的转换存储方法及装置 | |
Abdolazimi et al. | Connected components of big graphs in fixed mapreduce rounds | |
CN112750047B (zh) | 行为关系信息提取方法及装置、存储介质、电子设备 | |
Li et al. | A real-time machine learning and visualization framework for scientific workflows | |
Hao et al. | cSketch: a novel framework for capturing cliques from big graph | |
CN112950451A (zh) | 一种基于GPU的极大k-truss发现算法 | |
CN112070487A (zh) | 基于ai的rpa流程的生成方法、装置、设备及介质 | |
CN117389908B (zh) | 接口自动化测试用例的依赖关系分析方法、系统及介质 |
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 |