广东工业大学学报  2020, Vol. 37Issue (3): 36-41.  DOI: 10.12052/gdutxb.190156.
0

引用本文 

饶东宁, 林卓毅, 魏来. n-度中心度与k-压力中心度及其并行算法 [J]. 广东工业大学学报, 2020, 37(3): 36-41. DOI: 10.12052/gdutxb.190156.
Rao Dong-ning, Lin Zhuo-yi, Wei Lai. n-Degree and k-Stress Centrality with Parallel Algorithms [J]. JOURNAL OF GUANGDONG UNIVERSITY OF TECHNOLOGY, 2020, 37(3): 36-41. DOI: 10.12052/gdutxb.190156.

基金项目:

广东省自然科学基金资助项目(2016A030313700,2016A030313084)

作者简介:

饶东宁(1977–),男,副教授,博士,主要研究方向为智能规划、金融智能。

通信作者

林卓毅(1992–),男,硕士研究生,主要研究方向为金融智能,E-mail:13570113148@163.com

文章历史

收稿日期:2019-12-17
n-度中心度与k-压力中心度及其并行算法
饶东宁1, 林卓毅1, 魏来2    
1. 广东工业大学 计算机学院,广东 广州 510006;
2. 香港大学 经济与金融学院,中国 香港 999077
摘要: 网络中心度是网络分析的重要指标。文章提出n-度中心度和k-压力中心度以补充网络中心度的研究, 此外, 并行算法能提高大规模网络的计算效率。为此, 在设计网络中心度并行工具包的同时, 设计并实现n-度中心度和k-压力中心度的并行算法。工具包的设计基于Spark框架的Pregel方法, 并通过BoardEx社交网络测试性能。实验证明工具包的可行性与可拓展性。
关键词: 网络中心度    并行算法    工具包    Spark    Pregel    
n-Degree and k-Stress Centrality with Parallel Algorithms
Rao Dong-ning1, Lin Zhuo-yi1, Wei Lai2    
1. School of Computers, Guangdong University of Technology, Guangzhou 510006, China;
2. School of Economics and Finance, The University of Hong Kong, Hong Kong 999077, China
Abstract: Network centrality is important for network analysis. Therefore, n-Degree and k-Stress centrality are proposed to enrich the analysis options using network centrality. On the other hand, for large scale networks, parallel algorithms are necessary for fast computation. To this end, parallel algorithms for the n-Degree and k-Stress centrality are designed and implemented along with 11 existing centralities in a toolkit. The toolkit is based on Spark Pregel, and tested on the BoardEx social network. Experiments show the feasibility and scalability of the toolkit.
Key words: network centrality    parallel algorithm    toolkit    Spark    Pregel    

网络中心度及其并行算法设计实现是网络研究的热点。顶点的网络中心度[1]是对顶点在网络中的重要性的量化。数据随科技发展呈指数增长[2],网络的规模也日渐庞大。单机已难以实现大规模网络的存储和计算,多机分布式存储[3]与并行计算[4]逐渐成为发展趋势。因此,对网络的研究重点不仅在于网络中心度的研究,还在于网络计算的并行算法设计实现。

