基于动态K个中心点图划分与简化的图直径算法及系统的制作方法

文档序号:16846619发布日期:2019-02-12 22:22阅读:317来源:国知局
基于动态K个中心点图划分与简化的图直径算法及系统的制作方法

本发明涉及互联网技术领域,尤其涉及一种基于动态k个中心点图划分与简化的图直径算法。



背景技术:

图直径度量连通图中所有两个顶点间最短路径中最长者的长度。它是一个基本的图参数,被广泛应用于各种领域。计算图准确直径的时间复杂度是指数级别的,基于图分解与简化后进行图直径近似计算是降低图直径计算复杂度的有效手段。

2016年世界领先的研究型大学帕多瓦大学的geppinopucci教授等人使用并行分布式框架mapreduce进一步提高其计算效率,该算法以下简称cl-diam算法。

cl-diam算法通过对大规模图进行多次图分解和简化,将图的规模降低到一个可以较短时间直接求准确直径的范围,据此所得的简化图称为商图。然后以商图的准确直径作为原图的近似直径。该算法以随机的方式来选取簇集中心点,而每一步的简化图是由所选的中心点和剩余的未被覆盖的点组成,这会导致每次运行的结果带有随机性,即不确定。另外,随机选的中心点不一定能捕捉原图最短路径相关的尽可能多的关键信息,给近似直径的计算带来较大的误差。

根据我们的深入调研,该算法存在运算结果不确定、准确性不高的问题。



技术实现要素:

本发明提供一种基于动态k个中心点图划分与简化的图直径算法,解决的技术问题是cl-diam算法运算结果不确定、准确性不高的问题。

为解决上述技术问题,本发明采用以下技术方案:

第一方面,本发明实施例提供了一种基于动态k个中心点图划分与简化的图直径算法,包括:

步骤s1:选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合;所述k为大于零的整数;

步骤s2:根据所述簇集中心点集合按照第一扩张参数,得到第一簇集;

步骤s3:对所述第一簇集中当前未覆盖的顶点数量与已覆盖的顶点数量进行判断,若所述第一簇集中当前未覆盖的顶点大于已覆盖的顶点数,更新第一扩张参数并执行步骤s2;若所述第一簇集中当前未覆盖的顶点小于等于已覆盖的顶点数,则将已覆盖顶点的边转移并合并到距离其最近的中心点,然后从图中删除该已覆盖顶点,并执行步骤s4;

步骤s4:判断收缩后的未覆盖的顶点的数量是否小于预设阈值,若未覆盖的顶点数量大于预设阈值,则执行步骤s1;若未覆盖的顶点数量小于等于预设阈值,则进行构建商图操作。

结合第一方面,在第一种可能的实现方式中,所述选取当前图的k个顶点加入到簇集中心点集合之前,包括:

根据输入参数与当前图所有顶点数目确定所述k值;所述输入参数用于控制所述商图的规模。

结合第一方面,在第二种可能的实现方式中,

选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合,包括:

利用顶点的度和与其邻居及邻居间的边权值,计算未覆盖顶点的近似中心性,选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合。

结合第一方面,在第三种可能的实现方式中,所述更新第一扩张参数,具体包括:将第一扩张参数更新为第二扩张参数,所述第二扩张参数为所述第一扩展参数的至少两倍,并得到与第二扩张参数相对应的第二簇集。

结合第一方面,在第四种可能的实现方式中,所述判断收缩后的未覆盖的顶点的数量是否小于预设阈值之前包括:通过初始化的参数和当前图中所有顶点的数量确定预设阈值;所述初始化的参数包括所述输入参数和所述第一扩张参数,或所述输入参数和更新后的所述第一扩张参数。

结合第一方面,在第五种可能的实现方式中,所述构建商图操作包括:将所述当前图图中所有未覆盖的顶点全部设为中心点。

第二方面,本发明实施例提供了一种基于动态k个中心点图划分与简化的图直径近似系统,包括:

选择模块,用于选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合;

扩张模块,用于根据所述簇集中心点集合按照第一扩张参数,得到第一簇集;

判断模块,用于对所述第一簇集中当前未覆盖的顶点数量与已覆盖的顶点数量进行判断,若所述第一簇集中当前未覆盖的顶点大于已覆盖的顶点数,更新第一扩张参数并执行扩张模块;若所述第一簇集中当前未覆盖的顶点小于等于已覆盖的顶点数,则将已覆盖顶点的边转移并合并到距离其最近的中心点,然后从图中删除该已覆盖顶点,并执行收缩模块;

