CELF算法实现原理与伪代码
来源:互联网 发布:ds数据精灵激活码 编辑:程序博客网 时间:2024/06/05 15:14
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 v∈V 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
3:for 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.
- CELF算法实现原理与伪代码
- 伪代码实例与原理
- CELF优化的贪心算法
- 冒泡算法原理与代码实现
- 读写锁算法的伪代码实现---摘《多核计算与程序设计》
- 插入排序伪代码与编程实现
- 归并排序算法原理分析与代码实现
- AC-BM算法原理与代码实现(模式匹配)
- WM算法原理与代码实现(模式匹配)
- AC-BM算法原理与代码实现(模式匹配)
- 归并排序算法原理分析与代码实现
- 归并排序算法原理分析与代码实现
- 归并排序算法原理分析与代码实现【图解】
- 归并排序算法原理分析与代码实现
- 机器学习:K-近邻算法原理与Python代码实现
- DBSCAN 密度聚类算法原理及伪代码
- KMP算法的理解,伪代码,c代码实现
- Floyd算法(原理|代码实现)
- 优化Docker镜像大小方案
- Amazon Alexa 服务端搭建
- 微信小程序页面布局
- 202. Happy Number
- 根据输入的日期展示当前月份的日历
- CELF算法实现原理与伪代码
- 兄弟连学Python(2)—python初学感受
- Opencv介绍
- 大话设计模式【单一职责原则】
- 【inernal】oracle中number类型存储解析
- 【tf系列1】常用函数说明
- Shotgun的toolkit的配置流程及其他
- 基于canvas使用贝塞尔曲线平滑拟合折线段
- Restful与webService区别