复杂网络中的结构洞理论及其Python实现

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+qpiqpqj)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())
#转化为p_ij矩阵。p_ij代表节点i花费在节点j上的精力。
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:
        #节点i和节点j的共同邻居
        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

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值