限制流行病在有时间约束的在线社交网络上传播
度中心性的启发式算法
一、 概述
为了限制流行病的传播,一种普遍的策略是删除在流行病扩散过程中起重要作用的节点和边。但是实际上,这些节点和边在信息扩散中的作用更加重要,故不能排除过多的节点和边缘。
信息是通过OSNs传播的每一跳从一个用户传播到另一个用户的。越早的防止错误信息的传播,造成的损害就越小。研究也表明,传播通常仅在来自传播源的几跳之内迅速消失。
基于此现象,本文定义了LSE(限制流行病传播)问题。该问题寻求从网络中的感染节点集中删除节点集A(大小为k),经过一定时间的传播后,剩余被感染的节点数目最大。
本文的主要工作有:
- 定义了LSE问题。引入了具有时间限制的信息传播模型(T-DLT)。
- 针对LSE问题,首先提出了贪婪算法,该算法选择具有最大增量保存节点的节点。另外针对大规模网络,提出了一种有效的启发式算法,称为快速有效的限制流行病传播(FLE)。
二、扩散模型及问题定义
1.扩散模型T-DLT
a.网络定义
G = ( V , E , w ) G =(V,E,w) G=(V,E,w)表示社交网络,其中V是节点集且|V| = n,E是有向边集且|E|=m。节点代表社交网络中的用户,而边e =(u,v)代表用户u和v之间的关系。u的入和出邻居节点为 N + ( u ) N ^+(u) N+(u)和 N − ( u ) N^-(u) N−(u), d + ( u ) d_+(u) d+(u)和 d − ( u ) d_-(u) d−(u)则为节点u的入度和出度。 I ⊂ V I \subset V I⊂V是初始感染节点集。每个有向边(u,v)的权重w(u,v)表示节点v受其邻居u影响的程度,满足 ∑ u ∈ N + ( v ) w ( u , v ) ≤ 1 ∑_{u \in N_+(v)}w(u,v)≤1 ∑u∈N+(v)w(u,v)≤1。
b.节点的状态
流行病从集合 I I I传播到OSNs上其他节点的过程是通过离散的时间步长t=1,2,…,d进行的。每个节点 v ∈ V v \in V v∈V有两个状态:感染、健康。
c.扩散过程
确定性的扩散过程(DLT)是离散的步骤(传播跃点)t=0,1,2,…,d。 I t I_t It是t步感染点的集合,传播过程描述如下:
- 在t = 0时,I中的所有节点都被感染,即I0 = I。
- 在t≥1时,如果传入邻居的加权权值达到其感染阈值,即健康的节点v被感染:
∑ w ( u , v ) i n − c o m i n g i n f e c t e d n e i g h b o r u ≥ θ v \underset{in-coming\ infected\ neighbor\ u}{\sum w(u,v)}\geq\theta_v in−coming infected neighbor u∑w(u,v)≥θv - 一旦节点被感染,则一直保持感染状态。当t = d时,影响传播停止。
d.T-DLT和DLT
T-DLT的传播影响在d个传播跃点之后消失。 DLT模型是d=|V|的T-DLT的特例。
2.问题定义
- 在T-DLT模型中G=(V,E),d跳后的感染集合被定义为fd(I),fd(I,A)是从G中删除节点集A ⊆V\I后的感染集合(剩余网络中被感染节点的数量)。
移除A后感染节点的数量是(等式2):
h d ( A ) = ∣ f d ( I , ∅ ) ∣ − ∣ f d ( I , A ) ∣ h_d(A)=|f_d(I,\emptyset)|-|f_d(I,A)| hd(A)=∣fd(I,∅)∣−∣fd(I,A)∣ - 在T-DLT模型中,我们制定了一种组合优化,即“限制流行病的扩散(LSE)”问题,该问题的目的是寻找最多k个要从网络中删除的节点集,并使剩余感染节点数目最大。
- 定义3.1(LSE问题) 给定一个无向图 G = ( V , E ) G=(V,E) G=(V,E)代表T-DLT模型下的社交网络。初始感染节点集 I ⊂ V I \subset V I⊂V,d是约束的跳数。k是A集合的大小,且k>0, A ⊆ V \ I A \subseteq V\backslash I A⊆V\I,将A从网络中删除,以便在d回合后hd(A)感染节点数目最大。
- G d = ( V d , E d ) G_d=(V_d,E_d) Gd=(Vd,Ed)是 G = ( V , E ) G=(V,E) G=(V,E)的子图,且 V d V_d Vd是距离 I I I中每个节点的距离最多是d的节点集, E d E_d Ed是距离 I I I中每个节点路径长度最大为d的边集合,并有 n d = ∣ V d ∣ , m d = ∣ E d ∣ n_d=|V_d|,m_d=|E_d| nd=∣Vd∣,md=∣Ed∣。流行病扩散只发生在 G d G_d Gd上,所以为了简化问题,本文在 G d G_d Gd上设计解决方案。
三、 LSE问题的复杂性
将集合覆盖问题归约为LSE问题。
a. 集合覆盖问题(SC): 给定一个整数t,集合
U
=
{
e
1
,
e
2
,
…
,
e
M
}
U=\{ e_1,e_2,…,e_M \}
U={e1,e2,…,eM}和一个子集集合
S
=
{
S
1
,
S
2
,
…
,
S
N
}
S=\{ S_1,S_2,…,S_N \}
S={S1,S2,…,SN},其中t<M<N。集合覆盖问题是寻找
t
t
t个子集的并集是U。
b. 为了将SC问题归约为LSE问题,首先从SC问题的一个实例
I
S
C
I_{SC}
ISC出发构建了一个LSE的问题实例
I
L
S
E
I_{LSE}
ILSE。然后证明了
I
S
C
I_{SC}
ISC有一个大小为t的解决方案S,
I
L
S
E
I_{LSE}
ILSE有解决方案A,|A|≤k,hd(A) ≥ k + M。
c. 构造:给定一个
I
S
C
=
{
U
,
S
,
t
}
I_{SC}=\{ U,S,t \}
ISC={U,S,t}的实例,通过下图1构建LSE问题的一个实例
I
L
S
E
=
{
G
,
I
,
d
,
k
}
I_{LSE}=\{ G,I,d,k \}
ILSE={G,I,d,k}
- 节点和边的集合:对每个 S i ∈ S S_i∈S Si∈S,都有初始化感染节点 s i ∈ I s_i\in I si∈I和一个顶点 u i u_i ui。添加一个有向边 ( s i , u i ) (s_i,u_i) (si,ui)。对于每个元素 e j ∈ U e_j\in U ej∈U,我们添加一个节点 v j v_j vj,并且为每个 e j ∈ S i e_j∈S_i ej∈Si添加一个有向边(ui,vj)。 B = { u 1 , u 2 , … , u N } , C = { v 1 , v 2 , … , v M } B=\{ u_1,u_2,…,u_N \},C=\{ v_1,v_2,…,v_M \} B={u1,u2,…,uN},C={v1,v2,…,vM}
- 感染阈值和权重, w ( s i , u i ) = 1 , w ( u i , v j ) = 1 d + ( v j ) , θ u i = θ v j = 1 w(s_i,u_i) = 1,w(u_i,v_j) =\frac{1}{d_+(v_j)}, \theta _{u_i}= \theta _{v_j}=1 w(si,ui)=1,w(ui,vj)=d+(vj)1,θui=θvj=1。
- 最后,设置k=t,d=2
实际上就是将集合覆盖问题和LSE进行 “对应”。
d. 转换
(→)假设S’是实例 I S C I_{SC} ISC的解,|S’|=t=k,它覆盖U的t个元素。如果我们选择集合A包含与 S i S_i Si关联的 u i u_i ui,即 S ′ = { S i ∣ u i ∈ A } S'= \{S_i |u_i∈A\} S′={Si∣ui∈A},则 v j ∈ B v_j\in B vj∈B中的每个节点都与A相邻。通过以上分析,C中的所有节点都是健康节点。我们有 h d ( A ) = t + M = k + M . h_d(A)=t+M=k+M. hd(A)=t+M=k+M.(即d跳之后感染的数目)
(←)反向来说,如果 I L S E I_{LSE} ILSE有解决方案A, ∣ A ∣ ⩽ k |A|\leqslant k ∣A∣⩽k且 h d ( I , A ) ⩾ k + M h_d(I,A)\geqslant k+M hd(I,A)⩾k+M。如果A被约束为包含C中的t1个节点,其中 1 ⩽ t 1 ⩽ k 1\leqslant t_1 \leqslant k 1⩽t1⩽k, h d ( I , A ) ⩽ k − t 1 + M < k + M h_d(I,A) \leqslant k-t_1+M < k+M hd(I,A)⩽k−t1+M<k+M。因为A不包含C中的任何节点,因此 A ⊂ B A\subset B A⊂B。结合 h d ( I , A ) ≥ k + M h_d(I,A)≥k + M hd(I,A)≥k+M,C中的所有节点都是健康节点。因此,每个节点ui∈C至少与一个节点相邻(以上分析)。现在通过我们的构造,我们看到, S ′ = { S i ∣ u i ∈ A } S'= \{S_i |u_i∈A\} S′={Si∣ui∈A}是 I 1 I_1 I1的解。这样就完成了证明。
四、算法
1.贪心算法
该算法顺序选择一个节点u放到集合A中,以最大化感染节点数目:
δ
(
A
,
u
)
=
∣
h
d
(
I
,
A
∪
{
u
}
)
∣
−
∣
h
d
(
A
)
∣
=
∣
f
d
(
I
,
∅
)
∣
−
∣
f
d
(
I
,
A
∪
{
u
}
)
∣
−
∣
f
d
(
I
,
∅
)
∣
+
∣
f
d
(
I
,
A
)
∣
=
∣
f
d
(
I
,
A
)
∣
−
∣
f
d
(
I
,
A
∪
{
u
}
)
∣
\delta(A,u)=|h_d(I,A\cup\{u\})|-|h_d(A)|\\=|f_d(I,\empty)|-|f_d(I,A\cup\{u\})|-|f_d(I,\empty)|+|f_d(I,A)|\\=|f_d(I,A)|-|f_d(I,A\cup\{u\})|
δ(A,u)=∣hd(I,A∪{u})∣−∣hd(A)∣=∣fd(I,∅)∣−∣fd(I,A∪{u})∣−∣fd(I,∅)∣+∣fd(I,A)∣=∣fd(I,A)∣−∣fd(I,A∪{u})∣
贪心算法:删除节点u之后如果
δ
(
A
,
u
)
更
大
,
则
将
u
加
到
A
中
。
\delta(A,u)更大,则将u加到A中。
δ(A,u)更大,则将u加到A中。
时间复杂度: 贪婪算法的复杂度为
O
(
k
n
d
(
m
d
+
n
d
)
)
O(kn_d(m_d+n_d))
O(knd(md+nd))。
删除任意一组节点A之后,受感染节点的数量
f
d
(
I
,
A
)
f_d(I,A)
fd(I,A)可以通过使用图形
G
d
G_d
Gd中的广度优先搜索(BFS)计算而得。花费的时间为
O
(
m
d
+
n
d
)
O(m_d+n_d)
O(md+nd)。通过等式2,我们可以推断出
h
d
(
I
,
A
)
h_d(I,A)
hd(I,A)可以用
O
(
m
d
+
n
d
)
+
O
(
m
d
+
n
d
)
=
O
(
m
d
+
n
d
)
O(m_d+n_d)+ O(m_d+n_d)=O(m_d+n_d)
O(md+nd)+O(md+nd)=O(md+nd)来完成。然后再由等式三可得贪心算法的时间复杂度。
在最坏情况下,k可以大到n,算法1可以取
O
(
n
d
2
(
m
d
+
n
d
)
)
O(n_d^2(m_d+n_d))
O(nd2(md+nd))。时间复杂度较大,故提出以下算法。
2. Fast And Effective Limiting Epidemics Algorithm(FEL:快速有效的限制流行病算法)
a. 一些定义
- t ( u ) t(u) t(u): u从健康状态变为感染状态时最小的跳数。
- a + ( u ) = ∑ I t ( u ) − 1 ∩ N + ( u ) w ( u , v ) a_+(u)=\sum_{I_{t(u)-1}\cap N_+(u)}w(u,v) a+(u)=∑It(u)−1∩N+(u)w(u,v):为在 t ( u ) t(u) t(u)跳之前从入度感染邻居出发的入边总权重。
- a ( u ) = ∑ v ∈ ∪ i = t ( u ) + 1 d w ( v , u ) , i = t ( u ) + 1 , … , d a(u)=\sum_{v\in \cup^d_{i=t(u)+1}}w(v,u),i=t(u)+1,…,d a(u)=∑v∈∪i=t(u)+1dw(v,u),i=t(u)+1,…,d是第i跳时从u到出度感染邻居节点v的出边的总权重。
- β(u)将节点u从图中移除后,从感染状态变为健康状态的出邻居节点数。
b. 算法核心
使用使用
β
(
u
)
\beta(u)
β(u)来近似
δ
(
A
,
u
)
\delta(A,u)
δ(A,u),为了提高算法的效率,结合使用
α
\alpha
α和
β
\beta
β函数来衡量节点u的流行病传播作用。初始化选择节点集
A
=
∅
A=\empty
A=∅,设候选节点
U
=
V
d
U=V_d
U=Vd。在每一步中,我们选择节点u,使残差图上的β(u)最大。
算法2如下:
计算
α
\alpha
α和
β
\beta
β的算法3:
时间复杂度:
O
(
k
(
m
d
+
n
d
)
)
O(k(m_d+n_d))
O(k(md+nd)).
注
1.归约
如果A可以归约为B(A新问题,B旧问题),B是P可解则A也是,B难则A不如B难,A难B也难。
a.算法设计视角
如果有A
≤
p
B
\ \leq_pB
≤pB,则问题A可以转化为问题B求解。如果B有多项式时间算法,则A也有。
b.计算复杂性视角
如果有A
≤
p
B
\ \leq_pB
≤pB,则问题B的难度不低于问题A的难度。如果A是NP-Hard,则B也是NP-Hard。
2.集合覆盖分类
- 集合覆盖的决定性问题(NP-Complete)为:给定一个(U,S)和一个整数k,是否存在一个大小不超过k的覆盖。
- 集合覆盖的最佳化问题(NP-Hard)为给定(U,S),求使用最少的集合的一个覆盖。