  In the last few years many real-world networks have been found to show a
so-called community structure organization. Much effort has been devoted in the
literature to develop methods and algorithms that can efficiently highlight
this hidden structure of the network, traditionally by partitioning the graph.
Since network representation can be very complex and can contain different
variants in the traditional graph model, each algorithm in the literature
focuses on some of these properties and establishes, explicitly or implicitly,
its own definition of community. According to this definition it then extracts
the communities that are able to reflect only some of the features of real
communities. The aim of this survey is to provide a manual for the community
discovery problem. Given a meta definition of what a community in a social
network is, our aim is to organize the main categories of community discovery
based on their own definition of community. Given a desired definition of
community and the features of a problem (size of network, direction of edges,
multidimensionality, and so on) this review paper is designed to provide a set
of approaches that researchers could focus on.
