一种对关系网络图中的节点进行聚类的方法及装置
技术领域
本说明书一个或多个实施例涉及计算机信息处理领域,尤其涉及对关系网络图中的节点进行聚类的方法及装置。
背景技术
在进行数据分析,特别是大数据分析时,聚类是一种常用的分析方法。聚类是指将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。聚类可以把相似的对象划分到一个类,使得同一个类内的对象比较相似,而不同类之间的对象差异较大。
随着智能手机的普及,用户日常生活产生的数据量迅速增加,这给聚类算法的性能带来了挑战。因此,需要一种能够高效地对大规模数据进行聚类的方法。
发明内容
本说明书一个或多个实施例描述了一种对关系网络图中的节点进行聚类的方法,可以在一轮迭代中同时合并多对两两节点,提高了计算效率,可高效完成大规模数据以及超大规模数据的聚类。
根据第一方面,提供一种对关系网络图中的节点进行聚类的方法,所述关系网络图包括多个节点和多个连接边,所述方法包括:
获取所述关系网络图的邻接信息,所述邻接信息记录了各个节点之间是否具有连接边,以及连接边的边长;
根据所述邻接信息,确定以各个节点为中心节点的各个邻居节点集合,以及各个邻居节点集合中节点之间的最短连接边;其中,所述邻居节点集合包括对应的中心节点,以及与该对应的中心节点的连接阶数不超过预定阶数k的邻居节点,k为大于1的整数;
确定各个最短连接边中边长小于预设阈值的至少一个第一边;
对于各个第一边,将第一边连接的两个节点聚为同一类簇,并将所述两个节点进行合并;
根据合并之后的节点,更新所述邻接信息,更新后的所述邻接信息用于再次进行节点合并。
在一个实施例中,所述关系网络图中的节点对应于样本,所述连接边的边长对应于样本之间的相似度或关联紧密度。
在一个实施例中,所述获取所述关系网络图的邻接信息包括:
获取所述关系网络图的邻接矩阵,通过所述邻接矩阵确定相互连接的节点;
获取各个节点的嵌入向量;
根据各个节点的嵌入向量计算所述相互连接的节点之间的连接边的边长。
在一个实施例中,所述获取所述关系网络图的邻接信息包括:
获取所述关系网络图的距离矩阵,所述距离矩阵用作所述邻接信息。
在一个实施例中,所述确定邻居节点集合包括:
遍历所述关系网络图的邻接信息,以得到各个节点的1阶邻居节点;
对于各个节点,将其n阶邻居节点的1阶邻居节点中的第一邻居作为各个节点的n+1阶邻居节点,添加到该节点对应的邻居节点集合中,直到n达到k-1;其中,第一邻居为各个节点的n阶邻居的1阶邻居中排除了各个节点的n-1阶邻居后的邻居节点。
在一个实施例中,所述至少一个第一边的数目为1时,在更新所述邻接信息后,所述方法还包括:
根据更新后的邻接信息,确定更新后的关系网络图中的最短边;
当所述最短边小于所述预设阈值时,合并所述最短边所连接的两个节点;
根据合并后的节点,再次更新所述邻接信息。
在一个实施例中,所述第一边连接的两个节点分别为第一节点和第二节点,第一节点和第二节点同时与第三节点连接,所述将所述两个节点进行合并包括,将第一节点和第二节点合并为第四节点;
所述根据合并之后的节点,更新所述邻接信息包括:根据第一节点与第三节点的连接边的第一边长和第二节点与第三节点的连接边的第二边长,计算第四节点与第三节点的边长。
在一个实施例中,所述第一边连接的两个节点分别为第一节点和第二节点,第一节点与第三节点连接,第二节点未与第三节点连接,所述将所述两个节点进行合并包括,将第一节点和第二节点合并为第四节点;
所述根据合并之后的节点,更新所述邻接信息包括:将第一节点与第三节点的连接边的边长,作为第四节点与第三节点的连接边的边长。
根据第二方面,提供一种对关系网络图中的节点进行聚类的装置,所述关系网络图包括多个节点和多个连接边,所述装置包括:
邻接信息获取单元,配置为获取所述关系网络图的邻接信息,所述邻接信息记录了各个节点之间是否具有连接边,以及连接边的边长;
第一确定单元,配置为根据所述邻接信息,确定各个节点的预定阶数k及预定阶数k之内的邻居节点构成的邻居节点集合,以及各个邻居节点集合中节点之间的最短连接边;k为大于0的整数;
第二确定单元,配置为确定各个最短连接边中边长小于预设阈值的至少一个第一边;
节点合并单元,配置为对于各个第一边,将第一边连接的两个节点聚为同一类簇,并将所述两个节点进行合并;
更新单元,配置为根据合并之后的节点,更新所述邻接信息,更新后的所述邻接信息用于再次进行节点合并。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
根据本说明书实施例提供的方法和装置,在对关系网络图中的节点进行聚类时,根据关系网络图的邻接信息确定各个节点的邻居节点集合,然后可以确定各个邻居节点集合中的最短连接边,并确定各最短连接边中小于预设阈值的第一边,进而将第一边连接的两个节点聚为同一类簇并合并;从而可以实现在一轮迭代中合并多对两两节点,提高了计算效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出本说明书披露的一个实施例的关系网络图的示意图;
图2示出根据一个实施例的对关系网络图中的节点进行聚类的方法的流程图;
图3示出了更新后的关系网络图;
图4示出根据一个实施例的节点聚类方法流程图;
图5示出根据一个实施例的对关系网络图中的节点进行聚类的装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
对象的聚类可以应用到多个应用场景中,例如,对新闻主题的聚类有助于为新闻打上直观的标签,对电商用户的聚类有助于进行更精准地营销,对客服中用户问题的聚类有助于搭建知识库进而提高客服服务质量。
对象的多个样本及样本之间的关系可以用关系网络图表示。图1为本说明书披露的一个实施例的关系网络图的示意图。如图1所示,该关系网络图包括多个节点以及多个连接边,为了便于清楚表述,为图1所示的每个节点进行了编号。图1所示的图中,每个节点代表了一个样本。存在关联关系的节点之间用连接边互相连接。连接边的边长又可以称为节点之间的距离,其大小可以与节点之间的相似度或关联紧密度相关。
在一个实施例中,样本为新闻主题。存在关联关系(例如链接跳转,关键字包含等)的新闻主题之间用连接边进行连接。连接边的边长的长短对应于新闻主题之间的相似度的高低。具体地,连接边的边长越短,则表示新闻主题之间的相似度越高;连接边的边长越长,则表示新闻主题之间的相似度越低。
在另一实施例中,样本为客服问答中出现的用户问题。存在关联关系(例如,上下文关系等)的用户问题之间用连接边进行连接。连接边的边长对应于用户问题之间的相似度的高低。边长越短,相似度越高;边长越长,相似度越低。
在一个实施例中,样本为各个用户(例如电商用户)。存在关联关系的用户之间用连接边进行连接。在一个例子中,连接边的边长对应于用户之间的相似度。在另一例子中,连接边的边长的长短对应于用户之间的关联紧密度的高低。具体地,连接边的边长越短,则表示用户之间的关联紧密度越高;连接边的边长越长,则表示用户之间的关联紧密度越低。
在一个例子中,关联紧密度对应用户间的社交行为。更具体的,可以为不同的交互类型预设不同的关联紧密度。例如,两个用户为进行过转账交互的用户,则这两个用户之间的关联紧密度可以预设为0.8;两个用户为进行过留言操作(可以相互留言,也可以为一个用户为另一个用户留言)的用户,则这两个用户之间的关联紧密度可以预设为0.5;等等。在另一例子中,关联紧密度还可以基于两个用户之间的交互频次来确定,交互频次越频繁,关联紧密度越大。或者,在反映用户的资金来往的关系图中,还可以基于用户之间来往资金的数额确定其关联紧密度,数额越大,关联紧密度越大。
可以理解,还存在更多的关系网络图的示例,此处不再一一列举。
在多种情况下,需要对如图1所示的关系网络图中的节点进行聚类。常用的K-means聚类方法需要预先确定要聚类的类簇数目K。而对于关系网络图而言,有时候并不能预先确定需要将节点聚为多少个类簇,因此不太适用K-means方法。
根据一种方案,采用层次聚类方法对关系网络图中的节点进行聚类。根据层次聚类方法,初始时将每个节点认为是一个类别,计算类别之间的距离,挑选距离最短的两个类别。如果两者间距离小于给定阈值,则将这两个类别合并并重复上述过程,反之则算法终止。通过这样的方法,在每次遍历关系网络图的一次迭代中,会挑选出最短距离对应的两个节点进行合并。
在以上方案的基础上,本说明书实施例提供的对关系网络图中的节点进行聚类的方法可以认为是一种分布式层次聚类算法,其可以在一轮迭代中合并两对及两对以上的节点。具体的,在一次遍历关系网络图的迭代中,针对各个节点,以k阶邻居为界确定出各个对应的邻居节点集合,以及该集合中的最短边,将满足阈值条件的多个最短边所连接的节点对均进行合并,从而实现并行合并,提高计算效率。
以图1所示的关系网络图为例,假设k为2,即各节点的邻居节点集合为各节点的1阶邻居节点和2阶邻居节点构成的集合。对于节点A而言,其邻居节点集合包括了节点A、节点B、节点C、节点E、节点F、节点D、节点I,假设节点A与节点B之间的连接边为节点A的邻居节点集合中的最短连接边,且小于预设阈值。对于节点H而言,其邻居节点集合包括了节点H、节点N、节点M、节点G、节点L、节点K、节点J,假设节点H与节点G之间的连接边为节点H的邻居节点集合中的最短连接边,且小于预设阈值。则可以在一轮迭代中,将节点A与节点B聚为同一类簇、节点H与节点G聚为同一类簇,并将节点A与节点B合并、节点H与节点G合并。即,如果采用本说明书实施例提供对关系网络图中的节点进行聚类的方法对图1所示的关系网络图进行聚类的话,可在一轮迭代中,至少可以将节点A与节点B合并、节点H与节点G合并。
接下来,参考图2,对本说明书实施例提供的对关系网络图中的节点进行聚类的方法进行具体介绍。所述方法可以由任何具有计算、处理能力的装置、设备、平台、设备集群执行。如图2所示,所述方法包括如下步骤:步骤200,获取所述关系网络图的邻接信息,所述邻接信息记录了各个节点之间是否具有连接边,以及连接边的边长;步骤202,根据所述邻接信息,确定以各个节点为中心节点的各个邻居节点集合,以及各个邻居节点集合中节点之间的最短连接边;其中,所述邻居节点集合包括对应的中心节点,以及与该对应的中心节点的连接阶数不超过预定阶数k的邻居节点;步骤204,确定各个最短连接边中边长小于预设阈值的至少一个第一边;步骤206,对于各个第一边,将第一边连接的两个节点聚为同一类簇,并将所述两个节点进行合并;步骤208,根据合并之后的节点,更新所述邻接信息,更新后的所述邻接信息用于再次进行合并。下面结合具体例子,对以上各个步骤的执行方式进行描述。
首先,在步骤200,获取所述关系网络图的邻接信息,所述邻接信息记录了各个节点之间是否具有连接边,以及连接边的边长。
本领域技术人员可以理解,可以采用各种具体形式记录关系网络图的拓扑结构,例如,邻接矩阵,度矩阵,距离矩阵,邻接表,十字链表等等。以上各种记录形式的一种或多种的组合,都可以作为上述邻接信息。
在一个实施例中,在步骤200中,获取所述关系网络图的距离矩阵作为所述邻接信息。
可以假设所述关系网络图的距离矩阵为矩阵P,距离矩阵P可以表示为:
P=[amh]N*N,
其中,第m行第h列的元素amh对应于节点m与节点h之间连接边的边长,也可以称为节点m与节点h的距离。如果amh为特定值或特定符号,例如0或无穷大,节点m与节点h之间没有连接边。
因此,通过距离矩阵中各个元素的值,可以确定关系网络图的两个节点之间有没有连接,如果有连接的话,连接边的边长值。
在另一实施例中,在步骤200,获取所述关系网络图的邻接矩阵,通过所述邻接矩阵确定相互连接的节点;还获取各个节点的嵌入向量;根据各个节点的嵌入向量计算所述相互连接的节点之间的连接边的边长。
如本领域技术人员所知,关系网络图的邻接矩阵可以表示为
A=[aij]N*N
其中,如果节点i与节点j有连接,则aij为1,否则为0。因此,通过邻接矩阵,可以容易地确定出关系网络图中的相互连接的节点。
此外,在对所述关系网络图进行了图嵌入的情况下,每个节点会具有对应的嵌入向量。此时,可以获取各个节点的嵌入向量作为其在多维空间的位置坐标。然后,对于相互连接的节点,根据其嵌入向量作为位置坐标,计算两者在多维空间中的距离,作为其连接边的边长。根据嵌入向量计算距离的方式可以有多种,例如计算欧式距离,余弦距离等等,在此不进行赘述。
以上,获得了关系网络图的邻接信息。
接着,在步骤202中,根据所述邻接信息,确定以各个节点为中心节点的各个邻居节点集合,以及各个邻居节点集合中节点之间的最短连接边;其中,所述邻居节点集合包括对应的中心节点,以及与该对应的中心节点的连接阶数不超过预定阶数k的邻居节点。换而言之,某个节点的邻居节点集合即为,以该节点为中心,以k阶邻居为界,圈定出的节点集合。
具体的,在一个实施例中,为了确定出各个节点对应的邻居节点集合,遍历所述关系网络图的邻接信息,以得到各个节点的1阶邻居节点;对于各个节点,将其n阶邻居节点的1阶邻居节点中的第一邻居作为各个节点的n+1阶邻居节点,添加到邻居节点集合中,直到n达到k-1;其中,第一邻居为各个节点的n阶邻居的1阶邻居中排除了各个节点的n-1阶邻居后得到的邻居节点。
可以理解,1阶邻居是指直接相邻,其间没有间隔其他节点,即两个节点之间有连接边。2阶邻居是指两个节点之间间隔了一个节点。3阶邻居是指两个节点之间间隔了2个节点,以此类推,n阶邻居是指两个节点之间间隔了n-1个节点。以图1所示的节点为例,节点A和节点B互为1阶邻居,节点A和节点I互为2阶邻居,节点A和节点J互为3阶邻居。
在遍历了邻接信息后,可以得到每个节点的1阶邻居节点。容易理解的是,根据每个节点的1阶邻居可以得到每个节点的k阶及k阶以内的邻居节点。仍以图1所示的各节点为例,节点A的1阶邻居有节点B、节点C、节点E。节点B的1阶邻居有节点A、节点D、节点I,从节点B的1阶邻居节点中排除掉节点A自身,余下的节点D、节点I都为节点A的2阶邻居。节点E的1阶邻居有节点A、节点F,从节点E的1阶邻居节点中排除掉节点A自身,余下的节点F都为节点A的2阶邻居。同理,可以将各个节点的n阶邻居节点的1阶邻居节点中的第一邻居作为各个节点的n+1阶邻居节点;第一邻居为各个节点的n阶邻居的1阶邻居中排除了各个节点的n-1阶邻居后得到的邻居节点。
在具体实现时,可以采用k次循环,第一次循环得到各节点的1阶邻居,第二次循环得到各节点的2阶邻居,第k次循环得到各节点的k阶邻居。各节点及其1阶至k阶邻居节点构成了各个节点的邻居节点集合。
如此,通过遍历一次关系网络图的邻接信息,利用各个节点之间有没有连接的信息,可以确定出以各个节点为中心节点的各个邻居节点集合,同时参照有连接的节点之间的距离或边长信息,可以同时确定出各个邻居节点集合中节点之间的最短连接边。
接着,在步骤204,确定各个最短连接边中边长小于预设阈值的连接边,为了表述的简单和清楚,将边长小于预设阈值的连接边称为第一边。
预设阈值可以为距离阈值,其用于考察节点间的边长。当边长对应于样本之间的相似度时,如果两个节点之间的边长小于预设阈值,则表明这两个节点代表的样本之间相似度较高,可以将这两个节点聚为一个类簇,并将这两个节点合并。当边长对应于样本之间的关联紧密度时,如果两个节点之间的边长小于预设阈值,则表明这两个节点代表的样本之间关联紧密度较高,可以将这两个节点聚为一个类簇,并将这两个节点合并。
因此,相应的,在步骤206,对于各个第一边,将第一边连接的两个节点聚为同一类簇,并将所述两个节点进行合并。
接着,在步骤208,根据合并之后的节点,更新所述邻接信息,更新后的所述邻接信息用于再次进行合并。
为了描述的清楚,我们将第一边连接的两个节点分别记为第一节点和第二节点。下面描述在不同情况下,第一节点和第二节点的合并,以及相关邻接信息的更新。
在一种情况下,第一节点和第二节点同时与第三节点连接。此时,在步骤206,可以将第一节点和第二节点归为同一类簇,并且,将第一节点和第二节点合并为第四节点。在步骤208,根据第一节点与第三节点的连接边的第一边长和第二节点与第三节点的连接边的第二边长,计算第四节点与第三节点的边长。
以图1所示的关系网络图为例,假定节点G和节点H之间的连接边GH是以G或H为中心的邻居节点集合中的最短边,且小于预设阈值,因此,GH属于前述的第一边。该第一边所连接的两个节点G和H分别为上述的第一节点和第二节点。节点G和节点H都与节点M(第三节点)有连接边。那么在步骤206,将节点G和节点H合并为节点X(第四节点)。然后,在步骤208,根据节点G与节点M之间的连接的边长L1,和节点H与节点M之间的连接边的边长L2,计算合并得到的节点X和节点M之间的连接边的边长。
更具体的,在该实施例的一个例子中,第四节点X与第三节点M的边长可以为第一边长L1和第二边长L2的平均值。在其他例子中,还可以对第一边长L1和第二边长L2进行加权求和后除以2,得到第四节点X与第三节点M的边长。加权求和的权重因子例如可以根据第一节点和第二节点的一些属性值而设定。
在另一种情况下,某条第一边连接的第一节点和第二节点中,第一节点与第三节点连接,第二节点未与第三节点连接。此时,在步骤206,同样地将第一节点和第二节点归为同一类簇,并且将第一节点和第二节点合并为第四节点;在步骤208,将第一节点与第三节点的连接边的边长,作为第四节点与第三节点的连接边的边长。
以图1所示的关系网络图为例,假定节点A和节点B之间的连接边AB是以A或B为中心的邻居节点集合中的最短边,且小于预设阈值,因此,AB属于前述的第一边。该第一边所连接的两个节点A和B分别为上述的第一节点和第二节点。节点A与节点C(第三节点)之间有连接边,节点B与节点C之间没有连接边。那么在步骤206,将节点A和节点B合并为节点Y(第四节点),在步骤208,将节点A与节点C之间的边长L用作合并后得到的节点Y和节点C之间的边长。
图3示出了更新后的关系网络图。在图3中,经过对图1的关系网络图的一次遍历迭代,将图1中的节点G和节点H归为一个类簇,且合并为节点X;将节点A和节点B归为一个类簇,且合并为节点Y。并且,通过以上结合实施例描述的方式,确定了合并得到的节点与原有节点之间的边长,从而更新了邻接信息。更新后的邻接信息记录了图3所示的关系网络图中的节点之间有无连接,以及连接边的边长。
于是,接下来,就可以基于更新后的邻接信息,进行下一次的遍历迭代和节点合并,反复执行图2所示的过程,直到无法找到满足阈值条件的第一边。
通过以上过程可以看到,在一次遍历迭代中,可以基于关系网络图中的各节点之间的邻居关系,以k阶邻居为界得到多个邻居节点集合,进而得到多个局部最短边;并在该轮迭代中,判断多个局部最短边中的每个局部最短边是否小于预设阈值;然后,将小于预设阈值的局部最短边连接的节点合并,从而实现了在一轮迭代中,合并多条边两端的节点,即实现了在一轮迭代中聚类多条边对应的多个节点对,显著加快聚类速度,提高计算效率。
可选的,在一个实施例中,根据上述步骤204确定出的第一边的数目确定后续的合并方式。当第一边数目大于1时,再次执行如图2所示的流程,基于局部最短边并行进行节点合并;当第一边数目为1时,可以直接基于全图最短边进行节点合并。
图4示出根据一个实施例的节点聚类方法流程图。图4中的步骤200到208与图2相同,不再赘述。
如图4所示,在步骤208之后,在步骤2010,判断步骤204确定的第一边的数目是大于1或者是等于1(如果本轮迭代步骤204没有确定出第一边,则计算终止,不再进行后续步骤)。如果第一边的数目大于1,那么在进行完本轮迭代中的步骤208后,根据本轮迭代中的步骤208得到的邻接信息进行下轮迭代,依次进行步骤202、步骤204、步骤206、步骤208。
当所述第一边的数目为1时,在更新所述邻接信息后,图4的实施例提供的对关系网络图中的节点进行聚类的方法还包括:步骤2012、根据更新后的邻接信息,确定更新后的关系网络图中的最短边;步骤2014、当所述最短边小于所述预设阈值时,合并所述最短边所连接的两个节点;步骤2016、根据合并后的节点,再次更新所述邻接信息。
可以理解,在步骤204中,只确定出一个第一边时,表明在该轮迭代之后,全局至多还有一对可以合并的节点,因此可以不必再分别确定各个邻居节点集合和局部最短边。也就是,在进行完本次迭代后,即进行了本轮迭代中的步骤208后,在新的一轮迭代中,可以不再返回到步骤202,而是在更新后的关系网络图中直接确定最短边(即确定关系网络图全局中的最短边),并判断所述最短边是否小于所述预设阈值。如果最短边小于预设阈值,则合并所述最短边所连接的两个节点;根据合并后的节点,再次更新所述邻接信息。然后根据再次更新后的邻接信息再次从更新后的关系网络图中直接确定最短边,以及后续的判断、节点合并步骤。当从更新后的关系网络图中确定的最短边不小于所述预设阈值时,计算终止。如此,可以进一步加快节点聚类的计算速度。
综合以上,通过本说明书实施例的方案,可以在一次遍历迭代中,找出多个局部最短边,并行地对这多个局部最短边对应的多个节点对进行合并和聚类,从而提高聚类计算的效率。在关系网络图比较稀疏的情况下,会存在大量的局部最短边可以在同一轮迭代中得到合并,从而极大提高计算效率。
进一步地,在关系网络图涉及节点众多的情况下,往往通过分布式存储,将关系网络图分别存储在多个设备中,每台设备只存储关系网络图的一部分邻接信息。此时,可以使得多个设备各自并行地对自己存储的关系网络图部分进行节点聚类。仅在计算k阶邻居以及节点合并中涉及其他设备存储的节点时,与其他设备进行通信。此处的通信过程可以基于参数服务器高效实现,如此,通过多个设备的并行计算进一步提升节点聚类的计算效率。
另一方面,本说明书的实施例提供了一种对关系网络图中的节点进行聚类的装置500,所述关系网络图包括多个节点。参考图5,所述装置500包括:邻接信息获取单元501,配置为获取所述关系网络图的邻接信息,所述邻接信息记录了各个节点之间是否具有连接边,以及连接边的边长;第一确定单元502,配置为确定以各个节点为中心节点的各个邻居节点集合,以及各个邻居节点集合中节点之间的最短连接边;其中,所述邻居节点集合包括对应的中心节点,以及与该对应的中心节点的连接阶数不超过预定阶数k的邻居节点,k为大于1的整数;第二确定单元503,配置为确定各个最短连接边中边长小于预设阈值的至少一个第一边;节点合并单元504,配置为对于各个第一边,将第一边连接的两个节点聚为同一类簇,并将所述两个节点进行合并;更新单元505,配置为根据合并之后的节点,更新所述邻接信息,更新后的所述邻接信息用于再次进行节点合并。
在一个实施例中,所述关系网络图中的节点对应于样本,所述连接边的边长对应于样本之间的相似度或关联紧密度。
在一个实施例中,所述邻接信息获取单元501配置为:获取所述关系网络图的邻接矩阵,通过所述邻接矩阵确定相互连接的节点;获取各个节点的嵌入向量;根据各个节点的嵌入向量计算所述相互连接的节点之间的连接边的边长。
在一个实施例中,所述邻接信息获取单元501配置为:获取所述关系网络图的距离矩阵,所述距离矩阵用作所述邻接信息。
在一个实施例中,所述第一确定单元502配置为:遍历所述关系网络图的邻接信息,以得到各个节点的1阶邻居节点;对于各个节点,将其n阶邻居节点的1阶邻居节点中的第一邻居作为各个节点的n+1阶邻居节点,添加到该节点对应的邻居节点集合中,直到n达到k-1;其中,第一邻居为各个节点的n阶邻居的1阶邻居中排除了各个节点的n-1阶邻居后得到的邻居节点。
在一个实施例中,所述装置还包括最短边确定单元506,配置为所述至少一个第一边的数目为1时,根据更新后的邻接信息,确定更新后的关系网络图中的最短边;并且,节点合并单元配置504为:当所述最短边小于所述预设阈值时,合并所述最短边所连接的两个节点;更新单元505配置为:根据合并后的节点,再次更新所述邻接信息。
在一个实施例中,所述第一边连接的两个节点分别为第一节点和第二节点,第一节点和第二节点同时与第三节点连接,节点合并单元504配置为:将第一节点和第二节点合并为第四节点;更新单元505配置为:根据第一节点与第三节点的连接边的第一边长和第二节点与第三节点的连接边的第二边长,计算第四节点与第三节点的边长。
在一个实施例中,所述第一边连接的两个节点分别为第一节点和第二节点,第一节点与第三节点连接,第二节点未与第三节点连接,节点合并单元504配置为:将第一节点和第二节点合并为第四节点;更新单元505配置为:将第一节点与第三节点的连接边的边长,作为第四节点与第三节点的连接边的边长。
装置500的各功能单元的功能可以参考图2所示的方法实现,此次不在赘述。
基于关系网络图中的各节点之间的邻居关系可以确定各个节点的邻居节点集合,可以得到多个节点集合;在一轮迭代中,可以确定出多个节点集合中的局部最短边,即在一轮迭代中,可以得到多个局部最短边;并在该轮迭代中,判断多个局部最短边中的每个局部最短边是否小于预设阈值;然后,将小于预设阈值的局部最短边连接的节点合并,从而实现了在一轮迭代中,合并多条边两端的节点,即实现了在一轮迭代中消除多条边,提高了计算效率。
另一方面,本说明书的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图2所示的方法。
另一方面,本说明书的实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图2所示的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。