# cluster_louvain

##### Finding community structure by multi-level optimization of modularity

This function implements the multi-level modularity optimization algorithm for finding community structure, see references below. It is based on the modularity measure and a hierarchial approach.

- Keywords
- graphs

##### Usage

`cluster_louvain(graph, weights = NULL)`

##### Arguments

- graph
- The input graph.
- weights
- Optional positive weight vector. If the graph has a
`weight`

edge attribute, then this is used by default. Supply`NA`

here if the graph has a`weight`

edge attribute, but you want to ignore it.

##### Details

This function implements the multi-level modularity optimization algorithm
for finding community structure, see VD Blondel, J-L Guillaume, R Lambiotte
and E Lefebvre: Fast unfolding of community hierarchies in large networks,

It is based on the modularity measure and a hierarchial approach. Initially, each vertex is assigned to a community on its own. In every step, vertices are re-assigned to communities in a local, greedy way: each vertex is moved to the community with which it achieves the highest contribution to modularity. When no vertices can be reassigned, each community is considered a vertex on its own, and the process starts again with the merged communities. The process stops when there is only a single vertex left or when the modularity cannot be increased any more in a step.

This function was contributed by Tom Gregorovic.

##### Value

`cluster_louvain`

returns a`communities`

object, please see the`communities`

manual page for details.

##### References

Vincent D. Blondel, Jean-Loup Guillaume, Renaud Lambiotte, Etienne Lefebvre: Fast unfolding of communities in large networks. J. Stat. Mech. (2008) P10008

##### See Also

See `communities`

for extracting the membership,
modularity scores, etc. from the results.

Other community detection algorithms: `cluster_walktrap`

,
`cluster_spinglass`

,
`cluster_leading_eigen`

,
`cluster_edge_betweenness`

,
`cluster_fast_greedy`

,
`cluster_label_prop`

##### Examples

```
# This is so simple that we will have only one level
g <- make_full_graph(5) %du% make_full_graph(5) %du% make_full_graph(5)
g <- add_edges(g, c(1,6, 1,11, 6, 11))
cluster_louvain(g)
```

*Documentation reproduced from package igraph, version 1.0.0, License: GPL (>= 2)*

### Community examples

**emmanuel.olemou@gmail.com**at Apr 3, 2019 igraph v1.2.4

g <- make_full_graph(5) %du% make_full_graph(5) %du% make_full_graph(5) g <- add_edges(g, c(1,6, 1,11, 6, 11)) cluster_louvain(g)