EZW
*
*
Java程序设计作业
—影响力最大化问题
*
*
在线社会网络
*
*
什么是信息扩散?
社会媒体的用户处在各种在线社会网络(Facebook的好友网络、微博的关注网络等)中,当接触到其周围用户发布或者传播的信息时,会受到网络中与其邻近的人的影响,或者受到信息本身的影响而继续传播某些信息,导致信息在网络上逐渐扩散,影响越来越多的人。
*
*
影响力最大化问题定义
给定一个社会网络、一个扩散模型和一个数值k,任务就是如何在社会网络上获取一个规模为k的节点集合,使得这个节点集合可以达到影响力最大化的效果。 主要应用于病毒式市场营销、谣言控制等实际场景。
单独选择具有较大影响力的节点无法达到最佳效果。
两个关键问题
信息扩散模型
种子节点选择策略
*
*
信息扩散模型
初始的激活状态节点集合A。
在时刻t ,新近被激活的节点u对它的邻接节点v产生影响,成功的概率为Pu,v。若v有多个邻居节点都是新近被激活的节点,那么这些节点将以任意顺序尝试激活节点v。如果其中一个成功,其他节点将不再尝试。
如果节点v被激活成功,那么在t+1时刻,节点v转为激活状态,将尝试激活其非激活状态的邻居节点;否则,节点v在t+1时刻状态不发生变化。
该过程不断进行重复,直到网络中不存在有新近激活状态节点时,传播过程结束。
*
*
信息扩散模型
影响力:被激活节点的数量。
*
*
节点选择策略
*
*
从文件读取内容
*
*
从文件读取内容
注:修改文件路径
*
*
容器类
Vector vec = new Vector();
Node node1 = new Node(); vec.add(node1);
Node node2 = (Node)vec.get(i);
for(int i=0;i
模拟次数和模型每次运行的时刻不要混淆。
使用队列(Queue) 类,存放“初始激活状态节点”,队列为空,模型运行结束。
*
*
注意事项
三人一组,第八周两次课做报告,每组5分钟
获取影响力最大的规模为10(k=10)的节点集合
程序设计:包括几个类、各自功能、相互关联等。
结果展示:所选出的10个节点,节点规模从1到10各自的影响力、运行时间等。
方法比较:贪心算法和出度。
课题报告成绩+源代码
*
*
11
11
10
10
8
8
7
7
9
9
6
6
3
3
5
5
4
4
t时刻
t+1时刻
1
1
2
2
5
6
9
8
4
2
7
3
1
时刻1
激活状态
未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
5
6
9
8
4
2
7
3
1
时刻2
激活状态
未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
5
6
9
8
4
2
7
3
1
时刻3
激活状态
未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
5
6
9
8
4
2
7
3
1
时刻1
激活状态未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
5
6
9
8
4
2
7
3
1
时刻2
激活状态未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
5
6
9
8
4
2
7
3
1
时刻3
激活状态未激活状态
0.1
0.2
0.15
0.3
0.4
0.2
0.1
0.3
0.1
0.35
11
11
10
10
88
7
7
9
9
66
33
5
5
4
4
t时刻t+1时刻
11
22