中介中心性的时间复杂性?

时间:2011-06-30 08:56:34

标签: algorithm graph matrix complexity-theory

如果给出图的最短路径前驱矩阵,计算betweenness centrality的时间复杂度是多少?

前身矩阵单元看起来像这样:

  • 如果节点 i 和节点 j 直接连接,则单元格中的值为0;
  • 如果节点 i 且节点 j 未连接,则单元格中的值为-1;
  • else cell = predecessor( j ) - 如果存在单个最短路径或前导数组,如果 i <之间存在多条最短路径,则这只能是一个前任/ em>和 j

感谢您的回答,

我熟悉Brandes算法。但是,Brandes算法将计算网络内所有节点的中介性。我认为为一个顶点计算CB所花费的时间与计算所有顶点的CB的时间相同,因为Brandes算法无法适应这种情况。

所以,我的想法是存储前任矩阵,并且能够为某个顶点计算CB(而不必等待所有顶点CB计算)。 我知道我无法实现更小的时间复杂度,但我认为可以通过不计算所有7000个顶点的CB来实现时间量的差异。相反,通过使用此矩阵,我能够仅为一个顶点计算CB。

我认为有可能在O(n ^ 2 * L)中计算CB,其中L是我们有前驱矩阵时的平均最短路径。

您对此概念有何看法?

1 个答案:

答案 0 :(得分:3)

据我所知,用于计算中介中心性的最着名的算法是本文所述的算法:

您将看到此算法首先计算每对节点之间的最短路径数。以同时计算前任矩阵的方式这样做是很自然的。因此,预先计算前一个矩阵似乎没有任何好处:在执行Brandes算法时,无论如何都可以免费获得它。

(当然,这并不能证明它没有任何区别,也许其他人知道的更好。你可能想问cstheory.stackexchange.com。)