记录一下影响力最大化的遍历解决的方法,写的很粗糙,就是怕自己以后忘了,不喜勿喷。
一起共勉~~

关于影响力最大化

影响力最大化 IC模型+贪心算法

影响力最大化 模拟爆发(粗糙笔记)

影响力最大化 IC 蒙特卡洛模拟 贪心算法

影响力最大化 IMRank 我心中的最优算法

影响力最大化 CELF 成本效益延迟转发算法

贪心

(1)首先|S|=1,在所有点中选一个在IC模型下跑出感染的点数量最多的点加入S
(此时跑了n趟IC)
(2)再在剩下的点中选一个加入S后结果最好的点加入S
(此时跑了n-1趟IC)
(3)重复2,直到能S扩散的结果能覆盖所有点

IC

(1)激活S中的所有节点,加入活集A(本轮被激活的所有点)
(2)找到A的非活邻居集N(可能被传染的所有点),对于N中的每一个点,被传染的概率都为1-(1-Pa1,n)*(1-Pa2,n)…。
(3)清空A
(4)标记所有被传染的点,并放入A
(4)重复2、3直到步骤2已经不能找到新点

数据原型

处理的是一个txt文件,邻接矩阵表示的图。

代码

import numpy as np
import copy
import random# IC模型
# 输入:图的邻接矩阵、初始节点集S
# 输出:感染点的个数
def ICModel(data, init_set) -> int:# 活集A,存储本轮被激活的所有点# 初始值为Sactive_set = init_set# 所有节点的激活状态# 0为未激活,1为激活active_status_set = np.zeros(len(data), dtype=int)# 激活所有起始点for index2 in range(len(init_set)):active_status_set[init_set[index2]] = 1# 开始循环while active_status_set.sum() < len(data):# A的非活邻居集N# 存储本轮可能被传染的点neighbor_set = []# 取出未激活可达点,及点的所有有效边的概率p_dictionary = {}for d_index in range(len(data)):for s_index in range(len(active_set)):# 可达且未被激活if data[active_set[s_index], d_index] != 0.0 and active_status_set[d_index] != 1:if d_index not in neighbor_set:neighbor_set.append(d_index)p_dictionary[d_index] = []p_dictionary[d_index].append(data[active_set[s_index], d_index])tmp = neighbor_set# 出口:不存在未激活可达点if len(neighbor_set) == 0:break# 计算未激活可达点的激活概率neighbor_p_set = []for index2 in range(len(neighbor_set)):p_one = p_dictionary[neighbor_set[index2]]p = 1.0for i in range(len(p_one)):p = p * (1 - p_one[i])p = 1 - pneighbor_p_set.append(p)# 清空A集active_set = []# 激活for index3 in range(len(neighbor_set)):seed = random.random()if seed < neighbor_p_set[index3]:active_status_set[neighbor_set[index3]] = 1active_set.append(neighbor_set[index3])# print(init_set, active_status_set)return active_status_set.sum()# 验证random均匀分布
def test_rnd():r01 = 0r12 = 0r23 = 0r34 = 0r45 = 0r56 = 0r67 = 0r78 = 0r89 = 0r910 = 0for i in range(10000000):x = random.random() * 10if 0 <= x < 1:r01 += 1if 1 <= x < 2:r12 += 1if 2 <= x < 3:r23 += 1if 3 <= x < 4:r34 += 1if 4 <= x < 5:r45 += 1if 5 <= x < 6:r56 += 1if 6 <= x < 7:r67 += 1if 7 <= x < 8:r78 += 1if 8 <= x < 9:r89 += 1if 9 <= x < 10:r910 += 1print("******random()均匀分布验证结果******")print("0~1:", r01)print("2~3:", r12)print("3~4:", r23)print("4~5:", r34)print("5~6:", r45)print("6~7:", r56)print("7~8:", r67)print("8~9:", r78)print("9~10:", r910)if __name__ == "__main__":# 读取图的关系矩阵graph_data = np.loadtxt('graph.txt')# 初始节点集init_set = []# 激活节点个数spread_num = 0print("**********贪心+IC@IM结果**********")# (贪心算法)往S中加入新节点,使得每次加入后激活的节点数最多# 当所有节点都被激活时停止循环# f = open('result.txt', 'a')while spread_num != len(graph_data):max_spread_num = 0for index in range(len(graph_data)):if index not in init_set:test_S = copy.deepcopy(init_set)test_S.append(index)result_spread_num = ICModel(graph_data, test_S)if result_spread_num >= max_spread_num:max_spread_num = result_spread_nummax_spread_node = indexspread_num = max_spread_numinit_set.append(max_spread_node)print("init_num: ", len(init_set), " spread_num: ", max_spread_num, " S:", init_set)# f.write("init_num: " + str(len(init_set)) + " spread_num: " + str(max_spread_num) + " S:" + str(init_set) + "\n")# f.close()

