特征向量中心性计算 igraph (Python)

问题描述

我试图在 python 的 eigenvector_centrality() 包中查看 igraph函数定义,但找不到它们。我想了解他们如何计算有向图和无向图的特征向量中心性。任何指向来源或使用的计算的链接都会非常有帮助。

解决方法

igraph 的源代码可以在 https://github.com/igraph/python-igraph 下查看。

你要找的eigenvector_centrality的函数定义可能在这个文件下:https://github.com/igraph/igraph/blob/2ceb15db7983a15e499844daddd1e1aa72cb0138/src/centrality/centralization.c 使用 C 语言。

,

igraph 使用 ARPACK 来计算特征向量中心性。 ARPACK 是用于查找稀疏矩阵的特征值/特征向量的通用包。

从 igraph 0.9 开始,您将在 igraph 的 C 核心 (link) 的 src/centrality/centrality_other 中找到源代码,尽管我认为查看它并没有特别的帮助。如果您对实施有具体的顾虑,您应该直接询问它们。

一些可能有用的注释:

  • 特征向量中心性仅适用于连通图。对于未连接的情况,该解决方案不是唯一的,igraph 0.9 不保证处理这种情况。
  • 在有向情况下,igraph 使用的定义是 \sum_j A_ij x_i = \lambda x_i,其中 A_ij = 1 如果存在边 i -> j。换句话说,它使用邻接矩阵的左特征向量。但是,请记住,特征向量中心性不被认为是有向图的最合适度量。