Note

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

# networkx.linalg.bethehessianmatrix.bethe_hessian_matrix¶

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$
Parameters
GGraph

A NetworkX graph

rfloat

Regularizer parameter

nodelistlist, 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().

Returns
HNumpy matrix

The Bethe Hessian matrix of G, with paramter r.

bethe_hessian_spectrum
to_numpy_array
adjacency_matrix
laplacian_matrix

References

1

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

2

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

Examples

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