目前网络中心度并行算法的设计和实现尚未完善。在提出新的网络中心度时,研究者通常只实验于小型网络,没有考虑在大型网络的应用及并行算法的设计实现。此外,现有的并行算法实现较为分散,只有部分实现方法由Spark框架(https://spark.apache.org/)的GraphX模块提供。使用中心度进行网络分析研究时,需要额外开销来寻找其他中心度的并行算法实现。

本文设计基于Spark的网络中心度并行工具包,并提出n-度中心度和k-压力中心度及其并行算法。在设计并行工具包时,对度中心度和压力中心度进行补充拓展,提出n-度中心度和k-压力中心度。设计其并行算法并借助Spark框架的Pregel方法实现。通过BoardEx(https://corp.boardex.com/)社交网络进行实验测试性能,结果显示设计实现的并行算法有明显的并行加速效果。最后,把并行算法的实现方法与现有的11种网络中心度计算方法,整合成一个基于Spark框架的并行工具包。

1 相关工作

对网络的研究一方面在于提出全新的网络中心度,或综合已有的度量提出加权中心度。Singh等[5]提出综合考虑顶点在图中的全局和局部重要性的图论傅里叶变换中心度(GFT Centrality)。Medeiros等[6]提出基于准最短路径的介数中心度(ρ-Geodesic Betweenness Centrality),在计算介数中心度的时候不仅考虑最短路径,还加入以ρ作为阈值的准最短路径。饶东宁等[7]提出针对BoardEx金融社交网络的加权中心度,验证各公司的首席技术官和首席信息官的加权中心度与人员所在公司规模的相关性。王露等[8]基于网络拓扑结构综合全局信息和局部信息,提出加权的网络中心度。

另一方面,对网络的研究还在于网络计算的并行算法研究。乔少杰等[9]提出基于Spark的大规模网络社区并行发现算法,能处理更大规模更复杂的网络,运行时间及准确率比Hadoop平台有所提高。Ma等[10]在标签传播算法(Label propagation algorithm,LPA)的基础上提出基于概率和相似性的并行标签传播算法(Probability and similarity based parallel label propagation algorithm,PSPLPA),借助Spark的Pregel算法实现并行化,相较传统LPA效果更好速度更快。艾川等[11]借助Spark平台,实现超大规模网络传播计算实验算法,可高效进行大规模复杂网络中的信息传播仿真。

2 网络中心度定义

网络可用图G = (V, E)表示,其中VE表示顶点集和边集。顶点的网络中心度衡量顶点在网络中的重要性。对度中心度进行补充拓展,提出n-度中心度;受介数中心度(Betweenness Centrality)[1]k-介数中心度(k-Betweenness Centrality)[12]的启发,对压力中心度进行补充拓展,提出k-压力中心度。

2.1 传统网络中心度 2.1.1 度中心度(Degree Centrality)

度中心度[1]是以顶点的度作为网络中心度。度(Degree)是一个顶点在网络中邻居顶点的数量,在有向图中可分为入度(In-Degree)和出度(Out-Degree)。度中心度用式(1)表示。

$ {C_D}\left( i \right) = \sum\nolimits_j {x\left( {i,j} \right)} $ (1)

式(1)中, ${C_D}\left( i \right)$ 表示顶点i的度中心度,x(i,j)表示顶点i和顶点j(ij)的连接关系,如有连接为1否则为0。

2.1.2 压力中心度(Stress Centrality)

顶点的压力中心度[13]是其他顶点两两之间最短路径通过该顶点的路径数。压力中心度反映信息在网络中传递时顶点承受的压力大小,表示为

$ {C_S}\left( i \right) = \sum\nolimits_{s \ne i \ne t} {{\rho _{st}}\left( i \right)} $ (2)

式(2)中, ${C_S}\left( i \right)$ 表示顶点i的压力中心度,ρst(i)表示顶点s到顶点t经过顶点i的最短路径数。

2.2 n-度中心度和k-压力中心度 2.2.1 n-度中心度(n-Degree Centrality)

n-度中心度是顶点在n度内可以连接的顶点数量,也是与顶点距离不超过n的顶点数。在有向图中也可分为n-入度(n-In-Degree)和n-出度(n-Out-Degree)。相比度中心度只考虑顶点的邻居顶点数量,n-度中心度还考虑到邻居顶点以外n度以内的拓扑结构,通过更大的区域判断顶点的重要性,消除度中心度的局限性。n-度中心度用式(3)表示。

$ C_D^n\left( i \right) = \mathop \sum \nolimits_{i \ne j,d\left( {i,j} \right) \leqslant n} x\left( {i,j} \right) $ (3)

式(3)中, $C_D^n\left( i \right)$ 表示顶点的n-度中心度,d(i,j)表示顶点i和顶点j的最短距离,x(i,j)表示顶点i和顶点j(ij)的可达关系,如在n度内可到达则为1,否则为0。

2.2.2 k-压力中心度(k-Stress Centrality)

k-压力中心度是其他顶点两两之间长度不超过k的最短路径通过该顶点的路径数。k-压力中心度反映信息在网络中传递时(传递距离不超过k),顶点承受的压力大小。在社交网络中,有效的人际关系距离不远。加入信息传递距离的限制,k-压力中心度比压力中心度更适用于社交网络,更好地反映个人在人际网络中传递信息的能力。k-压力中心度为

$ C_S^k\left( i \right) = \mathop \sum \nolimits_{s \ne i \ne t,d\left( {s,t} \right) \leqslant k} {\rho _{st}}\left( i \right) $ (4)

式(4)中, $C_S^k\left( i \right)$ 表示顶点ik-压力中心度,d(s,t)表示顶点s到顶点t的最短距离,ρst(i)表示顶点s到顶点t经过顶点i的最短路径数。

3 并行算法设计与实现

基于Pregel的计算机制分别设计n-度中心度和k-压力中心度的并行算法,并通过Spark框架的Pregel API完成算法实现。

3.1 Pregel

Pregel[14]是一种用于图的迭代计算的并行计算模型。计算面向顶点,顶点有活跃或非活跃两种状态。每轮迭代称为一个超步,包括顶点处理(vprog),消息发送(sendMsg)和消息合并(mergeMsg) 3个过程。在一个超步中,(1) 顶点接收到上一超步邻居顶点发送来的不同消息,把所有消息通过mergeMsg合并为一条消息;(2) 顶点的属性与合并后消息由vprog处理,可能会更新属性;(3) 更新了属性的顶点处于活跃状态,只有活跃的顶点才会通过sengMsg向所有邻居顶点发送消息。

每次迭代重复步骤(1)~(3),直到所有顶点都处于非活跃状态即没有新消息产生,或迭代达到设定的最大迭代次数,迭代终止。

3.2 n-度中心度的并行算法

基于Pregel的计算机制,n-度中心度的并行算法设计见算法 1。算法流程解释如下:

(1) 初始化,把顶点集合(点集)作为顶点属性,用以存放可达顶点;

(2) 发送消息,把源点可达但终点不可达的顶点集合,从源点发送到终点;

(3) 合并消息,所有接收到的点集合并、去重,形成一个点集;

(4) 顶点处理,消息的点集与属性的点集合并,更新属性,加入的顶点是距离增加1后新增的可达顶点。

Algorithm 1. n-Degree Centrality algorithm

Input: Original graph, n.

Output: Computed graph.

1. // Initialization

2. for all vertex v∈vertices do

3.  create a vertex set S with v in it;

4. end for

5. // Pregel

6. while new messages are produced or iteration do not     reach n times do

7.  // Send message

8.   for all edge e∈edges do

9.    send the difference-set between S of source vertex      and S of destination vertex to destination vertex;

10.   end for

11.  // Merge message

12.   for all vertex v∈vertices do

13.   merge messages into a unique-set as msg;

14.   end for

15.  // Vertex program

16.   for all vertex v∈vertices do

17.   add all vertices of msg to S;

18.   end for

19. end while

20. // Centrality computation

21. for all vertex v∈vertices do

22.  count the vertices number in S;

23. end for

24. return computed graph.

初始化后,重复(2)(3)(4),直到迭代次数到达n时迭代终止。统计各顶点属性中可达顶点数量,即为n-度中心度。

3.3 k-压力中心度的并行算法

基于Pregel的计算机制,k-压力中心度的并行算法设计见算法 2。算法流程解释如下:

(1) 初始化,顶点的属性设置为映射关系(Map),其中key为顶点,value为key顶点到本顶点的最短路径(用顶点序列表示)集合;

(2) 发送消息,把源点已记录但终点未记录的顶点及最短路径集合,从源点发送至终点;

(3) 合并消息,所有消息中,对于同一顶点只保留路径长度最短的集合,如果有多个则合并成一个集合;

(4) 顶点处理,消息中的所有路径在尾部附上当前顶点,再把顶点和路径集合合并至本顶点属性的Map中。

初始化后,重复(2)(3)(4),直到迭代次数到达k时迭代终止。所有最短路径筛选出长度大于2的,并去除路径两端顶点,通过统计各顶点出现次数,得出k-压力中心度。

Algorithm 2. k-Stress Centrality algorithm

Input: Original graph, k.

Output: Computed graph.

1. // Initialization

2. for all vertex v∈vertices do

3.  create a map with v as key, S(P(v)) as value;

4.   // P is shortest-path represented by a vertex list, // S is a     set of shortest-paths.

5. end for

6. // Pregel

7. while new messages are produced or iteration do not     reach k times do

8.  // Send message

9.   for all edge e∈edges do

10.    send sub-map of source vertex that the keys are not      in the map of destination vertex to destination      vertex;

11.   end for

12.  // Merge message

13.   for all vertex v∈vertices do

14.    if path lengths of a key are different then

15.    keep the shortest paths and remove others;

16.    else

17.    merge paths into S of the key;

18.    end if

19.   end for

20.  // Vertex program

21.   for all vertex v∈vertices do

22.    for all P in msg do

23.    append v to P;

24.    end for

25.    for all S in msg do

26.    update the map with S;

27.    end for

28.   end for

29. end while

30. // Centrality computation

31. for all P in all vertices do

32.  remove vertices at the head and at the tail of P;

33.  count the times of each vertex appear in P;

34. end for

35. sum the counts of each vertex;

36. return computed graph.

3.4 并行算法的实现

n-度中心度和k-压力中心度的并行算法通过分布式框架Spark[15]的Pregel API实现。Pregel API调用方法如下。

Pregel. apply(graph, initialMsg, maxIterations, activeDirection) (vprog, sendMsg, mergeMsg)

其中,initialMsg是初始消息以供初始化;maxIterations是用户设置的最大迭代次数;activeDirection是消息发送方向;vprog,sendMsg,mergeMsg分别是用户自定义的顶点处理,消息发送,消息合并3个函数。将并行算法的顶点处理,消息发送,消息合并3个过程,以及自定义的初始消息和最大迭代次数传入Pregel API,即可完成并行算法的实现。

4 性能测试

n-度中心度和k-压力中心度的并行算法实现进行实验,测试算法并行加速效果。

4.1 实验环境

使用Spark集群进行实验。集群环境包括各机器的CPU、内核数、分配内存及硬盘等配置,如表1所示。

表 1 Spark集群配置 Table 1 Spark cluster configuration
4.2 实验数据

实验数据源自金融社交网络数据库BoardEx。BoardEx记录商业人士间的联系及各自的个人信息,企业间的联系及企业的详细信息。按美国、英国、欧洲和其他国家各地区划分,每个地区分别有个人网络和企业网络。BoardEx数据库中均是大规模社交网络,其中企业网络相比个人网络规模较小。实验选用英国地区的企业网络,测试n-度中心度和k-压力中心度的并行算法性能。该网络有45 185个顶点,80 418条边。

4.3 实验设计

使用算法加速比[16]测试两种算法的并行加速效果。算法加速比由式(5)表示。

$ S_p^m = \frac{{{t_s}}}{{t_p^m}} $ (5)

式(5)中, $S_p^m $ 表示m机集群的算法加速比,ts表示单机情况下算法运行时间, $t_p^m$ 表示在m机集群下算法运行时间。因此, $S_p^1$ =1。当 $S_p^m$ =m时,算法达到线性加速效果。实验过程中,从单机开始逐渐增加机器数量,每次记录同一网络在不同规模的集群中算法的运算时间。通过单机运算时间与多机运算时间之比,计算并行算法的加速比。

4.4 实验结果

实验一使用英国企业网络测试n-度中心度并行算法的加速效果。实验结果如图 1所示,展示在不同规模的集群下n-度中心度并行算法的加速比。结果表明n-度中心度并行算法通过拓展集群具有良好的加速效果,在6机集群下加速比均超过3。而随着迭代次数增加(增加n),加速效果下降。主要原因是消息随迭代次数的增加而变长,导致合并消息和顶点处理的时间开销更大。

图 1 n-度中心度并行算法加速效果 Figure 1 Speedup of n-degree centrality parallel algorithm

实验二使用英国企业网络测试k-压力中心度并行算法的加速效果。实验结果如图 2所示,展示在不同规模的集群下k-压力中心度并行算法的加速比。结果表明k-压力中心度并行算法通过拓展集群也有一定的加速效果,但效果不如n-度中心度并行算法。推测原因是算法使用更复杂的消息类型,机器内存受限导致频繁进行垃圾清理,而清理的时间无法通过并行加速。同样的,随迭代次数增加算法的加速效果下降,但不及n-度中心度并行算法加速效果下降得明显。

图 2 k-压力中心度并行算法加速效果 Figure 2 Speedup of k-stress centrality parallel algorithm
5 网络中心度并行工具包设计

把各种网络中心度的并行算法实现整合成一个网络中心度并行工具包。除了本文设计实现的n-度中心度和k-压力中心度的并行算法,工具包内还包含以下中心度算法的实现:

(1) 改良的接近中心度(Closeness Centrality)与介数中心度(Betweenness Centrality)的并行算法实现;

(2) 饶东宁[17]等提出的并行最小割(Minimal Cut)算法;

(3) 廖志军[18]提出的分布式K-Core算法;

(4) Spark框架的GraphX模块提供的度、PageRank和三角计数(Triangle Count)的方法。

方法(1)也按第4节的步骤进行了性能测试,也表现出一定的并行加速效果;(2)(3)(4)的方法经验证在工具包中可运行。工具包的可行性与拓展性得以验证。网络中心度并行工具包中各方法,包括方法名与方法描述,详见表2

表 2 网络中心度并行工具包的方法 Table 2 Functions in the network centrality parallel toolkit
6 总结

本文将现有的网络中心度并行算法的实现整合成一个并行工具包。在工具包的设计过程中,对度中心度和压力中心度进行补充拓展,提出n-度中心度和k-压力中心度。对两种新度量分别基于Pregel的计算机制设计并行算法,并通过Spark框架的Pregel方法实现。通过BoardEx数据库的社交网络测试并行算法的性能,结果显示均有较好的加速效果。并行工具包提供便捷可拓展的中心度并行计算,工具包内的网络中心度计算方法可通过拓展集群提高计算效率。并行工具包能为网络中心度的研究提供选择,未来的工作将加入更多网络中心度的并行算法,或对工具包内算法加以改进。

参考文献
[1]
FREEMAN L C. Centrality in social networks conceptual clarification[J]. Social Networks, 1978, 1(3): 215-239. DOI: 10.1016/0378-8733(78)90021-7.
[2]
吴信东, 董丙冰, 堵新政, 等. 数据治理技术[J]. 软件学报, 2019, 30(9): 2830-2856.
WU X D, DONG B B, DU X Z, et al. Data governance technology[J]. Journal of Software, 2019, 30(9): 2830-2856.
[3]
陈磊, 吴晓晖. 基于Hadoop的分布式集群大数据动态存储系统设计[J]. 中国电子科学研究院学报, 2019, 14(6): 593-598.
CHEN L, WU X H. Design of distributed cluster big data dynamic storage system based on Hadoop[J]. Journal of China Academy of Electronics and Information Technology, 2019, 14(6): 593-598. DOI: 10.3969/j.issn.1673-5692.2019.06.007.
[4]
廖旺坚, 黄永峰, 包从开. Spark并行计算框架的内存优化[J]. 计算机工程与科学, 2018, 40(4): 587-593.
LIAO W J, HUANG Y F, BAO C K. Memory optimization of Spark parallel computing framework[J]. Computer Engineering & Science, 2018, 40(4): 587-593. DOI: 10.3969/j.issn.1007-130X.2018.04.003.
[5]
SINGH R, CHAKRABORTY A, MANOJ B S. GFT centrality: a new node importance measure for complex networks[J]. Physica A: Statistical Mechanics and its Applications, 2017, 487: 185-195. DOI: 10.1016/j.physa.2017.06.018.
[6]
MEDEIROS D S V, CAMPISTA M E M, MITTON N, et al. The power of quasi-shortest paths: ρ-geodesic betweenness centrality [J]. IEEE Transactions on Network Science and Engineering, 2017, 4(3): 187-200. DOI: 10.1109/TNSE.2017.2708705.
[7]
饶东宁, 温远丽, 魏来, 等. 基于Spark平台的社交网络在不同文化环境中的中心度加权算法[J]. 广东工业大学学报, 2017, 34(3): 15-20.
RAO D N, WEN Y L, WEI L, et al. A weighted centrality algorithm for social networks based on Spark platform in different cultural environments[J]. Journal of Guangdong University of Technology, 2017, 34(3): 15-20. DOI: 10.12052/gdutxb.170023.
[8]
王露, 郭强, 刘建国. 基于加权方法的节点重要性度量[J]. 计算机应用研究, 2018, 35(5): 1426-1428.
WANG L, GUO Q, LIU J G. Measuring node importance based on weighted nonlinear method[J]. Application Research of Computers, 2018, 35(5): 1426-1428. DOI: 10.3969/j.issn.1001-3695.2018.05.031.
[9]
乔少杰, 郭俊, 韩楠, 等. 大规模复杂网络社区并行发现算法[J]. 计算机学报, 2017, 40(3): 687-700.
QIAO S J, GUO J, HAN N, et al. Parallel agorithm for discovering communities in large-scale complex networks[J]. Chinese Journal of Computers, 2017, 40(3): 687-700. DOI: 10.11897/SP.J.1016.2017.00687.
[10]
MA T, YUE M, QU J, et al. PSPLPA: probability and similarity based parallel label propagation algorithm on spark[J]. Physica A: Statistical Mechanics and its Applications, 2018, 503: 366-378. DOI: 10.1016/j.physa.2018.02.130.
[11]
艾川, 陈彬, 刘亮, 等. 基于Pregel 的大规模网络传播仿真算法设计及实现[J]. 中国科学: 信息科学, 2018, 48(7): 932-946.
AI C, CHEN B, LIU L, et al. Design and implementation of large-scale network propagation simulation method inspired by Pregel mechanism[J]. Sci Sin Inform, 2018, 48(7): 932-946. DOI: 10.1360/N112017-00302.
[12]
Borgatti S P, Everett M G. A graph-theoretic perspective on centrality[J]. Social Networks, 2006, 28(4): 466-484. DOI: 10.1016/j.socnet.2005.11.005.
[13]
SHIMBEL A. Structural parameters of communication networks[J]. The Bulletin of Mathematical Biophysics, 1953, 15(4): 501-507. DOI: 10.1007/BF02476438.
[14]
MALEWICZ G, AUSTERN M H, BIK A J C, et al. Pregel: a system for large-scale graph processing[C]//Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. Indianapolis: ACM, 2010: 135-146.
[15]
ZAHARIA M, CHOWDHURY M, FRANKLIN M J, et al. Spark: cluster computing with working sets[J]. HotCloud, 2010, 10(10): 95.
[16]
BENZI J, DAMODARAN M. Parallel three dimensional direct simulation Monte Carlo for simulating micro flows[J]. Lect Notes Comput Sci Eng, 2009, 67: 91-98.
[17]
饶东宁, 王军星, 魏来, 等. 并行最小割算法及其在金融社交网络中的应用[J]. 广东工业大学学报, 2018, 35(2): 46-50.
RAO D N, WANG J X, WEI L, et al. Parallel minimal cut set algorithm and its application in financial social networks[J]. Journal of Guangdong University of Technology, 2018, 35(2): 46-50. DOI: 10.12052/gdutxb.170146.
[18]
廖志军. 分布式K-Core算法加速求解最大团问题及在金融社交网络中应用[D]. 广州: 暨南大学, 2018.