Various approaches exist; they belong to a few main methodological categories which we succinctly overview here. First, the divisive approach starts from the entire graph and successively splits it into more and more communities. Some algorithms achieve this by removing inter-communities edges (the communities are the remaining connected components) according to their betweenness [1]}, [2]} or their local clustering [3]}. Others use recursive bisection mechanisms based on minimum cuts [4]} or spectral methods [5]}. Another family of approaches, the agglomerative one, starts from \(n\)  single-vertex communities and merges them successively into larger and larger communities. Some algorithms use hierarchical clustering methods according to different similarity measurements based on spectral properties [6]} or random walks [7]}, [8]}, [9]}. Other algorithms are based on greedy optimization of a quality function [10]}. Finally, direct approaches try to perform global optimization of a quality function [11]}, [12]}, or iteratively modify the weight of the edges to make clusters appear [13]}, have also been used.
