使用 igraph 在 R 中创建规则图或邻接矩阵?
Creating a regular graph or adjacency matrix in R, with igraph?
我目前正在尝试(理想情况下)使用 igraph 生成规则的邻接矩阵。我希望每个单位都和k个人做邻居
对于k = 2,我希望得到:
library(igraph)
as_adj(make_graph(c(1, 2, 1, 10, 2, 3, 3, 4, 4, 5 ,5,6, 6,7, 7,8, 8,9, 9, 10), directed = FALSE))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 1 0 0 0 0 0 0 0 1
[2,] 1 0 1 0 0 0 0 0 0 0
[3,] 0 1 0 1 0 0 0 0 0 0
[4,] 0 0 1 0 1 0 0 0 0 0
[5,] 0 0 0 1 0 1 0 0 0 0
[6,] 0 0 0 0 1 0 1 0 0 0
[7,] 0 0 0 0 0 1 0 1 0 0
[8,] 0 0 0 0 0 0 1 0 1 0
[9,] 0 0 0 0 0 0 0 1 0 1
[10,] 1 0 0 0 0 0 0 0 1 0
有没有一种方法可以使用 igraph
中的现有函数来创建如上图那样的图形,但用于通用 k?谢谢
你可以用 sample_degseq
:
“创建具有给定顶点度数的图通常很有用。这正是 sample_degseq
确实。"
k=3 # degree for each node
n=10 # number of nodes
g = sample_degseq(rep(k,n),method = "simple.no.multiple")
邻接:
as_adj(g)
[1,] . . 1 . 1
[2,] . . 1 1 .
[3,] 1 1 . . .
[4,] . 1 . . 1
[5,] 1 . . 1 .
剧情:
plot(g)
我目前正在尝试(理想情况下)使用 igraph 生成规则的邻接矩阵。我希望每个单位都和k个人做邻居
对于k = 2,我希望得到:
library(igraph)
as_adj(make_graph(c(1, 2, 1, 10, 2, 3, 3, 4, 4, 5 ,5,6, 6,7, 7,8, 8,9, 9, 10), directed = FALSE))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 1 0 0 0 0 0 0 0 1
[2,] 1 0 1 0 0 0 0 0 0 0
[3,] 0 1 0 1 0 0 0 0 0 0
[4,] 0 0 1 0 1 0 0 0 0 0
[5,] 0 0 0 1 0 1 0 0 0 0
[6,] 0 0 0 0 1 0 1 0 0 0
[7,] 0 0 0 0 0 1 0 1 0 0
[8,] 0 0 0 0 0 0 1 0 1 0
[9,] 0 0 0 0 0 0 0 1 0 1
[10,] 1 0 0 0 0 0 0 0 1 0
有没有一种方法可以使用 igraph
中的现有函数来创建如上图那样的图形,但用于通用 k?谢谢
你可以用 sample_degseq
:
“创建具有给定顶点度数的图通常很有用。这正是 sample_degseq 确实。"
k=3 # degree for each node
n=10 # number of nodes
g = sample_degseq(rep(k,n),method = "simple.no.multiple")
邻接:
as_adj(g)
[1,] . . 1 . 1
[2,] . . 1 1 .
[3,] 1 1 . . .
[4,] . 1 . . 1
[5,] 1 . . 1 .
剧情:
plot(g)