R中每个节点的不同程度的随机图
Random graph with different degree for each node in R
我有 122 个节点,我想创建一个随机图,每个节点的节点度都是固定的。有没有办法在 R 中做到这一点?我尝试了 igraph,在这里我可以为所有节点修复相同的度数,即 122 个节点中的每个节点的度数为 2。但是,我想为每个节点创建一个具有固定度数的随机图(即节点 A 的度数为 4 ; 节点 B 的度数为 5)
我试过下面的代码,现在可以了:
outdegrees <- c(2, 1, 2, 1, 2)
g <- sample_degseq(outdegrees, method = "Vl")
谢谢
普里亚
您可以使用sample_degseq
创建具有指定度数序列的图形。
例如,假设您需要度数序列 1, 1, 2, 2, ..., 61, 61
。您可以使用以下代码:
> library(igraph)
> deg.seq <- rep(1:61, 2)
> sample_degseq(deg.seq)
IGRAPH 45e3c32 U--- 122 1891 -- Degree sequence random graph
+ attr: name (g/c), method (g/c)
+ edges from 45e3c32:
[1] 80--121 9-- 82 54--114 57-- 96 52-- 60 16-- 55 38--105 29-- 80
[9] 69--115 6-- 28 92--111 29-- 49 47-- 67 90--106 49--121 43--114
[17] 40-- 46 47--115 120--122 55--100 98--104 43--109 28-- 98 25--115
[25] 38-- 43 48-- 52 27-- 92 26--107 53--107 60--110 97--110 91--106
[33] 18-- 98 117--119 28-- 51 58--104 61--110 43--105 39-- 51 31-- 95
[41] 84-- 87 94--112 32-- 58 41-- 98 19--113 40-- 47 41-- 50 116--121
[49] 51-- 95 58--118 97--111 100--119 40-- 92 18--114 22--101 46-- 77
[57] 12-- 88 54--109 49-- 58 42-- 61 47-- 53 45--116 31--122 52--102
+ ... omitted several edges
这是一种方法:
- 列出清单,
L
。
- 对于每个
i
,将 c_i
i
放入列表中。
- 随机播放列表。
- 将
L[1]
连接到 L[2]
,将 L[3]
连接到 L[4]
等
- 如果您最终遇到自循环(并且不想那样),请转到 3。
我有 122 个节点,我想创建一个随机图,每个节点的节点度都是固定的。有没有办法在 R 中做到这一点?我尝试了 igraph,在这里我可以为所有节点修复相同的度数,即 122 个节点中的每个节点的度数为 2。但是,我想为每个节点创建一个具有固定度数的随机图(即节点 A 的度数为 4 ; 节点 B 的度数为 5)
我试过下面的代码,现在可以了:
outdegrees <- c(2, 1, 2, 1, 2)
g <- sample_degseq(outdegrees, method = "Vl")
谢谢
普里亚
您可以使用sample_degseq
创建具有指定度数序列的图形。
例如,假设您需要度数序列 1, 1, 2, 2, ..., 61, 61
。您可以使用以下代码:
> library(igraph)
> deg.seq <- rep(1:61, 2)
> sample_degseq(deg.seq)
IGRAPH 45e3c32 U--- 122 1891 -- Degree sequence random graph
+ attr: name (g/c), method (g/c)
+ edges from 45e3c32:
[1] 80--121 9-- 82 54--114 57-- 96 52-- 60 16-- 55 38--105 29-- 80
[9] 69--115 6-- 28 92--111 29-- 49 47-- 67 90--106 49--121 43--114
[17] 40-- 46 47--115 120--122 55--100 98--104 43--109 28-- 98 25--115
[25] 38-- 43 48-- 52 27-- 92 26--107 53--107 60--110 97--110 91--106
[33] 18-- 98 117--119 28-- 51 58--104 61--110 43--105 39-- 51 31-- 95
[41] 84-- 87 94--112 32-- 58 41-- 98 19--113 40-- 47 41-- 50 116--121
[49] 51-- 95 58--118 97--111 100--119 40-- 92 18--114 22--101 46-- 77
[57] 12-- 88 54--109 49-- 58 42-- 61 47-- 53 45--116 31--122 52--102
+ ... omitted several edges
这是一种方法:
- 列出清单,
L
。 - 对于每个
i
,将c_i
i
放入列表中。 - 随机播放列表。
- 将
L[1]
连接到L[2]
,将L[3]
连接到L[4]
等 - 如果您最终遇到自循环(并且不想那样),请转到 3。