我想使用igraph
中的R
来生成k正则图。我要使用的示例函数首先获得游戏,然后转换为邻接矩阵:
game <- sample_k_regular(no.of.nodes=3000, k=30)
game_adj <- as.matrix(as_adj(game))
sample_k_regular
中似乎没有随机性,因此如果我们进行另一次采样,例如:
game2 <- sample_k_regular(no.of.nodes=3000, k=30)
game2_adj <- as.matrix(as_adj(game2))
并计算出差异:
sum(game2_adj-game_adj)
我们得到的正是0。
一旦我们指定了节点数和每个节点的度数(邻居数),它将完全唯一吗? (这意味着在函数调用的顶部添加set.seed()
无效吗?)
答案 0 :(得分:1)
确实存在随机性。让我们采取一些更易处理的方法:
game1 <- sample_k_regular(no.of.nodes = 5, k = 2)
game2 <- sample_k_regular(no.of.nodes = 5, k = 2)
game_adj1 <- as.matrix(as_adj(game1))
game_adj2 <- as.matrix(as_adj(game2))
game_adj1
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 0 0 1 1
# [2,] 0 0 1 1 0
# [3,] 0 1 0 0 1
# [4,] 1 1 0 0 0
# [5,] 1 0 1 0 0
game_adj2
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 0 1 0 1
# [2,] 0 0 1 1 0
# [3,] 1 1 0 0 0
# [4,] 0 1 0 0 1
# [5,] 1 0 0 1 0
game_adj1 - game_adj2
# [,1] [,2] [,3] [,4] [,5]
# [1,] 0 0 -1 1 0
# [2,] 0 0 0 0 0
# [3,] -1 0 0 0 1
# [4,] 1 0 0 0 -1
# [5,] 0 0 1 -1 0
但是,你是对的
sum(game_adj1 - game_adj2)
# [1] 0
但这是可以预期的,因为sum(game_adj1)
和sum(game_adj2)
是no.of.nodes * k
的构造。