一种识别网络图中关键节点的分布式方法与流程

文档序号:11155641阅读:778来源:国知局
一种识别网络图中关键节点的分布式方法与制造工艺

本发明涉及分布式图计算领域,具体涉及一种识别网络图中关键节点的分布式方法。



背景技术:

网络图中的关键节点在图的组织和信息传播中起着枢纽作用,对图中关键节点进行标识和发现是图中的一个重要研究方向,有着广阔的应用场景和重要的应用价值。例如,社交网络成员中的关键节点通常具有更大的影响力或者是更强的信息传播能力,找到社交网络中的关键节点可以分析甚至影响社交网络中的消息传播。在计算机网络拓扑中对关键节点进行保护可以提升整个网络的鲁棒性,而对关键节点进行攻击会起到事半功倍的效果。

识别网络图中关键节点的一类重要方法是计算图中节点的中心度,包括距离中心度、谱中心度和桥接中心度等。其中桥接中心度是研究关键节点中常用的一种中心度度量,它可以用来衡量节点在网络图连通和信息传播中的重要程度。具有较高桥接中心度的节点代表着该点对图中的其他顶点的控制能力越大。近年来,桥接中心度在网络拓扑结构重要节点度量、关系网络研究等领域得到了广泛的应用。

针对不同场景中的桥接中心度计算,相关工作已经给出了多种计算方法。但是传统的计算桥接中心度的方法主要为集中式算法,即假设图存储在一台物理机上,并基于单机实现图的存储和计算,由于中心度计算算法的时间空间复杂度较高,集中式算法能够处理的图规模受到单机内存大小的限制,而且单机有限的处理能力也很大程度上影响了算法的执行效率,目前计算中心度的最好算法是由Brandes在2001年提出的,在这里称为FABC(Faster Algorithm for Betweenness Centrality)算法,但随着图规模的不断增加,算法的处理效率下降明显,严重影响了算法的应用范围,急需研究集群环境下的分布式算法。



技术实现要素:

针对现有技术的不足,本发明提供一种识别网络图中关键节点的分布式方法,采用Graphlab框架来实现,不仅支持基于消息的编程模型,而且支持共享内存风格的“收集‐更新‐扩散”模型,能够获得更快的运行速度,并且随着集群规模的扩大,可以支持在更大规模的图中计算关键节点。

本发明的目的是采用下述技术方案实现的:

一种识别网络图中关键节点的分布式方法,其改进之处在于,所述方法包括:

采用点切分方式将网络图切分到n台机器上,n为正整数;

选择工作节点,分别对所述工作节点的消息和所述工作节点的后继节点的消息进行初始化,其中,所述工作节点的后继节点的消息为工作节点至工作节点的后继节点的最短路径个数和最短路径;

更新所述工作节点的后继节点的消息,并将更新后所述工作节点的后继节点的消息发送至所述工作节点的后继节点的出边邻居节点;

确定所述工作节点的后继节点的单点依赖,并将所述工作节点的后继节点消息中最短路径个数和所述工作节点的后继节点的单点依赖发送至所述工作节点的后继节点的入边邻居节点;

根据网络图中节点的单点依赖确定节点的桥接中心度。

优选的,所述采用点切分方式将网络图切分到n台机器上包括:

将网络图中节点复制为x份节点分别存储在x台机器上,所述网络图中的边不复制,其中,所述x份节点存储在1个master节点,x-1个mirror节点,x≤n;

未被复制的节点为普通节点。

优选的,所述选择工作节点,分别对所述工作节点的消息和所述工作节点的后继节点的消息进行初始化包括:令所述工作节点的后继节点的消息的最短路径个数为0,最短路径为-1,令所述工作节点的消息的最短路径个数为1,最短路径为-1。

优选的,所述更新所述工作节点的后继节点的消息包括:

若工作节点的后继节点为普通节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

其中,所述工作节点的后继节点的入边邻居节点的消息包括:所述工作节点至工作节点的后继节点的入边邻居节点的最短路径个数和最短路径。

优选的,所述更新所述工作节点的后继节点的消息包括:

若工作节点的后继节点为master节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

