如何计算无向网络的特征向量中心性

How to calculate Eigenvector centrality of an undirected network

我正在使用 R 中的 igraph 库来计算我的网络的特征向量中心性。

通过使用 evcent 函数,我得到了网络特征向量中心性的结果。

但是它是如何进行数学计算的,正如它的定义所说,它的算法是迭代的。

任何人都可以展示一种方法,说明它是如何通过网络进行数学计算的吗?

让我们考虑下图是我的网络以及我作为特征向量中心性得到的值是如何计算这些值的。

library(igraph)
g2 <- graph.formula(A:B - A:C, X:Z - X:Y - X:B, C:Z , C:X )
ec <- evcent(g2)
ec <- ec$vector

evcent,等价地eigen_centrality,计算邻接矩阵的最大特征值及其对应的特征向量。它使用 C 例程 "R_igraph_eigenvector_centrality" 进行更高效的计算。有关特征向量中心性背后动机的更多信息,请参阅 Social and Economic Networks。您还可以使用 R 中的特征函数通过矩阵的内置谱分解来计算特征向量中心性,

library(igraph)
g2 <- graph.formula(A:B - A:C, X:Z - X:Y - X:B, C:Z , C:X )
ec <- evcent(g2)
ec <- ec$vector
ed <- eigen(as.matrix(get.adjacency(g2)))
ec2 <- ed$vectors[,1]

请注意,eigen 将 return 归一化向量,而 evcent 则不会。因此 ec2 将是 ec.

的标量倍数