论文部分内容阅读
现实世界中的大多数系统都可以用复杂网络的形式来表示,而复杂网络的社区检测也被应用于各个领域。大量学者提出了解决复杂网络社区检测问题的算法。常情况下社区检测问题会被建模成一个优化问题,通过优化社区划分指标来发现社区。随着互联网的发展,近些年火热的社交网络,在线购物以及物联网等产生了海量的数据需要分析。大规模真实网络对于传统社区检测算法,无论在社区划分结果还是运行时间乃至于运算平台的内存容量都是一个巨大的挑战。因此对于大规模网络社区检测问题的研究显得十分有意义,同时一个高效的能够解决大规模网络社区检测的算法的提出变得十分重要。依托于现阶段大数据技术的发展,在本文中我们将提出一种解决大规模复杂网络问题的思路,主要内容如下:(1)基于Spark分布式计算平台提出一种并行的离散粒子群优化算法。依托现有的分布式计算技术,将传统的粒子群优化算法与之相结合,在Spark平台实现粒子群优化算法。利用粒子群优化算法粒子之间交互少,适合并行的特点与Spark平台相结合;采用直接编码的方式设计种群,并利用Spark平台的弹性分布式数据集,使得整个粒子群优化算法在粒子更新迭代过程中能够并行的处理。利用分布式平台的广播变量,将表示网络的邻接矩阵在多台服务器之间共享。通过集群并行化求解目标函数的方式相较于单机环境能够大大加快算法的运行速度。(2)基于分布式平台的图计算框架,提出了基于消息聚合的离散粒子群优化算法用于解决大规模网络社区检测问题。首先将大规模网络结构以分布式图的形式存储于分布式文件系统中,这解决了单机环境中由于内存瓶颈无法处理大规模网络的问题。其次将复杂网络社区检测问题建模成优化问题,以模块密度为优化目标。通过将模块密度从基于邻接矩阵的求解转换为基于消息聚合的求解方式。在网络节点的邻居之间并行的传递社区划分状态,通过统计每一个节点与邻居之间社区划分的差异来求解模块密度。一方面解决了内存瓶颈问题,当需要处理大规模网络的时候可以通过横向扩展集群来增加对网络的处理能力;另一方面利用分布式图的计算加快了算法执行的速度。为了证明算法的有效性,我们将算法应用于基准网络和小规模真实世界的网络。同时将结果与其他主流的社区检测算法做了对比,结果显示了本算法的有效性。与此同时,我们还在大规模网络上测试了本算法。实验结果证明了我们所提出的算法是有效的并且适合于大规模网络社区检测问题。