1. 结构洞理论
??结构洞理论最早由美国社会学家Burt提出。结构洞可以理解为两个未连接节点之间的间隙,当两个节点通过第三个节点连接时,该间隙被填充,并为纽带节点创造了重要的优势。 ??Burt提出使用约束系数来识别结构洞节点,节点
i
i
i的结构洞约束系数越小,该节点越容易成为结构洞节点,相应的节点作用就越大。约束系数的定义如下:
C
i
=
∑
j
∈
Γ
(
i
)
(
p
i
j
+
∑
q
p
i
q
?
p
q
j
)
2
,
q
≠
i
,
j
C_{i}=\sum_{ j\in \Gamma(i)}(p_{ij}+\sum_{q}p_{iq}\cdot p_{qj})^{2},q\neq i,j
Ci?=j∈Γ(i)∑?(pij?+q∑?piq??pqj?)2,q?=i,j其中节点
q
q
q代表节点
v
i
v_{i}
vi?和节点
v
j
v_{j}
vj?的共同邻居集合。
p
i
j
=
a
i
j
/
∑
j
∈
Γ
(
i
)
a
i
j
p_{ij}=a_{ij}/\sum_{j\in \Gamma(i)}a_{ij}
pij?=aij?/∑j∈Γ(i)?aij?代表节点
v
i
v_{i}
vi?花费在节点
v
j
v_{j}
vj?上的精力。
a
i
j
a_{ij}
aij?为对网络对应的邻接矩阵的元素。
2. Python实现约束系数计算
import numpy as np
import networkx as nx
G=nx.Graph()
G.add_edges_from([(10,9),(11,9),(12,9),(9,6),(6,1),(6,7),
(1,7),(1,2),(1,5),(5,8),(5,7),(7,2),(7,4),
(7,3),(2,4)])
nx.draw(G,with_labels=True,alpha=0.8,node_size=500)
A=np.array(nx.adjacency_matrix(G,nodelist=range(1,13)).todense())
A=A/A.sum(axis=0).reshape(-1,1)
C=[]
for i in range(A.shape[0]):
n_idx=np.where(A[i]>0)[0]
c_i=0
for j in n_idx:
com_n_idx=np.where(np.logical_and(A[i]>0,A[j]>0))[0]
tmp=sum([A[i][k]*A[k][j] for k in com_n_idx])+A[i][j]
c_i+=tmp*tmp
C.append(c_i)
复杂网络结构图 其中各个节点的约束系数如下:
1:0.505 2:0.643 3:1.000 4:0.785 5:0.436 6:0.436 7:0.360 8:1.000 9:0.250 10:1.000 11:1.000 12:1.000
|