При генерации k-регулярного графа с помощью igraph в R каждый k-регулярный граф уникален и неслучайен? - PullRequest
0 голосов
/ 26 октября 2018

Я хотел бы сгенерировать k-регулярный граф, используя igraph в 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() поверх вызова функции?)

1 Ответ

0 голосов
/ 26 октября 2018

Там действительно есть случайность.Давайте возьмем что-то более податливое:

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 по построению.

...