收缩模块,用于判断收缩后的未覆盖的顶点的数量是否小于预设阈值,

若未覆盖的顶点数量大于预设阈值,则执行选择模块;

若未覆盖的顶点数量小于等于预设阈值,则进行构建商图操作。

结合第二方面,在第一种可能的实现方式中,基于动态k个中心点图划分与简化的图直径近似系统,包括:确定模块,用于在选取当前图的k个顶点作为簇集中心点之前,根据输入参数与当前图所有顶点数目确定所述k值;所述输入参数用于控制所述商图的规模。

第三方面,本发明实施例提供了一种电子装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,执行上述第一方面或第一方面的任意一种可能的设计中所述的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行上述第一方面或第一方面的任意一种可能的设计中所述的方法。

本发明提供的基于动态k个中心点图划分与简化的图直径算法,通过设计顶点中心性度量模型,用顶点的度数和边权值估算其介数中心性;顶点准确的介数中心性计算复杂度非常高,采用其直接邻接点的信息估算将大大降低计算复杂度;

基于动态top-k中心点图划分与简化的图直径近似算法首先选取近似中心性最高的k个顶点作为中心进行簇集扩张和图的简化,可以优化当前图的划分和简化效果,得到的商图直径与原图直径的近似度得到提高;

根据top-k介数中心度近似值选取的顶点作为中心扩张集群可覆盖尽可能多的顶点,减少图划分和简化的迭代次数,提高运算效率。

附图说明

图1为本发明实施例提供的基于动态k个中心点图划分与简化的图直径算法流程图;

图2为本发明实施例提供的一种基于动态k个中心点图划分与简化的图直径近似系统。

图3为本发明实施例提供的电子装置结构示意图。

具体实施方式

下面结合附图具体阐明本发明的实施方式,实施例的给出仅仅是为了说明目的,并不能理解为对本发明的限定,包括附图仅供参考和说明使用,不构成对本发明专利保护范围的限制,因为在不脱离本发明精神和范围基础上,可以对本发明进行许多改变。

本发明实施例提供的一种基于动态k个中心点图划分与简化的图直径算法适用于互联网的应用场景,例如应用于估计路由器之间的最大响应时间、社交网络领域估计信息发送时间、分析网络社区结构以及量化社区结构特性。

本发明实施例提出了一种面向所有两个顶点间最短路径的顶点中心性度量模型,并据此设计了一种基于动态top-k中心点选择进行图划分与简化,然后快速计算图直径的算法。

本发明实施例描述中,“第一”、“第二”等词汇,仅用于区分描述,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

以下结合附图及实施例对本发明作进一步详细说明。

如图1所示,本发明实施例提供一种基于动态k个中心点图划分与简化的图直径算法,包括:

步骤s1:选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合;所述k为大于零的整数;

所述选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合,具体包括:利用顶点的度和与其邻居及邻居间的边权值,计算未覆盖顶点的近似中心性,选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合;选取所述当前图中近似介数中心性最高的k个顶点作为簇集中心点集合。

本发明实施例提供的基于动态k中心点图划分与简化的图直径近似算法,考虑到了每个顶点在图中的介数中心性的度量复杂度非常高,等同于计算任意两点加最短距离的复杂度。为了减少其计算复杂度,设计函数根据每个顶点的度和边权值近似计算其介数中心性,根据顶点的近似介数中心性选取top-k顶点为中心,尽可能保留介数中心性高的顶点为中心点,即尽量保留最短路径上的点,这有望提高算法的准确度;同时,选取图中的介数中心性高的点作为簇集中心点,可以在一定程度上减少算法的迭代次数,减少由于顶点中心性近似度量和中心点选择带来的运行期开销。

步骤s2:根据所述簇集中心点集合按照第一扩张参数,得到第一簇集;

步骤s3:对所述第一簇集中当前未覆盖的顶点数量与已覆盖的顶点数量进行判断,

若所述第一簇集中当前未覆盖的顶点大于已覆盖的顶点数,更新第一扩张参数并执行步骤s2;

所述更新第一扩张参数,具体包括:将第一扩张参数更新为第二扩张参数,所述第二扩张参数为所述第一扩展参数的至少两倍,并得到与第二扩张参数相对应的第二簇集。扩张参数是指一个中心点到其它顶点的距离的最大值。若中心点与一个顶点之间距离小于等于limit值,那么这个顶点在扩张范围内。在其他条件确定的条件下参数数值越大,则算法结束时顶点数量就越多。

若所述第一簇集中当前未覆盖的顶点小于等于已覆盖的顶点数,则将已覆盖顶点的边转移并合并到距离其最近的中心点,然后从图中删除该已覆盖顶点,并执行步骤s4;

