首页 > 解决方案 > 在使用 R 中的 igraph 生成 k-正则图时,每个 k-正则图是否都是唯一且非随机的?

问题描述

我想使用igraphin生成一个 k 正则图R。我要去的一个示例函数,它首先获取游戏,然后转换为邻接矩阵:

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()(意味着在函数调用之上添加没有效果?)

标签: rigraph

解决方案


确实有随机性。让我们采取一些更容易处理的事情:

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通过建设。


推荐阅读