Explain in detail the different algorithms for community detection, such as the Louvain method, the Girvan-Newman algorithm, the spectral clustering algorithm,Surprise Community Detection,Leiden Community Detection,Walktrap Community Detection.Is there any more types?How are all different from each other?.