跳到内容

图的拉普拉斯算子。

用法

laplacian_matrix(
  graph,
  weights = NULL,
  sparse = igraph_opt("sparsematrices"),
  normalization = c("unnormalized", "symmetric", "left", "right"),
  normalized
)

参数

graph

输入图。

weights

一个可选的向量,给出加权拉普拉斯矩阵的边权重。如果此参数为NULL且图具有名为weight的边属性,则将自动使用它。 如果您希望在具有weight边属性的图上使用未加权的拉普拉斯算子,请将其设置为NA

sparse

逻辑标量,指示是否将结果作为稀疏矩阵返回。 需要Matrix包才能处理稀疏矩阵。

normalization

计算拉普拉斯矩阵时要使用的归一化方法。 请参阅此页面上的“归一化方法”部分。

normalized

已弃用,请改用normalization

一个数值矩阵。

详细信息

图的拉普拉斯矩阵是一个对称矩阵,其行数和列数与图中顶点的数量相同,元素 (i,j) 是 d[i],顶点 i 的度数,如果 i==j,则为 -1 如果 i!=j 且顶点 i 和 j 之间存在边,否则为 0。

拉普拉斯矩阵也可以归一化,有几种传统的归一化方法。 请参阅此页面上的“归一化方法”部分。

拉普拉斯算子的加权版本只需使用加权度数而不是普通度数。 即 (i,j) 是 d[i],顶点 i 的加权度数,如果 i==j,则为 -w 如果 i!=j 且顶点 i 和 j 之间存在权重为 w 的边,否则为 0。 顶点的加权度数是其相邻边的权重的总和。

归一化方法

拉普拉斯矩阵 \(L\) 根据邻接矩阵 \(A\) 和包含度数的对角矩阵 \(D\) 定义如下

  • "unnormalized": 未归一化的拉普拉斯算子,\(L = D - A\)。

  • "symmetric": 对称归一化的拉普拉斯算子,\(L = I - D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\)。

  • "left": 左随机归一化的拉普拉斯算子,\({L = I - D^{-1} A}\)。

  • "right": 右随机归一化的拉普拉斯算子,\(L = I - A D^{-1}\)。

作者

Gabor Csardi csardi.gabor@gmail.com

get_laplacian(), get_laplacian_sparse()

示例


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, normalization = "unnormalized")
#> 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, normalization = "unnormalized", sparse = FALSE)
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#>  [1,]    2   -1    0    0    0    0    0    0    0    -1
#>  [2,]   -1    2   -1    0    0    0    0    0    0     0
#>  [3,]    0   -1    2   -1    0    0    0    0    0     0
#>  [4,]    0    0   -1    2   -1    0    0    0    0     0
#>  [5,]    0    0    0   -1    2   -1    0    0    0     0
#>  [6,]    0    0    0    0   -1    2   -1    0    0     0
#>  [7,]    0    0    0    0    0   -1    2   -1    0     0
#>  [8,]    0    0    0    0    0    0   -1    2   -1     0
#>  [9,]    0    0    0    0    0    0    0   -1    2    -1
#> [10,]   -1    0    0    0    0    0    0    0   -1     2