Easy-Graph icon indicating copy to clipboard operation
Easy-Graph copied to clipboard

feat:support eigenvector centrality algorithm

Open Nianle-Li opened this issue 3 months ago • 0 comments

This pull request adds support for calculating eigenvector centrality in EasyGraph, including both Python and C++ implementations, integration with pybind11, and comprehensive unit tests. The changes also update the build system to support Eigen3 and OpenMP for efficient computation.

Eigenvector Centrality Feature

  • Added a new eigenvector_centrality function in easygraph/functions/centrality/eigenvector.py, which computes eigenvector centrality using the power iteration method or ARPACK solver, with support for weighted graphs, custom initial vectors, and handling of isolated nodes.
  • Registered the new function in the centrality module’s __init__.py for easy import and usage.
  • Added the C++ interface for eigenvector centrality in centrality.h and exposed it to Python via pybind11 in cpp_easygraph.cpp as cpp_eigenvector_centrality. [1] [2]

Build System Enhancements

  • Updated cpp_easygraph/CMakeLists.txt to detect and use Eigen3 and OpenMP, enabling efficient linear algebra operations and parallel computation in the C++ backend.

Testing

  • Added a comprehensive test suite for eigenvector centrality in easygraph/functions/centrality/tests/test_eigenvector.py, covering various graph types, parameters, error conditions, and edge cases.

Nianle-Li avatar Oct 23 '25 13:10 Nianle-Li