跳到内容

此函数可以与rewire()一起使用,以随机重连边,同时保持原始图的度分布。

用法

keeping_degseq(loops = FALSE, niter = 100)

参数

loops

是否允许破坏和创建自环边。

niter

要执行的重连试验次数。

详细信息

重连算法在每个步骤中选择两个任意边((a,b) 和 (c,d)),如果它们尚未存在于图中,则将它们替换为 (a,d) 和 (c,b)。 该算法不会创建多重边。

参见

sample_degseq()

其他重连函数:each_edge(), rewire()

作者

Tamas Nepusz ntamas@gmail.com 和 Gabor Csardi csardi.gabor@gmail.com

示例

g <- make_ring(10)
g %>%
  rewire(keeping_degseq(niter = 20)) %>%
  degree()
#>  [1] 2 2 2 2 2 2 2 2 2 2
print_all(rewire(g, with = keeping_degseq(niter = vcount(g) * 10)))
#> IGRAPH e9009c2 U--- 10 10 -- Ring graph
#> + attr: name (g/c), mutual (g/l), circular (g/l)
#> + graph attributes:
#> | + name:
#> |   [1] "Ring graph"
#> | + mutual:
#> |   [1] FALSE
#> | + circular:
#> |   [1] TRUE
#> + edges from e9009c2:
#>  [1] 4-- 7 3-- 6 1-- 8 3-- 5 8-- 9 2--10 6-- 9 1-- 7 2-- 4 5--10