中文

介数中心性——增量计算与加速

数据结构与算法 2013-11-19 v3

摘要

我们考虑大型复杂网络(建模为有向或无向图G = (V, E),边权为正实数)中所有顶点介数中心性的增量计算。当前广泛使用的计算G中所有顶点介数中心性的算法是Brandes算法,运行时间为O(mn + n^2 log n),其中n = |V|,m = |E|。我们提出了一种增量算法,当向G添加一条新边或减少现有边的权重时,更新G中所有顶点的介数中心性得分。我们的增量算法运行时间为O(m' n + n^2),其中m'是E*的某个子集的大小,E*是G中位于最短路径上的边的集合。对于更一般的顶点v的增量更新(其中边更新可作用于v的任意入射边子集),我们实现了相同的界。我们的增量算法是第一个在稀疏图上渐近快于使用Brandes算法重新计算的算法。由于m*(E*的大小)通常接近n的线性,我们的算法在稠密图上也可能比Brandes算法快得多。我们的增量算法非常简单,仅使用数组、列表和栈作为数据结构。我们给出了一种高效的缓存无关实现,其缓存缺失次数为O(scan(n^2) + n sort(m')),其中scan和sort是高效缓存的著名度量。我们还给出了一种计算所有顶点介数中心性的静态算法,运行时间为O(m* n + n^2 log n),对于任何满足n log n = o(m)且m* = o(m)的图,该算法比Brandes算法更快。

关键词

引用

@article{arxiv.1311.2147,
  title  = {Betweenness Centrality -- Incremental and Faster},
  author = {Meghana Nasre and Matteo Pontecorvi and Vijaya Ramachandran},
  journal= {arXiv preprint arXiv:1311.2147},
  year   = {2013}
}