The Laplacian of a graph.

## Usage

laplacian_matrix(
graph,
normalized = FALSE,
weights = NULL,
sparse = igraph_opt("sparsematrices")
)

## Arguments

graph

The input graph.

normalized

Whether to calculate the normalized Laplacian. See definitions below.

weights

An optional vector giving edge weights for weighted Laplacian matrix. If this is NULL and the graph has an edge attribute called weight, then it will be used automatically. Set this to NA if you want the unweighted Laplacian on a graph that has a weight edge attribute.

sparse

Logical scalar, whether to return the result as a sparse matrix. The Matrix package is required for sparse matrices.

## Value

A numeric matrix.

## Details

The Laplacian Matrix of a graph is a symmetric matrix having the same number of rows and columns as the number of vertices in the graph and element (i,j) is d[i], the degree of vertex i if if i==j, -1 if i!=j and there is an edge between vertices i and j and 0 otherwise.

A normalized version of the Laplacian Matrix is similar: element (i,j) is 1 if i==j, -1/sqrt(d[i] d[j]) if i!=j and there is an edge between vertices i and j and 0 otherwise.

The weighted version of the Laplacian simply works with the weighted degree instead of the plain degree. I.e. (i,j) is d[i], the weighted degree of vertex i if if i==j, -w if i!=j and there is an edge between vertices i and j with weight w, and 0 otherwise. The weighted degree of a vertex is the sum of the weights of its adjacent edges.

Other structural.properties: bfs(), component_distribution(), connect(), constraint(), coreness(), degree(), dfs(), distance_table(), edge_density(), feedback_arc_set(), girth(), is_acyclic(), is_dag(), is_matching(), knn(), reciprocity(), subcomponent(), subgraph(), topo_sort(), transitivity(), unfold_tree(), which_multiple(), which_mutual()

## Author

Gabor Csardi csardi.gabor@gmail.com

## Examples


g <- make_ring(10)
laplacian_matrix(g)
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#>
#>  [1,]  2 -1  .  .  .  .  .  .  . -1
#>  [2,] -1  2 -1  .  .  .  .  .  .  .
#>  [3,]  . -1  2 -1  .  .  .  .  .  .
#>  [4,]  .  . -1  2 -1  .  .  .  .  .
#>  [5,]  .  .  . -1  2 -1  .  .  .  .
#>  [6,]  .  .  .  . -1  2 -1  .  .  .
#>  [7,]  .  .  .  .  . -1  2 -1  .  .
#>  [8,]  .  .  .  .  .  . -1  2 -1  .
#>  [9,]  .  .  .  .  .  .  . -1  2 -1
#> [10,] -1  .  .  .  .  .  .  . -1  2
laplacian_matrix(g, norm = TRUE)
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#>
#>  [1,]  1.0 -0.5  .    .    .    .    .    .    .   -0.5
#>  [2,] -0.5  1.0 -0.5  .    .    .    .    .    .    .
#>  [3,]  .   -0.5  1.0 -0.5  .    .    .    .    .    .
#>  [4,]  .    .   -0.5  1.0 -0.5  .    .    .    .    .
#>  [5,]  .    .    .   -0.5  1.0 -0.5  .    .    .    .
#>  [6,]  .    .    .    .   -0.5  1.0 -0.5  .    .    .
#>  [7,]  .    .    .    .    .   -0.5  1.0 -0.5  .    .
#>  [8,]  .    .    .    .    .    .   -0.5  1.0 -0.5  .
#>  [9,]  .    .    .    .    .    .    .   -0.5  1.0 -0.5
#> [10,] -0.5  .    .    .    .    .    .    .   -0.5  1.0
laplacian_matrix(g, norm = TRUE, sparse = FALSE)
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#>  [1,]  1.0 -0.5  0.0  0.0  0.0  0.0  0.0  0.0  0.0  -0.5
#>  [2,] -0.5  1.0 -0.5  0.0  0.0  0.0  0.0  0.0  0.0   0.0
#>  [3,]  0.0 -0.5  1.0 -0.5  0.0  0.0  0.0  0.0  0.0   0.0
#>  [4,]  0.0  0.0 -0.5  1.0 -0.5  0.0  0.0  0.0  0.0   0.0
#>  [5,]  0.0  0.0  0.0 -0.5  1.0 -0.5  0.0  0.0  0.0   0.0
#>  [6,]  0.0  0.0  0.0  0.0 -0.5  1.0 -0.5  0.0  0.0   0.0
#>  [7,]  0.0  0.0  0.0  0.0  0.0 -0.5  1.0 -0.5  0.0   0.0
#>  [8,]  0.0  0.0  0.0  0.0  0.0  0.0 -0.5  1.0 -0.5   0.0
#>  [9,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0 -0.5  1.0  -0.5
#> [10,] -0.5  0.0  0.0  0.0  0.0  0.0  0.0  0.0 -0.5   1.0