過程:
?SeedNode=[ ]? current_inif=0
1.計算所有節(jié)點的邊際影響力inf? (節(jié)點n的Δinf=(n加入當前種子集Seeds后形成的新種子集Seeds的影響力)-(當前Seeds的影響力)】)
2.根據(jù)影響力對節(jié)點進行排序
3.S=S+最大影響力的節(jié)點
4.計算下一個節(jié)點的最新影響力值,如果該節(jié)點的影響力值大于等于該節(jié)點下面節(jié)點的原影響力值难捌,該節(jié)點直接計入S
???? 否則重新計算所有節(jié)點影響力并重新排序,選取最大計入S
5.重復(fù)4直到?? |S|=k
偽代碼:
Initialize S and inif[] and S_inif and Q[]
Inif[]=new inif(v)
For v in nodes:
Inif[v]=newinif([v])
Q=nodes sort byinif(nodes)
While S.length <=K
B=Q[0]
Inif[B]=newinif(S+B)-S_inif
If inif[B]>=inif[Q[1]:
S=S+B
S_inif=inif[B]
end if
Else:
For allnodes v not in S:
Inif(v)=new inif(v+S)-S_inif
Q=new Q
S=S+Q.pop()
end else
end while
Ref:
算法原理解釋:http://www.cnblogs.com/aaronhoo/p/6548760.html