  The detection of overlapping communities is a challenging problem which is
gaining increasing interest in recent years because of the natural attitude of
individuals, observed in real-world networks, to participate in multiple groups
at the same time. This review gives a description of the main proposals in the
field. Besides the methods designed for static networks, some new approaches
that deal with the detection of overlapping communities in networks that change
over time, are described. Methods are classified with respect to the underlying
principles guiding them to obtain a network division in groups sharing part of
their nodes. For each of them we also report, when available, computational
complexity and web site address from which it is possible to download the
software implementing the method.
