图数据中最小K派系检测方法、装置及设备与流程

文档序号:13804843阅读:232来源:国知局
图数据中最小K派系检测方法、装置及设备与流程
本申请涉及数据挖掘领域,特别涉及一种图数据中最小k派系检测方法、装置及设备。
背景技术
:图数据挖掘(又称为图计算(graphcompute))作为大数据时代下一种常见的数据挖掘方式,被广泛应用于社团结构挖掘、边聚集系数计算、顶点亲密度计算和顶点相似度计算等领域。进行图数据挖掘时,待挖掘的数据以图数据的形式存储,其中,图数据中采用顶点(vertex)存储顶点值,采用边(edge)表示顶点之间的关系,且通过一条边相连的两个顶点互为邻居顶点。在图数据中,任意两个顶点都相连的顶点集合被称为派系(clique),而3派系(3-clique)则被称为最小k派系。在进行图数据挖掘时,最小k派系检测(即检测图数据中的3-clique)是最基础的检测算法。相关技术中,对图数据进行最小k派系检测时,首先需要计算图数据中每个顶点的邻居顶点集合,然后通过顶点消息传递的方式计算每个顶点与其邻居顶点的共同邻居顶点,从而确定出由三个顶点构成的三角形(即最小k派系),进而对构成的三角形进行去重,最终确定出图数据中的最小k派系。然而,采用上述方法进行最小k派系检测时,由于计算过程中中间数据膨胀率较高,在原始数据量较大的情况下计算量过大,影响计算效率,甚至导致无法完成计算。技术实现要素:本申请的实施例提供了一种图数据中最小k派系检测方法、装置及设备,可以解决进行最小k派系检测过程中,由于计算过程中中间数据膨胀率较高,在原始数据量较大的情况下计算量过大,影响计算效率,甚至导致无法完成计算的问题。第一方面,提供了一种图数据中最小k派系检测方法,该方法包括:图数据处理设备加载图数据,图数据中的各个顶点对应各自的顶点标识(identity,id);图数据处理设备计算图数据中各个顶点各自对应的邻居顶点集合,邻居顶点集合中包含顶点对应的邻居顶点,且邻居顶点的顶点id大于该顶点的顶点id;图数据处理设备根据邻居顶点集合,计算图数据中各条边上两个顶点的共同邻居顶点;图数据处理设备根据图数据中各条边上两个顶点以及共同邻居顶点,确定图数据中的最小k派系。本申请实施例提供的方法中,在计算图数据中各个顶点的邻居顶点集合时,图数据处理设备基于极大值原则,将顶点id小于自身顶点id的邻居顶点过滤,仅保留顶点id大于自身顶点id的邻居顶点,相较于相关技术中邻居顶点集合的计算方式,其中间数据量缩小至一半,从而减少后续的无用计算,降低了计算量,提高了计算效率;同时,采用上述方法能够有效过滤各个顶点形成最小k派系的重复结果,避免进行额外的去重处理。在一种可能的实现方案中,图数据为无向图数据;图数据处理设备计算图数据中各个顶点各自对应的邻居顶点集合,包括:图数据处理设备并行遍历图数据中的各个顶点;对于图数据中的每个顶点,图数据处理设备获取顶点对应的候选邻居顶点,候选邻居顶点与顶点之间通过无向边直接相连;若候选邻居顶点的顶点id小于顶点的顶点id,图数据处理设备则过滤候选邻居顶点;图数据处理设备根据过滤后的候选邻居顶点生成顶点对应的邻居顶点集合。在一种可能的实现方案中,图数据处理设备根据邻居顶点集合,计算图数据中各条边上两个顶点的共同邻居顶点,包括:图数据处理设备并行遍历图数据中的各条无向边;对于图数据中的每条无向边,图数据处理设备确定无向边上的第一顶点和第二顶点;图数据处理设备获取第一顶点对应的第一邻居顶点集合,以及第二顶点对应的第二邻居顶点集合;图数据处理设备计算第一邻居顶点集合和第二邻居顶点集合的交集,并将交集确定为第一顶点和第二顶点的共同邻居顶点。采用上述实现方案对无向图数据进行最小k派系检测时,图数据处理设备基于极大值原则,通过比较候选邻居顶点与当前顶点的顶点id,将顶点id较小的候选邻居顶点过滤,从而减少计算过程中的中间数据量;同时,图数据处理设备采用并行边遍历的方式计算无向边上两个顶点的共同邻居顶点,规避了相关技术中采用顶点消息传递的方式计算顶点间共同邻居顶点时,在顶点的顶点度较大(幂分布)的情况下,由于数据量膨胀所导致的性能瓶颈的问题,提高了计算性能,从而在相同处理资源下能够实现更大规模图数据的最小k派系检测。在一种可能的实现方案中,图数据为有向图数据,各个顶点对应的邻居顶点集合包括入度邻居顶点集合和出度邻居顶点集合;图数据处理设备计算图数据中各个顶点各自对应的邻居顶点集合,包括:图数据处理设备并行遍历图数据中的各个顶点;对于图数据中的每个顶点,图数据处理设备获取顶点对应的候选入度邻居顶点和候选出度邻居顶点,候选入度邻居顶点与顶点之间的有向边指向该顶点,顶点与候选出度邻居顶点之间的有向边指向候选出度邻居顶点;若候选入度邻居顶点的顶点id小于顶点的顶点id,图数据处理设备则过滤候选入度邻居顶点;若候选出度邻居顶点的顶点id小于顶点的顶点id,图数据处理设备则过滤候选出度邻居顶点;图数据处理设备根据过滤后的候选入度邻居顶点生成顶点对应的入度邻居顶点集合,并根据过滤后的候选出度邻居顶点生成顶点对应的出度邻居顶点集合。在一种可能的实现方案中,图数据处理设备根据邻居顶点集合,计算图数据中各条边上两个顶点的共同邻居顶点,包括:图数据处理设备并行遍历图数据中的各条有向边;对于图数据中的每条有向边,图数据处理设备获取有向边上的源顶点和目标顶点,有向边由源顶点指向目标顶点;图数据处理设备获取源顶点的入度邻居顶点集合,以及目标顶点的出度邻居顶点集合;图数据处理设备计算源顶点的入度邻居顶点集合与目标顶点的出度邻居顶点集合的交集,并将交集确定为源顶点和目标顶点的共同邻居顶点。采用上述实现方案对有向图数据进行最小k派系检测时,图数据处理设备基于极大值原则,通过比较当前顶点与其候选入度邻居顶点的顶点id,并比较当前顶点与其候选出度邻居顶点的顶点id,计算得到各个顶点对应的(极大值)入度邻居顶点以及(极大值)出度邻居顶点,从而减少计算过程中的中间数据量;同时,图数据处理设备采用并行边遍历的方式,根据有向边上源顶点的入度邻居顶点集合以及目标顶点的出度邻居顶点集合计算源顶点和目标顶点的共同邻居顶点,规避了相关技术中采用顶点消息传递的方式计算顶点间共同邻居顶点时,在顶点的顶点度较大(幂分布)的情况下,由于数据量膨胀所导致的性能瓶颈的问题,提高了计算性能,从而在相同处理资源下能够实现更大规模图数据的最小k派系检测。第二方面,提供了一种图数据中最小k派系检测装置,该装置具有实现上述第一方面及第一方面的可能的实现方案所提供的图数据中最小k派系检测方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多于一个与上述功能相对应的单元。第三方面,提供了一种图数据处理设备,该设备包括:处理器、与处理器相连的存储器,该设备中的处理器,通过执行存储器中存储的程序或指令以实现上述第一方面及第一方面的可能的实现方案所提供的图数据中最小k派系检测方法。第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有可执行程序,该可执行程序由处理器执行以实现上述第一方面及第一方面的可能的实现方案所提供的图数据中最小k派系检测方法。附图说明图1示出了一示意性的无向图;图2示出了一示意性的有向图;图3示出本申请一个示例性实施例提供的图数据中最小k派系检测方法的方法流程图;图4是图3所示图数据中最小k派系检测方法所涉及的应用场景的示意图;图5示出本申请一个示例性实施例提供的无向图数据中最小k派系检测方法的方法流程图;图6示出本申请一个示例性实施例提供的有向图数据中最小k派系检测方法的方法流程图;图7是本申请一个示例性实施例提供的图数据处理设备的结构示意图;图8是本申请一个示例性实施例提供的一种图数据中最小k派系检测装置的结构方框图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。为了方便理解,下面对本申请实施例中涉及的名词进行解释。无向图:由顶点以及顶点之间无向边所构成的图。无向图常用于表示社交网络中不同用户之间的好友关系以及关注关系等等。图1为一示意性的无向图,该无向图中包含6个顶点以及9条无向边。无向图中的最小k派系指由三个顶点以及顶点之间无向边构成的三角形闭环。比如,如图1中,顶点1、3、4以及顶点之间的无向边即构成一个最小k派系。有向图:由顶点以及顶点之间有向边所构成的图,其中,有向边上的两个顶点分别为源顶点和目标顶点,且源顶点指向目标顶点的边即为两个顶点之间的有向边。有向图常用于表示关系网络中用户的上下级关系。图2为一示意性的有向图,该有向图中包含6个顶点以及9条有向边,其中,对于顶点3和顶点4之间的有向边,该有向边上的源顶点为顶点3,该有向边上的目标顶点为顶点4。有向图中的最小k派系指由三个顶点以及顶点之间的有向边构成的有向三角形闭环。比如,图2中,顶点1、3、4以及顶点之间的有向边即构成一个最小k派系。入度邻居顶点:当前顶点与入度邻居顶点之间存在有向边,且该有向边由入度邻居顶点指向当前顶点。示意性的,如图2所示,顶点1对应的邻居顶点为顶点3、4、5、6,其中,顶点4为顶点1对应的入度邻居顶点。对应的,当前顶点与出度邻居顶点之间存在有向边,且该有向边由当前顶点指向出度邻居顶点。示意性的,如图2所示,顶点1对应的邻居顶点为顶点3、4、5、6,其中,顶点3、5、6均为顶点1对应的出度邻居顶点。相关技术中,graphx作为一种分布式图处理框架,提供了图信息统计功能,通过该功能,图数据处理设备能够调用无向3-clique统计接口(trianglecount)统计图数据中无向3-clique(即最小k派系)的数量。由于graphx仅提供了统计算法,而并未提供最小k派系的检测算法,因此,图数据处理设备根据数量统计结果无法进一步提供社团结构挖掘、边聚集系数计算、顶点亲密度计算和顶点相似度计算等功能。类似的,powergraph提供了无向3-clique统计和有向3-clique统计接口,通过调用该接口,图数据处理设备仅能够实现最小k派系的数量统计,而无法实现最小k派系检测。相关技术中,基于顶点间消息传递的方式对无向图数据进行最小k派系检测时,首先需要计算各个顶点对应的邻居顶点集合。示意性的,对于图1所示的无向图,图数据处理设备计算得到各个顶点对应的邻居顶点集合如表一所示。表一计算得到各个顶点对应的邻居顶点集合后,图数据处理设备即通过消息传递的方式,计算当前顶点与其邻居顶点之间共同邻居顶点,从而确定出由当前顶点、邻居顶点和共同邻居顶点构成的最小k派系。示意性的,对于图1所示的无向图,图数据处理设备采用消息传递的方式计算共同邻居顶点以及确定最小k派系的过程如表二所示。表二消息传递共同邻居顶点最小k派系v1→v2{5}{(1,5,2)}v1→v3{4}{(1,4,3)}v1→v4{3,5}{(1,3,4),(1,5,4)}v1→v5{2,4}{(1,2,5),(1,4,5)}v2→v1{5}{(2,5,1)}v2→v5{1}{(2,1,5)}v3→v1{4}{(3,4,1)}v3→v4{1}{(3,1,4)}v4→v1{3,5}{(4,3,1),(4,5,1)}v4→v3{1}{(4,1,3)}v4→v5{1,6}{(4,1,5),(4,6,5)}v4→v6{5}{(4,5,6)}v5→v1{2,4}{(5,2,1),(5,4,1)}v5→v2{1}{(5,1,2)}v5→v4{1,6}{(5,1,4),(5,6,4)}v5→v6{4}{(5,4,6)}v6→v4{5}{(6,5,4)}v6→v5{4}{(6,4,5)}显然,通过消息传递的方式确定出的最小k派系中存在大量的重复结果,比如,最小k派系(1,5,2),(1,2,5),(2,5,1),(2,1,5),(5,2,1),(5,1,2)指示同一最小k派系,因此,图数据处理设备还需要对确定出的最小k派系进行去重处理,最终得到最小k派系为{(1,2,5),(1,3,4),(1,4,5),(4,5,6)}。可见,采用消息传递方式进行最小k派系检测时,中间数据的膨胀率较高,且包含大量重复无用的中间数据,导致需要使用较强处理性能的设备才能完成计算;同时,在消息传递方式下,当图数据中的某一顶点的顶点度较大,即顶点的邻居顶点数量较多时,该顶点需要同时接收大量邻居顶点发送的消息,并向大量邻居顶点发送消息,从而造成图数据挖掘的性能瓶颈,无法适用于大数据场景下大数据量的图数据挖掘。而本申请实施例中,图数据处理设备在计算邻居顶点集合时,基于极大值原则对顶点id小于自身顶点id的邻居顶点过滤,缩小了邻居顶点集合的数据量,进而减少中间数据的数据量;同时,采用并行边遍历取代消息传递的方式计算共同邻居顶点,从而规避顶点度较大时导致的性能瓶颈。下面采用示意性的实施例进行说明。请参考图3,其示出本申请一个示例性实施例提供的图数据中最小k派系检测方法的方法流程图。该方法可以包括如下步骤:步骤301,加载图数据,图数据中的各个顶点对应各自的顶点id。图数据处理设备从外部存储中加载待检测的图数据g(v,e),其中,v表示图数据中顶点的集合,e表示图数据中边的集合,该图数据为无向图数据或有向图数据。本申请实施例中,图数据中的各个顶点对应各自的顶点id,不同顶点对应的顶点id互不相同,可选的,该顶点id为各个顶点的数字编号。示意性的,如图1所示,该无向图数据中各个顶点对应的顶点id为1至6。在一种可能的应用场景下,为了提高大规模图数据的处理速度,采用并行化图计算框架进行图数据挖掘。如图4所示,并行化图计算框架包括一个控制(master)节点和若干个数据(worker)节点,控制节点和数据节点均设置有独立的处理器(cpu,centralprocessingunit),存储器(内存和磁盘),且控制节点与各个数据节点之间通过高速网络(以太网络或光纤交换网络)相连。控制节点获取到完整图数据后,采用点切(vertexcut)的方式将完整图数据分割为若干份图数据,并将图数据分发至各个数据节点,由数据节点对各自的图数据进行并行图计算。各个数据节点(即图数据处理设备)对图数据进行处理时,即加载存储器中存储的图数据。步骤302,计算图数据中各个顶点各自对应的邻居顶点集合,邻居顶点集合中包含顶点对应的邻居顶点,且邻居顶点的顶点id大于顶点的顶点id。在一种可能的实现方式中,对于图数据中的各个顶点,图数据处理设备基于极大值原则对顶点的邻居顶点进行筛选过滤,仅将部分邻居顶点(顶点id大于当前顶点的顶点id)添加到邻居顶点集合中,即在邻居顶点集合计算阶段缩小邻居顶点集合的数据量(相较于相关技术中的邻居顶点集合,数据量缩小至二分之一),进而降低后续计算过程中中间数据的数据量。可选的,针对不同类型的图数据,计算得到的邻居顶点集合中包含的内容也不同。对于无向图数据而言,顶点对应的邻居顶点集合中即包含与该顶点通过无向边相连,且顶点id大于该顶点的邻居顶点;对于有向图数据而言,由于图数据中的有向边具有方向性,因此,顶点对应的邻居顶点集合包含出度邻居顶点集合和入度邻居顶点集合,其中,出度邻居顶点集合中包含出度邻居顶点,入度邻居顶点集合中包含入度邻居顶点。步骤303,根据邻居顶点集合,计算图数据中各条边上两个顶点的共同邻居顶点。在一种可能的实施方式中,图数据处理设备基于并行边遍历原则,遍历图数据中的各条边,对于每条边上的两个顶点,图数据处理设备分别获取两个顶点各自对应的邻居顶点集合,从而利用求交集的方式,根据两个邻居顶点集合计算出这两个顶点的共用邻居顶点。由于图数据中顶点的相互依赖性,因此采用顶点间消息传递的方式确定顶点间的共同邻居顶点时,本地数据节点(即图数据处理设备)需要与其他数据节点进行消息传递,在并行环境下将会造成极大的网络输入输出(inputoutput,io)以及内存io开销,造成设备的性能瓶颈。而采用并行边遍历的方式计算顶点间的共同邻居顶点时,由于无需在顶点间进行数据传输,因此能够显著降低网络io和内存io开销,从而有效规避性能瓶颈问题。步骤304,根据图数据中各条边上两个顶点以及共同邻居顶点,确定图数据中的最小k派系。根据各条边上的两个顶点以及这两个顶点的共同邻居顶点,图数据处理设备即确定出图数据中的最小k派系,该最小k派系为无向最小k派系或有向最小k派系。由于经过上述步骤302和303得到的共同邻居顶点无重复冗余,因此最终确定出的最小k派系无重复,从而避免了对最小k派系进行去重处理,进一步提高了检测速度。在一种可能的实施方式中,在图4所示的应用场景下,各个数据节点并行通过上述步骤对各自的图数据进行最小k派系检测,并将检测结果发送至控制节点,以便控制节点进一步基于检测出的最小k派系进行社团结构挖掘、边聚集系数计算、顶点亲密度计算和顶点相似度计算。综上所述,本实施例中,在计算图数据中各个顶点的邻居顶点集合时,基于极大值原则,将顶点id小于自身顶点id的邻居顶点过滤,仅保留顶点id大于自身顶点id的邻居顶点,相较于相关技术中邻居顶点集合的计算方式,其中间数据量缩小至一半,从而减少后续的无用计算,降低了计算量,提高了计算效率;同时,采用上述方法能够有效过滤各个顶点形成最小k派系的重复结果,避免进行额外的去重处理。针对不同类型的图数据,图数据处理设备计算邻居顶点集合以及共同邻居顶点的方式不同,下面采用两个示意性的实施例分别对无向图数据以及有向图数据中最小k派系的检测方法进行说明。请参考图5,其示出本申请另一个示例性实施例提供的图数据中最小k派系检测方法的方法流程图。本实施例以图数据为无向图数据为例进行说明,该方法可以包括如下步骤:步骤501,加载无向图数据,无向图数据中的各个顶点对应各自的顶点id。本步骤的实施方式与上述步骤301相似,本实施例在此不再赘述。步骤502,并行遍历无向图数据中的各个顶点。加载完无向图数据后,图数据处理设备采用并行方式遍历无向图数据中的各个顶点,相较于串行方式的效率更高。示意性的,如图1所示,图数据处理节点并行遍历无向图中的顶点1至6。步骤503,对于无向图数据中的每个顶点,获取顶点对应的候选邻居顶点,候选邻居顶点与顶点之间通过无向边直接相连。并行遍历过程中,对于遍历到的各个顶点,图数据处理设备获取各个顶点对应的候选邻居顶点,该候选邻居顶点即与当前顶点通过一条无向边直连的顶点,且当前顶点的顶点id小于或大于其候选邻居顶点的顶点id。结合图1所示的无向图,图数据处理设备并行获取顶点1的候选邻居顶点为2、3、4、5,顶点2的候选邻居顶点为1、5,顶点3的候选邻居顶点为1、4,顶点4的候选邻居顶点为1、3、5、6,顶点5的候选邻居顶点为1、2、4,顶点6的候选邻居顶点为4、5。与相关技术中,直接将上述候选邻居顶点确定为邻居顶点集合不同,本实施例中,图数据处理设备将进一步基于极大值原则,通过下述步骤504对部分候选邻居顶点进行过滤。步骤504,若候选邻居顶点的顶点id小于顶点的顶点id,则过滤候选邻居顶点。对于并行获取到的各个候选邻居顶点,图数据处理设备检测当前顶点的顶点id是否大于其候选邻居顶点的顶点id,若大于,则对该候选邻居顶点过滤,若小于,则保留该候选邻居顶点。结合步骤503中的示例,由于顶点1的顶点id小于其候选邻居顶点的顶点id,因此,图数据处理设备保留各个候选邻居顶点;由于顶点2的顶点id大于候选邻居顶点1的顶点id,而小于候选邻居顶点5的顶点id,因此,图数据处理设备过滤候选邻居顶点1,并保留候选邻居顶点5。步骤505,根据过滤后的候选邻居顶点生成顶点对应的邻居顶点集合。经过上述步骤504对候选邻居顶点进行过滤后,图数据处理设备根据过滤后的候选邻居顶点生成顶点对应的邻居顶点集合,或称为极大值邻居顶点集合(max_neighbors)。结合上述步骤503中的示例,图数据处理设备根据过滤后的候选邻居顶点生成各个顶点对应的邻居顶点集合如表三所示。表三顶点邻居顶点集合v1{2,3,4,5}v2{5}v3{4}v4{5,6}v5{6}v6{}通过比较表一和表三可以发现,相较于相关技术,本实施例中基于极大值原则生成的邻居顶点集合的数据量缩小至原先的二分之一(相关技术中共18个邻居顶点,而本申请中则为9个邻居顶点)。步骤506,并行遍历无向图数据中的各条无向边。在一种可能的实施方式中,图数据处理设备在并行遍历各个顶点的同时,遍历无向图中的各条无向边,得到无向边的边信息(edge_info)。示意性的,图数据处理设备遍历图1所示的无向图,得到无向边分别为e(1,2),e(1,3),e(1,4),e(1,5),e(2,5),e(3,4),e(4,5),e(4,6),e(5,6)。步骤507,对于无向图数据中的每条无向边,确定无向边上的第一顶点和第二顶点。对于遍历到的各条无向边,图数据处理设备并行获取各条无向边上的第一顶点和第二顶点。结合步骤506中的示例,图数据处理设备确定e(1,2)上的第一顶点为顶点1,第二顶点为顶点2。步骤508,获取第一顶点对应的第一邻居顶点集合,以及第二顶点对应的第二邻居顶点集合。当第一顶点、第二顶点以及共同邻居顶点构成无向最小k派系时,该共同邻居顶点同时为第一顶点和第二顶点的邻居顶点,因此,图数据处理设备分别获取第一顶点以及第二顶点各自对应的邻居顶点集合,进而根据两个邻居顶点集合计算出两个顶点的共同邻居顶点。示意性的,图数据处理设备基于表三,获取到顶点1(即v1)对应的第一邻居顶点集合{2,3,4,5},获取到顶点2(即v2)对应的第二邻居顶点集合{5}。步骤509,计算第一邻居顶点集合和第二邻居顶点集合的交集,并将交集确定为第一顶点和第二顶点的共同邻居顶点。由于第一顶点和第二顶点的共同邻居顶点必然同时与第一顶点以及第二顶点互为邻居顶点,因此,图数据处理设备通过计算第一邻居顶点集合和第二邻居顶点集合的交集,从而将交集中的顶点确定为第一顶点和第二顶点之间的共同邻居顶点(max_commneighbor),其中,顶点之间的共同邻居顶点可以为空。比如,图数据处理设备计算得到第一邻居顶点集合{2,3,4,5}与第二邻居顶点集合{5}的交集为{5},从而将顶点5确定为顶点1和顶点2的共同邻居顶点。步骤510,根据无向图数据中各条边上两个顶点以及共同邻居顶点,确定无向图数据中的最小k派系。确定出两个顶点间的共同邻居顶点后,图数据处理设备将无向边上的两个顶点以及共同邻居顶点确定为三角形的三个顶点,从而确定出相应的最小k派系。由于第一邻居顶点集合中顶点的顶点id大于第一顶点的顶点id,且第二邻居顶点集合中顶点的顶点id大于第二顶点的顶点id,因此,确定出的共同邻居顶点的顶点id必然大于第一顶点的顶点id,且大于第二顶点的顶点id。由此可知,采用“极大值+并行边遍历”的方式确定出的最小k派系中不包含重复结果,进而图数据处理设备无需对确定出的最小k派系进行去重。示意性的,图数据处理设备通过并行便遍历的方式,确定出图1所示无向图中顶点间的共同邻居顶点以及生成的最小k派系如表四所示。表四无向边共同邻居顶点最小k派系e(1,2){5}(1,2,5)e(1,3){4}(1,3,4)e(1,4){5}(1,4,5)e(1,5){}-e(2,5){}-e(3,4){}-e(4,5){6}(4,5,6)e(4.6){}-e(5,6){}-显然,由表二和表四可知,采用“极大值+并行边遍历”的方式检测无向图数据中的最小k派系时,检测结果中不包含重复项,且中间数据的数据量显著降低,相比较顶点消息传递的方式,性能和数据规模具备更高的扩展性。在实际的应用中,在相同资源配置下,上述无向图数据中最小k派系检测算法比已有的最小k派系检测算法快12倍以上;在相同数据量下,上述算法能够将中间数据碰撞率降低至30%。示意性的,具体的仿真数据如表五所示(集群中包含3个数据节点)。表五可见,在图数据的数据量较小的情况下,本申请方案相较于已有方案的性能更优;在图数据的数据量较大的情况下,采用已有方案无法在三数据节点上运行,采用本申请方案只需在运行1.2h,使得小集群(即并行化图计算框架中数据节点的数量较少)上支持大数据量的最小k派系检测成为可能。请参考图6,其示出本申请另一个示例性实施例提供的图数据中最小k派系检测方法的方法流程图。本实施例以图数据为有向图数据为例进行说明,该方法可以包括如下步骤:步骤601,加载有向图数据,有向图数据中的各个顶点对应各自的顶点id。本步骤的实施方式与上述步骤301相似,本实施例在此不再赘述。步骤602,并行遍历有向图数据中的各个顶点。与上述步骤502相似的,加载完有向图数据后,图数据处理设备采用并行方式遍历有向图数据中的各个顶点,相较于串行方式的效率更高。示意性的,如图2所示,图数据处理节点并行遍历有向图中的顶点1至6。步骤603,对于有向图数据中的每个顶点,获取顶点对应的候选入度邻居顶点和候选出度邻居顶点,候选入度邻居顶点与顶点之间的有向边指向顶点,顶点与候选出度邻居顶点之间的有向边指向候选出度邻居顶点。与无向图不同,由于有向图中顶点之间的有向边具有方向性,因此,顶点的邻居顶点分为出度邻居顶点和入度邻居顶点。相应的,图数据处理设备在并行遍历的过程中,需要获取各个顶点对应的候选入度邻居顶点和候选出度邻居顶点,其中,当前顶点的顶点id小于或大于其候选入度(或出度)邻居顶点的顶点id。结合图2所示的有向图,图数据处理设备并行获取顶点1的候选出度邻居顶点为顶点3、5、6,候选入度邻居顶点为顶点4;顶点2的候选出度邻居顶点为顶点5,候选入度邻居顶点为顶点4;顶点3的候选出度邻居顶点为顶点4,候选入度邻居顶点为顶点1;顶点4的候选出度邻居顶点为顶点1、2,候选入度邻居顶点为顶点3、5;顶点5的候选出度邻居顶点为顶点4、6,候选入度邻居顶点为顶点1、2;顶点6的候选出度邻居顶点为空,候选入度邻居顶点为顶点1、5。步骤604,若候选入度邻居顶点的顶点id小于顶点的顶点id,则过滤候选入度邻居顶点。为了减少生成的邻居顶点集的数据量,图数据处理设备基于极大值原则,检测当前顶点的顶点id是否大于其候选入度邻居顶点的顶点id,若大于,则过滤该候选入度邻居顶点,若小于,则保留该候选入度邻居顶点。结合步骤503中的示例,由于顶点1的顶点id小于其候选入度邻居顶点(顶点4)的顶点id,因此,图数据处理设备保留该候选入度邻居顶点;由于顶点3的顶点id大于其候选入度邻居顶点(顶点1)的顶点id,因此,图数据处理设备过滤该候选入度邻居顶点。步骤605,若候选出度邻居顶点的顶点id小于顶点的顶点id,则过滤候选出度邻居顶点。与上述步骤604相似的,图数据处理设备基于极大值原则,检测当前顶点的顶点id是否大于其候选出度邻居顶点的顶点id,若大于,则过滤该候选出度邻居顶点,若小于,则保留该候选出度邻居顶点。结合步骤503中的示例,由于顶点1的顶点id小于其各个候选出度邻居顶点(顶点3、5、6)的顶点id,因此,图数据处理设备保留各个候选出度邻居顶点;由于顶点5的顶点id大于候选出度邻居顶点4的顶点id,而小于候选出度邻居顶点6的顶点id,因此,图数据处理设备过滤候选出度邻居顶点4,并保留候选出度邻居顶点6。步骤606,根据过滤后的候选入度邻居顶点生成顶点对应的入度邻居顶点集合,并根据过滤后的候选出度邻居顶点生成顶点对应的出度邻居顶点集合。经过上述步骤604和605对候选出、入度邻居顶点进行过滤后,图数据处理设备根据过滤后的候选入度邻居顶点生成顶点对应的入度邻居顶点集合(或称为极大值入度邻居顶点集合(max_inneighbors));根据过滤后的候选出度邻居顶点生成顶点对应的出度邻居顶点集合(或称为极大值出度邻居顶点集合(max_outneighbors)),其中,入度邻居顶点集合和出度邻居顶点集合可以为空集。结合上述步骤603中的示例,图数据处理设备根据过滤后的候选邻居顶点生成各个顶点对应的出度邻居顶点集合以及入度邻居顶点集合如表六所示。表六顶点入度邻居顶点集合出度邻居顶点集合v1{4}{3,5,6}v2{4}{5}v3{}{4}v4{5}{}v5{}{6}v6{}{}基于极大值原则生成的入度邻居顶点集合和出度邻居顶点集合的数据量显著降低。步骤607,并行遍历有向图数据中的各条有向边。在一种可能的实施方式中,图数据处理设备在并行遍历各个顶点的同时,遍历有向图中的各条有向边,得到有向边的边信息(edge_info)。示意性的,图数据处理设备遍历图2所示的有向图,得到有向边分别为e(1,3),e(1,5),e(1,6),e(4,1),e(3,4),e(4,2),e(2,5),e(5,4),e(5,6)。步骤608,对于有向图数据中的每条有向边,获取有向边上的源顶点和目标顶点,有向边由源顶点指向目标顶点。对于遍历到的各条有向边,图数据处理设备并行获取各条有向边上的源(src)顶点以及目标(dest)顶点。结合步骤607中的示例,图数据处理设备确定e(1,3)上的源顶点为顶点1,目标顶点为顶点3。步骤609,获取源顶点的入度邻居顶点集合,以及目标顶点的出度邻居顶点集合。当源顶点、目标顶点以及共同邻居顶点构成有向最小k派系时,该共同邻居顶点为源顶点的入度邻居顶点,且为目标顶点的出度邻居顶点,因此,图数据处理设备获取源顶点的入度邻居顶点集合以及目标顶点的出度邻居顶点集合,进而根据两个集合的交集计算出共同邻居顶点。示意性的,图数据处理设备基于表六,获取到顶点1(源顶点)对应的入度邻居顶点集合{4},获取到顶点2(目标顶点)对应的出度邻居顶点集合{4}。步骤610,计算源顶点的入度邻居顶点集合与目标顶点的出度邻居顶点集合的交集,并将交集确定为源顶点和目标顶点的共同邻居顶点。图数据处理设备通过计算源顶点的入度邻居顶点集合和目标顶点的出度邻居顶点集合的交集,从而将交集中的顶点确定为源顶点和目标顶点之间的共同邻居顶点(max_commneighbor),其中,顶点之间的共同邻居顶点可以为空。结合步骤609中的示例,图数据处理设备计算得到入度邻居顶点集合{4}与出度邻居顶点集合{4}的交集为{4},从而将顶点4确定为顶点1和顶点3的共同邻居顶点。步骤611,根据有向图数据中各条边上两个顶点以及共同邻居顶点,确定有向图数据中的最小k派系。确定出源顶点和目标顶点间的共同邻居顶点后,图数据处理设备将有向边上的源顶点、目标顶点以共同邻居顶点确定为三角形的三个顶点,从而确定出相应的有向最小k派系。由于入度邻居顶点集合中顶点的顶点id大于源顶点的顶点id,且出度邻居顶点集合中顶点的顶点id大于目标顶点的顶点id,因此,确定出的共同邻居顶点的顶点id必然大于源顶点的顶点id,且大于目标顶点的顶点id。由此可知,采用“极大值+并行边遍历”的方式确定出的最小k派系中不包含重复结果,进而图数据处理设备无需对确定出的最小k派系进行去重。示意性的,图数据处理设备采用上述算法,确定出图2所示有向图中顶点间的共同邻居顶点以及生成的最小k派系如表七所示。表七有向边共同邻居顶点最小k派系e(1,3){4}(1,3,4)e(1,5){}-e(1,6){}-e(4,1){5}(4,1,5)e(3,4){}-e(4,2){5}(4,2,5)e(2,5){}-e(5,4){}-e(5,6){}-由表七可见,采用“极大值+并行边遍历”的方式检测有向图数据中的最小k派系时,检测结果中不包含重复项,且中间数据的数据量显著降低,相比较顶点消息传递的方式,性能和数据规模具备更高的扩展性。在实际的应用中,在相同数据量下,上述算法能够将中间数据碰撞率降低至25%(与消息传递方式相比)。示意性的,具体的仿真数据如表八所示(集群中包含3个数据节点)。表八可见,在图数据的数据量较小的情况下,本申请方案相较于已有方案的性能更优;在图数据的数据量较大的情况下,采用消息传递方案无法在三数据节点上运行,采用本申请方案只需在运行1.5h,使得小集群(即并行化图计算框架中数据节点的数量较少)上支持大数据量的有向最小k派系检测成为可能。图7是本申请一个示例性实施例提供的图数据处理设备700的结构示意图,该图数据处理设备700可以实现为图4所示的架构中的数据节点。如图7所示,该图数据处理设备700可以包括:处理器710以及存储器720。处理器710可以包括一个或者一个以上处理单元,该处理单元可以是中央处理单元(centralprocessingunit,cpu)或者网络处理器(networkprocessor,np)等。存储器720可用于存储处理图数据处理程序,该图数据处理程序可以由处理器710执行。此外,该存储器720中还可以存储图数据。该图数据处理程序可以包括加载模块、计算模块以及确定模块。其中,加载模块由处理器710执行,以实现上述图3、5、6所示实施例中有关加载图数据的功能;计算模块由处理器710执行,以实现上述图3、5、6所示实施例中有关计算邻居顶点集合以及共同邻居顶点的功能;确定模块由处理器710执行,以实现上述图3、5、6所示实施例中有关确定最小k派系的功能。可选的,该数据处理设备700还可以包括通信接口720,该通信接口730可以包括网络接口。该网络接口可以包括有线网络接口,比如以太网接口或者光纤接口,或者,网络接口也可以包括无线网络接口,比如无线局域网接口或者蜂窝移动网络接口。数据处理设备700通过该网络接口730与其它设备(数据节点或控制节点)进行通信。可选的,处理器710可以用总线与存储器720和通信接口730相连。可选地,该数据处理设备700还可以包括输出设备740以及输入设备750。输出设备740和输入设备750与处理器710相连。输出设备740可以是用于显示信息的显示器、播放声音的功放设备或者打印机等,输出设备740还可以包括输出控制器,用以提供输出到显示屏、功放设备或者打印机。输入设备750可以是用于输入信息的诸如鼠标、键盘、电子触控笔或者触控面板之类的设备,输入设备750还可以包括输出控制器以用于接收和处理来自鼠标、键盘、电子触控笔或者触控面板等设备的输入。下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请的装置实施例中未披露的细节,请参照本申请的方法实施例。图8是本申请一个示例性实施例提供的一种图数据中最小k派系检测装置的结构方框图,该图数据中最小k派系检测装置可以通过硬件电路或者软件硬件的结合实现成为图数据处理设备的部分或者全部,该图数据处理设备可以是上述图4所示的实施场景中的数据节点。该图数据中最小k派系检测装置可以包括:加载单元810、计算单元820以及确定单元830。其中,加载单元810由处理器执行,以实现上述图3、5、6所示实施例中有关加载图数据的功能;计算单元820由处理器执行,以实现上述图3、5、6所示实施例中有关计算邻居顶点集合以及共同邻居顶点的功能;确定模块830由处理器执行,以实现上述图3、5、6所示实施例中有关确定最小k派系的功能。需要说明的是:上述实施例提供的装置在进行最小k派系检测时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的图数据中最小k派系检测装置与图数据中最小k派系检测方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述本申请的实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1