IBM问题总结

IBM问题总结


Abstract

这篇文章主要是想对IBM问题做一个总结,这里我只考虑了两个消息源相互竞争的情况,当然也可以推广到多个消息源,但是推广到多个消息源时,传播模型等也需要做一定的改变~

Analysis

S_A表示被A激活的点的seed set,S_B表示被B激活的点的seed set。σ(S_A)表示A的影响范围,σ(S_B)表示B的影响范围,k表示种子节点集合的大小

1. B最大。
选k个节点传播消息B,最终让B消息的传播范围最大。因为消息A和B同时都在传播,所以在计算σ(S_B )时,当影响力扩散到一个点u时,要先判断这个点有没有被A激活,如果已经事先被A激活了,那么这个点不能被B激活。所以对于一个点u来说,被B激活需要满足两个条件:1.没有被A激活;2.满足B的激活阈值。

Input G = (V, E), S_A, S_B=∅;
Output S_B;
1:for i=1 to k do
2:   v=argmax(u∈V\(S_A∪S_B)) σ(S_B∪{u});//当前情况下,选择v点做为B消息的种子节点时,使得此时B消息的传播范围最大
3:   S_B=S_B∪{v};
4:end for

2. B-A最大。
选择k个节点传播消息B,最终让B消息拯救的节点数最多,或者说让A消息的影响范围的减小最大。也就是说,本来A的影响范围是100个节点,但是因为B消息的传播,这100个节点里面有40个节点因为被B激活了,所以免于被A激活,那么就说这40个节点被B拯救了。这里用σ_save (S_A,S_B)表示因为B消息的传播而免于被A影响的点的集合大小,即被B消息拯救的节点个数。注意,这里S_A是已经事先确定的。

Input G = (V, E), S_A, S_B=∅;
Output S_B;
1:for i=1 to k do
2:   v=argmax(u∈V\(S_A∪S_B)) σ_save (S_A,S_B∪{u});//当前情况下,选择v点做为B消息的种子节点时,使得此时被B拯救的节点数最多
3:   S_B=S_B∪{v};
4:end for

3. A最小。
如果按照我们之前讨论的A最小可以在A消息源的邻居节点中选择影响力大的点,然后让这些点来传播消息B,这里用N(A)表示A消息源的邻居节点。因此A最小就转换成了遍历所有的N(A),从中选出Top-k个影响力最大的点作为B消息的种子节点。但是这里在算σ(S_B )时也要注意判断节点是否已经被A激活了。(为了和B-A最大区分,所以上面的B-A最大是在全局上搜索,而这里只是在A的种子节点的邻居节点上搜索)

  • 选出来的节点会将消息传播出去
Input G = (V, E), S_A, S_B=∅;
Output S_B;
1:for i=1 to k do
2:   v=argmax(u∈N(A)\(S_A∪S_B)) σ(S_B∪{u});//当前情况下,选择v点做为B消息的种子节点时,B消息的影响力达到最大,又因为v是在消息源A的邻居节点中选取的,此时消息A无法通过v点传播而使得消息A的扩散范围减少达到最大,所以当前情况下消息A的传播范围最小
3:   S_B=S_B∪{v};
4:end for
  • 选出来的节点不会传播消息,仅仅是控制这些点,从而阻断消息的传播。
    这里需要注意的是:1.如果不控制某些节点,单纯让负面消息在网络中扩散的话,负面消息A的影响范围表示为:σ(S_A |V),其中V表示整个社会网络的节点集合;2.如果选出了某些点放入集合SB,然后对这些点进行控制,那么消息无法通过这些点进行传播,这时负面消息A的影响范围可以表示为:σ(S_A |(V\S_B))。因此让σ(S_A)最小就转换成:让σ(S_A│V)-σ(S_A |(V\S_B )) 最大
Input G = (V, E), S_A, S_B=∅;
Output S_B;
1:for i=1 to k do
2:   v=argmax(u∈N(A)\S_B ) {σ(S_A |(V\S_B))-σ(S_A |(V\(S_B∪{u})))};
3:   S_B=S_B∪{v};
4:end for

猜你喜欢

转载自blog.csdn.net/weixin_32135877/article/details/82632669