基于mapreduce框架下CNM算法并行性研究.docVIP

基于mapreduce框架下CNM算法并行性研究.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于mapreduce框架下CNM算法并行性研究

基于mapreduce框架下CNM算法并行性研究   摘 要   近年来,随着网络技术的飞快发展与应用,尤其是社交网络的日渐普及及应用,社团发现成为一项重要的研究课题。基于模块度的社团发现算法对于现阶段的社团划分研究具有重要意义。CNM算法就是基于模块度的算法中的一种。本文提出了基于Hadoop的MapReduce框架下对CNM算法的研究分析。最后展望了该领域未来的研究方向。   【关键词】社团发现算法 模块度 CNM MapReduce框架   随着社会的不断发展和个体之间关系的日益复杂,这给传统的社交网络带来了极大考验。由此,各类社团发现算法应运而生。基于模块度的社区发现算法是现阶段较流行,研究较为广泛的算法。CNM算法就是这其中的一种。但对于社交网络中日渐增长的庞大数据量,这对传统的数据存储及处理方式提出了巨大的挑战。将全部数据信息存入到内存或是硬盘中已经变得不现实。由此,分布式处理方式进入到研究者的视线中。分布式系统,因拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换,鉴于分布式系统具有的高吞吐、高并发、低延迟性的特点,可满足当今社团网络处理的要求。   Hadoop是一个能够对大量数据进行分布式处理的软件框架,由Apache基金会所开发。基于Hadoop的Mapreduce框架可对大规模的数据进行并行运算。从CNM算法运行的步骤中可看出,每一步的进行可划分成多个任务进行并行的处理,非常适合Mapreduce框架,这解决了该算法应用于大规模网络时会出现内存溢出的问题。鉴于此,本文提出基于MapReduce架构的CNM社团发现算法。   1 基于模块度的社团发现算法   在社交网络中,社团可理解为社交网络的一个子集。在同一个社团中的节点,一定有着某种相同或相似的属性。在在社交网络中检测、发现社团结构的过程就是社团发现。而发现社团所用的算法,就是社团发现算法。现阶段有很多种类的发现方法。例如:基于模块度优化的方法,分裂方法,谱方法,基于推理的方法等等。   1.1 模块度函数   所有的社团发现算法都需要有一个评价标准来衡量社团发现结果的合理性和有效性。这便引入了模块度的概念。模块度的定义由Newman等人提出,是目前常用的一种衡量网络中社区稳定度的方法。下面引入模块度的定义:   给定一个图G,它表示一个社交网络,C表示社交网络中的社区,m表示G中边的数量,则:   若节点i和j之间有边相连,否则   是节点i的度   由此,模块度的定义可表示为:   归纳来说,模块度表示所有被划分到同一个社团的边所占的比例再减掉完全随机情况时被划分到同一社团的边所占的比例。   模块度增量的定义是:   1.2 CNM算法介绍   CNM算法是基于模块度的社团发现算法,它是一种基于贪心策略的聚合算法。通过初始化每一个节点作为一个单独的社团,然后通过聚合相似的节点或者联系最为紧密的节点,最终将分散的小社团聚合为大的社团,从而达到社团划分的目的。CNM算法用堆的数据结构来计算和更新网络的模块度,所以其时间复杂度可接近线性复杂度。   在CNM算法的执行过程中用到以下数据结构:   (1)模块度增量矩阵ΔQ:记录了有边相连的社团之间的模块度增量。   (2)最大堆H:该堆中包含了模块度增量矩阵ΔQ中每一行中的最大元素。   (3)辅助向量a:用来记录节点的度。   2 MapReduce框架介绍   MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。主要分为两个部分Map(映射)和Reduce(归约)。利用MapReduce框架可实现并行编程。   Map函数可接受一个键值对(key-value),产生一组中间结果,在Reduce函数中指定如何对中间结果进行归约并生成最终的处理结果。MapReduce框架下程序的并发处理过程可如图1所示。   3 CNM算法在Mapreduce框架下的分析研究   3.1 算法思想   采用MapReduce框架实现CNM算法可分四步骤进行:   第一步:进行数据预处理,将稀疏矩阵中存储的相连边之间的信息转换为键值对的形式。   第二步:根据第一步得到的数据预处理的结果,求模块度增量ΔQ。   第三步:将所有的ΔQ进行比较,得到最大的ΔQ。   第四步:进行更新操作,修改矩阵中的行列值。   以上四个步骤设计的关键点在于如何设计MapReduce。   3.2 算法描述   a 一次读取矩阵中一行的信息   Map阶段:将转换成对   for(values.hasNext()) {   if(values!=null)   Emit(key,value[n]

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档