This function can be used together with rewire() to
randomly rewire the edges while preserving the original graph's degree
distribution.
Details
The rewiring algorithm chooses two arbitrary edges in each step ((a,b) and (c,d)) and substitutes them with (a,d) and (c,b), if they not already exists in the graph. The algorithm does not create multiple edges.
See also
Other rewiring functions:
each_edge(),
rewire()
Author
Tamas Nepusz [email protected] and Gabor Csardi [email protected]
Examples
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 bdbd6f4 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 bdbd6f4:
#> [1] 4-- 7 3-- 6 1-- 8 3-- 5 8-- 9 2--10 6-- 9 1-- 7 2-- 4 5--10
