CELF算法实现原理与伪代码

2) 算法优化

由于上述论文中采用的算法是在传统的贪心算法上应用主题模型来进行社会网络的传播,其虽然有较好的近似比,但运行效率较低。因此,我们可以采用Leskovec等人提出的CELF算法在原有的贪心算法上进行优化,使算法的性能得到提升。在独立级联传播模型下,节点的边际影响力符合子模性,CELF算法正是利用这个性质来进行优化。当传统的贪心算法根据边际影响力将第一个节点A加入种子节点后,将第一次计算各个节点中的边际影响力次小的节点B再次计算边际影响力,如果这个节点B的新一轮边际影响力大于或等于上一轮又比自己次小的节点C的上一轮边际影响力,即可直接把结点B作为新的种子节点,不用再次计算后面结点的边际影响力。若结点B的影响力不大于或等于上一轮又比自己次小的节点C的上一轮边际影响力,就依次逐个算出各个节点边际影响力,排序选择最大的作为种子节点,放入种子集。

Algorithm 2 IB-CELF Algorithm

Input: Graph G =(V,E);

       The number of nodes,v=N;

       The number of topic category,M;

       Node(v,iis):the ∆iis of vertex v

       Sis:the influence of present seed

       nQueue:the queue of Node(v,iis)

Output:The number of seed nodes,K

1:Initialize S =φ,nQueue=φ,sis = 0

2:for vV do:

     Sv=0

     for j =1 to R do:

     Sv  += |S({v})|

     end for

  add node(v,Sv)  to  nQueue

  end for

  pop the first node v of the nQueue

  S = {node.v} and sis =node.iis

3for i =2 to k do:

      while true

         Pop the two element B,C

         If Node(B,iis)>=C

           S = S {node.v}

           Sis += node.iis

           Break

         End if

         v = node.v

         Sv = 0

         for j = 1 to R do

            Sv +=|S(S{v})|

         End for

         Sv = Sv/R – sis

         Push node(v,Sv) into nQueue

      End while

  End for

            

 

3) 时间复杂度分析

论文中算法一基于传统贪心算法的基础上影响力最大化传播虽然近似比能达到(1 – 1/e),但是运行效率很低,其时间复杂度为O(kNRM),而使用算法二改进的贪心算法CELF会比传统贪心算法有近700倍的速度提升。

参考资料:

(1)http://www.cnblogs.com/aaronhoo/p/6548760.html

(2)李国良, 楚娅萍, 冯建华,等. 多社交网络的影响力最大化分析[J]. 计算机学报, 2016, 39(4):643-656.

(3)章云龙. 社交网络中基于话题的影响最大化问题研究[D]. 上海交通大学, 2012.

(4)葛欣. 面向主题的影响力最大化问题研究[D]. 云南大学, 2013.

(5)朱玉婷. 社会网络中基于主题的影响力最大化研究[D]. 江苏大学, 2016.

(6)Leskovec J, Krause A, Guestrin C, et al. Cost-effective outbreak detection in networks[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2007:420-429.

 

 

 

    原文作者:贪心算法
    原文地址: https://blog.csdn.net/YPandy/article/details/78766132
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