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 calledweight
, then it will be used automatically. Set this toNA
if you want the unweighted Laplacian on a graph that has aweight
edge attribute.- sparse
Logical scalar, whether to return the result as a sparse matrix. The
Matrix
package is required for sparse matrices.
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.
See also
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()
,
k_shortest_paths()
,
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