接收工作节点的后继节点对应的全部mirror节点的消息,并根据每条工作节点的后继节点对应的mirror节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点对应的mirror节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点对应的mirror节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加所述工作节点的后继节点对应的mirror节点的消息的最短路径个数的和;

将所述工作节点的后继节点的消息同步至工作节点的后继节点对应的全部mirror节点。

优选的,所述更新所述工作节点的后继节点的消息包括:

若工作节点的后继节点为mirror节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

将所述工作节点的后继节点的消息发送至工作节点的后继节点对应的master节点,若工作节点的后继节点对应的master节点更新完毕,则将工作节点的后继节点对应的master节点的消息同步至所述工作节点的后继节点。

优选的,所述确定所述工作节点的后继节点的单点依赖包括:

若工作节点的后继节点u为普通节点节点,则计算工作节点的后继节点u的单点依赖公式为:

式(1)中,wi为工作节点的后继节点u的第i个出边邻居节点,p为工作节点的后继节点u的出边邻居节点总数,δ(u)为工作节点的后继节点u的单点依赖,δ(wi)为工作节点的后继节点u的第i个出边邻居节点的单点依赖,σu为工作节点的后继节点u消息中最短路径个数,为工作节点的后继节点u的第i个出边邻居节点的短路径个数,若为0,则令δ(u)=0;

若工作节点的后继节点为master节点,则计算工作节点的后继节点的单点依赖公式为:

式(2)中,wi为工作节点的后继节点u的第i个出边邻居节点,p为工作节点的后继节点u的出边邻居节点总数,δ(u)为工作节点的后继节点u的单点依赖,δ(wi)为工作节点的后继节点u的第i个出边邻居节点的单点依赖,σu为工作节点的后继节点u消息中最短路径个数,为工作节点的后继节点u的第i个出边邻居节点的短路径个数,q为工作节点的后继节点u对应的mirror节点的总数,vt为工作节点的后继节点u对应的第t个mirror节点,δ(vt)为工作节点的后继节点u对应的第t个mirror节点的单点依赖,为工作节点的后继节点u对应的第t个mirror节点的消息中最短路径个数,其中,若为0,则令若为0,则令

若工作节点的后继节点为mirror节点,则根据下述步骤计算节点u的单点依赖:

(1)根据公式(1)确认工作节点的后继节点u的初始单点依赖;

(2)将所述工作节点的后继节点u的初始单点依赖发送至工作节点的后继节点u对应的master节点;

(3)若工作节点的后继节点u对应的master节点更新完毕,则将工作节点的后继节点 u对应的master节点的单点依赖同步至所述工作节点的后继节点u。

优选的,所述根据网络图中节点的单点依赖确定节点的桥接中心度包括:

根据网络图中节点v至其全部前继工作节点的单点依赖确定所述节点v的桥接中心度CB(v),公式为:

式(3)中,m为节点v前继工作节点的总数,δs(v)为节点v至第s个前继工作节点的单点依赖。

与最接近的现有技术相比,本发明具有的有益效果:

本发明提供的一种识别网络图中关键节点的分布式方法,采用Graphlab框架来实现,不仅支持基于消息的编程模型,而且支持共享内存风格的“收集-更新-扩散”模型,与现有技术相比,在求解网络图中节点的最短路径个数及桥接中心度的过程中,能够获得更快的运行速度,并且随着集群规模的扩大,可以支持在更大规模的图中计算关键节点。

附图说明

图1是本发明提供的一种识别网络图中关键节点的分布式方法流程图;

图2是本发明提供的一种识别网络图中关键节点的分布式方法的应用场景示意图;

图3是本发明提供的一种识别网络图中关键节点的分布式方法的应用场景示意图;

图4是本发明提供的一种识别网络图中关键节点的分布式方法的测试结果对比图;

图5是本发明提供的一种识别网络图中关键节点的分布式方法在机器数量上与运行时间的关系图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步的详细说明。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明提供了一种识别网络图中关键节点的分布式方法,如图1所示,包括:

S1、采用点切分方式将网络图切分到n台机器上,n为正整数;

S2、选择工作节点,分别对所述工作节点的消息和所述工作节点的后继节点的消息进行 初始化,其中,所述工作节点的后继节点的消息为工作节点至工作节点的后继节点的最短路径个数和最短路径;