影响力最大化 IC模型+贪心算法相关推荐

  1. 社交网络中基于位置的影响力最大化 CIKM2015 译文

    社交网络中基于位置的影响力最大化 摘要 这篇文章的目的是通过研究在LBSN平台中基于位置的影响最大化来实现O2O模式上的产品推广.随着O2O环境下存在的消费行为,传统的线上影响力扩散模型不能准确描述产 ...

  2. 贪心算法实现最大收益

    一.问题分析 T:           a1,a2...an       任务 time:    t1,t2...tn         消耗时间 D:          d1,d2...dn      ...

  3. 影响力最大化,传播模型

    基本传播模型 IC LT IM算法分类 贪心算法 KK(2003) CELF(2007)https://www.cnblogs.com/aaronhoo/p/6548760.html DegreeDi ...

  4. 数组索引必须为正整数或逻辑值是什么意思_贪心算法:K次取反后最大化的数组和...

    ❝ 很多录友都反馈昨天的题目:贪心算法:跳跃游戏II 很难,这样我就放心了,哈哈,因为我刚刚讲解贪心的时候一些录友会建议我:贪心没有必要单独讲,直接讲动规就可以了.应该不少同学都会感觉就贪心嘛,有啥难 ...

  5. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  6. 贪心算法——数轴距离模型(货仓选址,邮局安排,糖果传递)

    思路   贪心算法一个常见的模型,数轴距离模型:数轴上有n个点,坐标为 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1​,x2​,...,xn​,求一个点坐标 c ...

  7. 【转】如何从计算视角研究网络传播影响力最大化问题?

    电商中对社交网络的两个应用方向,基于社交网络做推荐和基于社交网络做裂变广告.有意思的是做电商的往往做不起社交,电商和社交数据很难打通,而不管做推荐还是做广告,所有的建模和分析都是基于用户行为数据的,不 ...

  8. 一种有效的基于路径的社交网络影响力最大化方法【论文阅读】

    文章目录 一.论文的亮点 二.HIPA算法具体过程 三.论文的优缺点 四.自己的收获点 五.未来可能的突破点 [摘要]本文是关于影响力最大化相关内容:内容的是关于论文An efficient path ...

  9. 《大数据网络传播模型和算法》节选

    第1章 网络传播模型及其分类 一种随机传播模型的定义:包括 图结构 每个结点的状态空间 传播概率空间 传播的时间序列 传播概率空间对应着模型在传播过程的所有的随机性可能. 第2章 2.1  递进型传播 ...

  10. Information Sciences 2022 | 利用图嵌入和图神经网络实现社交网络中的影响力最大化

    目录 前言 1. 影响力最大化 2. SGNN 2.1 标签生成 2.2 struc2vec 2.3 GNN特征处理 2.4 回归预测 2.5 整体框架 3. 实验 3.1 数据集 3.2 评价指标 ...

最新文章

  1. OpenCV车牌/数字识别
  2. Chrome_调试js出现Uncaught SyntaxError: Unexpected identifier
  3. APPlication,Session和Cookie的区别
  4. maven update项目报错
  5. iOS13 已越狱 iOS12.4 已越狱
  6. WAMPSerrver集成环境的下载安装
  7. PowerShell与Unix Shell对比:八大实例
  8. NGINX介绍及参数
  9. 如何运用模板之家做html,Flask框架如何使用HTML模板
  10. bowtie1和bowtie2的比较
  11. python2, 3环境变量配置(win10下)
  12. 易筋SpringBoot 2.1 | 第十八篇:SpringBoot的JDBC异常
  13. Quartz插件配置-005
  14. 有时更贵的ADC是最划算的
  15. 计算机键盘正确指法操作方法,键盘指法,图文详解键盘指法练习方法
  16. rapidminer进行关联分析、分类预测、聚类分析
  17. C++不规则窗体编程跳棋游戏实例!
  18. matlab求解非线性0-1规划案例
  19. Vue3+Vite+TypeScript项目开发
  20. 潜在语义分析(LSA)

热门文章

  1. 关于EN信号通过电阻分压的问题
  2. 佳能Canon imageCLASS MF4830d 打印机驱动
  3. 2022-2027年中国医疗行业市场深度分析及投资战略规划报告
  4. Hadoop(一)如何搭建大数据Hadoop集群?(大数据入门教程)
  5. 怎样用计算机算百分之,win7使用自带计算器计算百分比的方法
  6. 清华大学马少平:一款智能硬件背后的“AI争霸”...
  7. Beego 使用redigo连接redis
  8. js大地坐标与经纬度坐标互转
  9. req.getParameterValues 输出前端乱码
  10. STC单片机开发板介绍以及使用(51单片机介绍)