This documents the development version of NetworkX. Documentation for the current release can be found here.


bethe_hessian_matrix(G, r=None, nodelist=None)[source]

Returns the Bethe Hessian matrix of G.

The Bethe Hessian is a family of matrices parametrized by r, defined as H(r) = (r^2 - 1) I - r A + D where A is the adjacency matrix, D is the diagonal matrix of node degrees, and I is the identify matrix. It is equal to the graph laplacian when the regularizer r = 1.

The default choice of regularizer should be the ratio [2]

\[r_m = \left(\sum k_i \right)^{-1}\left(\sum k_i^2 \right) - 1\]
  • G (Graph) – A NetworkX graph

  • r (float) – Regularizer parameter

  • nodelist (list, optional) – The rows and columns are ordered according to the nodes in nodelist. If nodelist is None, then the ordering is produced by G.nodes().


H – The Bethe Hessian matrix of G, with paramter r.

Return type

Numpy matrix


>>> k = [3, 2, 2, 1, 0]
>>> G = nx.havel_hakimi_graph(k)
>>> H = nx.modularity_matrix(G)

See also

bethe_hessian_spectrum(), to_numpy_array(), adjacency_matrix(), laplacian_matrix()



A. Saade, F. Krzakala and L. Zdeborová “Spectral clustering of graphs with the bethe hessian”, Advances in Neural Information Processing Systems. 2014.


C. M. Lee, E. Levina “Estimating the number of communities in networks by spectral methods” arXiv:1507.00827, 2015.