S3、更新所述工作节点的后继节点的消息,并将更新后所述工作节点的后继节点的消息发送至所述工作节点的后继节点的出边邻居节点;

S4、确定所述工作节点的后继节点的单点依赖,并将所述工作节点的后继节点消息中最短路径个数和所述工作节点的后继节点的单点依赖发送至所述工作节点的后继节点的入边邻居节点;

S5、根据网络图中节点的单点依赖确定节点的桥接中心度。

具体的,所述步骤S1包括:

S11、将网络图中节点复制为x份节点分别存储在x台机器上,所述网络图中的边不复制,其中,所述x份节点存储在1个master节点,x-1个mirror节点,x≤n;

S12、未被复制的节点为普通节点。

例如:如图2所示的应用场景中,网络图中包括节点a、b、c、d和e,将节点c和d分别复制成2份存储在机器1和机器2上如图3所示,其中,节点c和d为master节点,c1和d1为mirror节点,节点a、b和e为普通节点;

所述S2包括:

S21、令所述工作节点的后继节点的消息的最短路径个数为0,最短路径为-1,令所述工作节点的消息的最短路径个数为1,最短路径为-1。

例如:如图3所示的应用场景中,若节点a为工作节点,则节点a的消息的初始最短路径个数为1,初始最短路径为-1。

所述S3包括:

S31、若工作节点的后继节点为普通节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

其中,所述工作节点的后继节点的入边邻居节点的消息包括:所述工作节点至工作节点的后继节点的入边邻居节点的最短路径个数和最短路径;若节点存在多个入边邻居节点,则重复多次上述更新节点消息的操作;

例如:如图3所示的应用场景中,节点a、b和e为普通节点,选择节点a为工作节点,则节点a的消息的最短路径个数为1,最短路径为-1,节点a不存在入边邻居节点,则节点a的入边邻居节点的短路径个数为0,最短路径为0;节点a的最短路径为-1小于0,则更新节点a的消息的最短路径为-1加1等于0,更新节点a消息的最短路径个数为节点a的入边邻居节点的短路径个数为0加上节点a的消息的最短路径个数为1等于1;

节点b的消息的最短路径个数为0,最短路径为-1,节点b的消息的最短路径为-1小于0,则更新节点b的消息的最短路径为节点b的入边邻居节点a的最短路径0加1等于1,更新节点b的消息的最短路径个数为节点b的入边邻居节点a的消息的最短路径1加上节点b的消息的最短路径0等于1;

S32、若工作节点的后继节点为master节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

接收工作节点的后继节点对应的全部mirror节点的消息,并根据每条工作节点的后继节点对应的mirror节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点对应的mirror节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点对应的mirror节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加所述工作节点的后继节点对应的mirror节点的消息的最短路径个数的和;

将所述工作节点的后继节点的消息同步至工作节点的后继节点对应的全部mirror节点。

S33、若工作节点的后继节点为mirror节点,则接收的工作节点的后继节点的全部入边邻居节点的消息,并根据每条工作节点的后继节点的入边邻居节点的消息对工作节点的后继节点的消息进行下述操作:

判断所述工作节点的后继节点的消息的最短路径是否小于0,若是,则更新所述工作节点的后继节点的消息的最短路径为所述工作节点的后继节点的入边邻居节点的消息的最短路径加1,更新所述工作节点的后继节点的消息的最短路径个数为所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;若否,则更新所述工作节点的后继节点的消息的最短路径个数等于所述工作节点的后继节点的消息的最短路径个数加上所述工作节点的后继节点的入边邻居节点的消息的最短路径个数的和;

将所述工作节点的后继节点的消息发送至工作节点的后继节点对应的master节点,若工作节点的后继节点对应的master节点更新完毕,则将工作节点的后继节点对应的master节点的消息同步至所述工作节点的后继节点。

所述S4包括:

S41、若工作节点的后继节点u为普通节点节点,则计算工作节点的后继节点u的单点依赖公式为:

