网络的介数中心性(betweenness)及计算方法

本文介绍了介数中心性在网络分析中的重要性,特别是Brandes于2001年提出的一种更快的算法,该算法在无权图上的时间复杂度为O(mn),有权图上为O(mn+nlogn)。文章详细阐述了betweenness的定义,计算σst的方法,并利用BFS或Dijkstra's算法找到最短路径。最后,通过栈数据结构计算CB,降低复杂度,总结了计算介数中心性的主要步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天面试被问到betweenness的计算方法,很尴尬没有自己实现过。平时用的时候通常用Python的networkx包计算,具体算法之前还没了解过。复杂网络的教材通常就介绍了betweenness的意义与定义,直接从定义出发计算的复杂度达到 O(n3)

这里介绍一个2001年brandes提出的算法”A faster algorithm for betweenness centrality”,在无权图上复杂度为 O(mn) ,在有权图上复杂度在 O(mn+nlogn) ,在网络稀疏的时候,复杂度接近 O(n2) .

betweenness定义

betweenness的直接定义式为:

CB(v)=svtVσst(v)σst

其中 σst(v) 表示经过节点 v st 的最短路径条数, σst 表示 st 的最短路径条数。

直观上来说,betweenness反映了节点 v 作为“桥梁”的重要程度。

为了方便,定义pair-dependency为

δst(v)=σst(v)σst


CB(v)=svtVδst(v)

如何计算 σst

首先引入一个记号

Ps(v)={ uV:{ u,v}E,dG(s,v)=dG(s,u)+ω(u,v)}

意思就是从节点 s 到节点 v 的最短路径中

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值