图论基础:
何为“介数”(Betweenness)?
百度百科:介数通常分为边介数和节点介数两种:
-
节点介数定义为网络中所有最短路径中经过该节点的路径的数目占最短路径总数的比例。
公式描述:节点的“介数中心性” (Betweenness Centrality)
KaTeX parse error: Expected group after '_' at position 13: C_B(v)=\sum_̲\limits{s \neq …
其中,σ s t \sigma_{st} σst是从节点 s s s 到 节点 t t t 的最短路径总数;
σ s t ( v ) \sigma_{st}(v) σst(v)是其中通过节点 v v v的路径数量。
-
边介数定义为网络中所有路径中经过该边的路径的数目占最短路径总数的比例。
从直观上看,介数反映了节点作为中间“桥梁 ”的重要程度,介数反映了相应节点或者边在整个网络中的作用和影响力,是一个重要的全局几何量,具有很强的现实意义。
如何计算介数?
为了简化公式,定义一个中间变量代表 pair-dependency 为
KaTeX parse error: Expected group after '_' at position 68: …则 C_{B}(v)=\sum_̲\limits{s \neq …
引入记号,
P s ( v ) = { u ∈ V : { u , v } ∈ E , d G ( s , v ) = d G ( s , u ) + ω ( u , v ) } P_{s}(v)=\left\{u \in V:\{u, v\} \in E, d_{G}(s, v)=d_{G}(s, u)+\omega(u, v)\right\} Ps(v)={
u∈V:{
u,v}∈E,dG(s,v)=dG(s,u)+ω(u,v)}
用来表示从节点 s s s到节点 v v v的最短路径中 v v v的前驱节点集。
也可以认为 如果从 s → v s \to v s→v 的最短路径包含边 ( u , v ) (u,v) (u,v) ,那么 u u u 属于这个集合。
根据上述关系,我们不难发现
对 于 ∀ s ≠ t , 有 下 面 的 关 系 成 立 σ s v = ∑ u ∈ P s ( v ) σ s u 对于 \forall s \ne t,有下面的关系成立\\ \qquad \sigma_{s v}=\sum\limits_{u \in P_{s}(v)} \sigma_{s u} 对于∀s=t,有下面的关系成立σsv=u∈Ps(v)∑σsu
对于上式可以理解为: s → v s\to v s→v 的最短路径必然先从 s → u s\to u s→u,再通过边 ( u , v ) (u,v) (u,v)到达 v v v,其中 u u u是 v v v的前驱节点。
- 对于无权图,调用广度优先算法BFS,在时间复杂度 O ( m ) O(m) O(m)的时间内算出 { σ s t ∣ t ∈ V } \{\sigma_{st}|t\in V\} { σst∣t∈V}
- 对于有权图,调用Dijstra算法,时间复杂度为 O ( m + n l o g n ) O(m+nlogn) O(m+nlogn)
为什么选择 BFS?
BFS在遍历节点时的顺序恰好是按照距离节点 s s s的距离升序排列,而且节点 u u u是 v v v的前驱节点必然要求 d ( s , u ) <