  Modularity is a popular measure of community structure. However, maximizing
the modularity can lead to many competing partitions, with almost the same
modularity, that are poorly correlated with each other. It can also produce
illusory "communities" in random graphs where none exist. We address this
problem by using the modularity as a Hamiltonian at finite temperature, and
using an efficient Belief Propagation algorithm to obtain the consensus of many
partitions with high modularity, rather than looking for a single partition
that maximizes it. We show analytically and numerically that the proposed
algorithm works all the way down to the detectability transition in networks
generated by the stochastic block model. It also performs well on real-world
networks, revealing large communities in some networks where previous work has
claimed no communities exist. Finally we show that by applying our algorithm
recursively, subdividing communities until no statistically-significant
subcommunities can be found, we can detect hierarchical structure in real-world
networks more efficiently than previous methods.