式(1)中,wi为工作节点的后继节点u的第i个出边邻居节点,p为工作节点的后继节点u的出边邻居节点总数,δ(u)为工作节点的后继节点u的单点依赖,δ(wi)为工作节点的后继节点u的第i个出边邻居节点的单点依赖,σu为工作节点的后继节点u消息中最短路径个数,为工作节点的后继节点u的第i个出边邻居节点的短路径个数,若为0,则令δ(u)=0;

其中,若工作节点的后继节点u不存在出边邻居节点,则工作节点的后继节点u的出边邻居节点的短路径个数为0,工作节点的后继节点u的出边邻居节点的单点依赖为0;

S42、若工作节点的后继节点为master节点,则计算工作节点的后继节点的单点依赖公式为:

式(2)中,wi为工作节点的后继节点u的第i个出边邻居节点,p为工作节点的后继 节点u的出边邻居节点总数,δ(u)为工作节点的后继节点u的单点依赖,δ(wi)为工作节点的后继节点u的第i个出边邻居节点的单点依赖,σu为工作节点的后继节点u消息中最短路径个数,σwi为工作节点的后继节点u的第i个出边邻居节点的短路径个数,q为工作节点的后继节点u对应的mirror节点的总数,vt为工作节点的后继节点u对应的第t个mirror节点,δ(vt)为工作节点的后继节点u对应的第t个mirror节点的单点依赖,为工作节点的后继节点u对应的第t个mirror节点的消息中最短路径个数,其中,若为0,则令若为0,则令

S43、若工作节点的后继节点为mirror节点,则根据下述步骤计算节点u的单点依赖:

(1)根据公式(1)确认工作节点的后继节点u的初始单点依赖;

(2)将所述工作节点的后继节点u的初始单点依赖发送至工作节点的后继节点u对应的master节点;

(3)若工作节点的后继节点u对应的master节点更新完毕,则将工作节点的后继节点u对应的master节点的单点依赖同步至所述工作节点的后继节点u。

所述S5包括:

S51、根据网络图中节点v至其全部前继工作节点的单点依赖确定所述节点v的桥接中心度CB(v),公式为:

式(3)中,m为节点v前继工作节点的总数,δs(v)为节点v至第s个前继工作节点的单点依赖。

实施例

采用本发明提供的一种识别网络图中关键节点的分布式方法和现有技术中FABC算法分别计算网络图中节点的桥接中心度:

使用8台物理服务器,服务器在内部局域网中通过千兆交换机互连。服务器的硬件配置如下:CPU Intel Xeon E5-26502.0GHZ 8Core,内存8GB,硬盘500GB。

使用的软件环境如下:操作系统64位Debian7,Graphlab2.2,OpenMPI1.6,编译环境为GCC 4.8,编程语言为C++。

如表1所示,采用真实数据集(数据集1)与模拟数据集(数据集2)两类数据进行评估:

数据集1

数据集2

在数据集1中图的顶点数从1000到4000的变化过程中,使用边数1的数据进行测试;数据集2包含真实数据集SNAP和另一组模拟数据。数据集2比数据集1具有更大的数据规模,用来测试在多台机器上算法的运行指标。

测试结果对比如图4所示,图中,DABC指代本发明提供的一种识别网络图中关键节点的分布式方法获取节点桥接中心度的时间比例曲线,FABC指代采用FABC算法获取节点桥接中心度的时间比例曲线;试验结果表明,采用本发明提供的一种识别网络图中关键节点的分布式方法获取节点桥接中心度比采用现有技术中FABC算法获取节点桥接中心度在时间上有了很大的提升,当顶点规模较小的时候,采用本发明提供的一种识别网络图中关键节点的分布式方法获取节点桥接中心度的时间仅为采用现有技术中FABC算法获取节点桥接中心度的时间的25%,当顶点规模较大的时候,依然具有明显的加速效果;

采用本发明提供的一种识别网络图中关键节点的分布式方法获取节点桥接中心度在机器数量上与运行时间的关系如图5所示,可以看出,加速效率随着机器数的增加其有所下降。主要原因是由于机器数增加后,各机器间需要协作的工作也相应增加,导致整体通信量有所增加。另外,机器数量增加后,各机器间的工作负载也可能会不均衡,导致等待时间增多。

最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

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