步骤s4:判断收缩后的未覆盖的顶点的数量是否小于预设阈值,

若未覆盖的顶点数量大于预设阈值,则执行步骤s1;

若未覆盖的顶点数量小于等于预设阈值,则进行构建商图操作。

所述构建商图操作包括:将所述当前图图中所有未覆盖的顶点全部设为中心点。

具体来说,本发明实施例提供一种基于动态k个中心点图划分与简化的图直径算法对图进行多次划分与简化操作,每次进行图划分操作时,会基于当前图的拓扑结构去计算顶点的局部中心性,并以此选择新的中心点进行图划分,将图的顶点划分为不同的簇集。然后进行图简化操作,即删除各簇集中除中心点以外的顶点并更新相应的中心点与剩余点间的边和权值,从而达到简化图的效果。经过多次划分和简化后会得到一个小规模图,即商图,然后计算此商图的准确直径,并以此作为原图的近似直径。实验结果表明该算法在保持现有算法的计算复杂度同时提高了近似直径的准确度,获得近似直径与实际直径相比,其近似比小于1.4。

作为一个可选的实施方式,所述选取当前图的k个顶点作为簇集中心点之前,包括:

根据输入参数与当前图所有顶点数目确定所述k值;所述输入参数用于控制所述商图的规模。通过输入参数τ,可以计算出输入参数用于控制商图的规模,并以这个数值来限制cl-diam算法得到的商图的顶点数,以此来限制商图的规模。输入参数一般大于100小于10000。输入的参数越小,算法完成时得到的图顶点数量越少。通过这个参数,控制最后未覆盖的顶点数小于8τlogn。n为当前图所有顶点的数目。

作为一个可选的实施方式,所述判断收缩后的未覆盖的顶点的数量是否小于预设阈值之前包括:通过初始化的参数和当前图中所有顶点的数量确定预设阈值;所述初始化的参数包括所述输入参数和所述第一扩张参数,或所述输入参数和更新后的所述第一扩张参数。

如图2所示,本发明实施例提供一种基于动态k个中心点图划分与简化的图直径近似系统200,包括:

选择模块,用于选取当前图中未覆盖顶点近似中心性最高的k个顶点加入到簇集中心点集合;所述k为大于零的整数;

扩张模块,用于根据所述簇集中心点集合按照第一扩张参数,得到第一簇集;

判断模块,用于对所述第一簇集中当前未覆盖的顶点数量与已覆盖的顶点数量进行判断,若所述第一簇集中当前未覆盖的顶点大于已覆盖的顶点数,更新第一扩张参数并执行扩张模块;若所述第一簇集中当前未覆盖的顶点小于等于已覆盖的顶点数,则将已覆盖顶点的边转移并合并到距离其最近的中心点,然后从图中删除该已覆盖顶点,并执行收缩模块;

收缩模块,用于判断收缩后的未覆盖的顶点的数量是否小于预设阈值,

若未覆盖的顶点数量大于预设阈值,则执行选择模块;

若未覆盖的顶点数量小于等于预设阈值,则进行构建商图操作。

本发明实施例提供的一种基于动态k个中心点图划分与简化的图直径近似系统,还包括:确定模块,用于在选取当前图的k个顶点加入到簇集中心点集合之前,根据输入参数与当前图所有顶点数目确定所述k值;所述输入参数用于控制所述商图的规模。本发明实施例提供一种电子装置,请参阅图3,该电子装置包括:

存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序,处理器302执行该计算机程序时,实现前述图1所示实施例中描述的基于动态k中心点图划分与简化的图直径近似算法。

进一步的,该电子装置还包括:

至少一个输入设备303以及至少一个输出设备304。

上述存储器301、处理器302、输入设备303以及输出设备304,通过总线305连接。

其中,输入设备303具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备304具体可为显示屏。

存储器301可以是高速随机存取记忆体(ram,randomaccessmemory)存储器,也可为非不稳定的存储器(non-volatilememory),例如磁盘存储器。存储器301用于存储一组可执行程序代码,处理器302与存储器301耦合。

进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述图3所示实施例中的存储器。该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述图1所示实施例中描述的基于动态k个中心点图划分与简化的图直径近似算法。进一步的,该计算机可存储介质还可以是u盘、移动硬盘、只读存储器(rom,read-onlymemory)、ram、磁碟或者光盘等各种可以存储程序代码的介质。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本申请所提供的基于动态k个中心点图划分与简化的图直径近似算法方法、电子装置及计算机可读存储介质的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1