graph_tool.inference.bethe_entropy#

graph_tool.inference.bethe_entropy(g, p)[source]#

Compute the Bethe entropy given the edge block membership marginals.

Parameters:
gGraph

The graph.

pEdgePropertyMap

Edge property map with edge marginals.

Returns:
Hfloat

The Bethe entropy value (in nats)

Hmffloat

The “mean field” entropy value (in nats), as would be returned by the mf_entropy() function.

pvVertexPropertyMap (optional, default: None)

Vertex property map with vector-type values, storing the accumulated block membership counts. These are the node marginals, as would be returned by the collect_vertex_marginals() method.

Notes

The Bethe entropy is defined as,

\[H = -\sum_{ij}A_{ij}\sum_{rs}\pi_{ij}(r,s)\ln\pi_{ij}(r,s) - \sum_i(1-k_i)\sum_r\pi_i(r)\ln\pi_i(r),\]

where \(\pi_{ij}(r,s)\) is the marginal probability that vertices \(i\) and \(j\) belong to blocks \(r\) and \(s\), respectively, and \(\pi_i(r)\) is the marginal probability that vertex \(i\) belongs to block \(r\), and \(k_i\) is the degree of vertex \(i\) (or total degree for directed graphs).

References

[mezard-information-2009]

Marc Mézard, Andrea Montanari, “Information, Physics, and Computation”, Oxford Univ Press, 2009. DOI: 10.1093/acprof:oso/9780198570837.001.0001 [sci-hub, @tor]