根据Barabasi-Albert模型,我正在尝试生成无标度图。我使用了barabasi.game
函数,对图的1000个顶点进行了对齐:
library('igraph')
g <- barabasi.game(1000)
我想,现在,随机挑选一个g
的顶点,并在其邻居之间,随机挑选另一个顶点。如何访问图形的顶点?
编辑。我对G5W友好建议的解决方案有疑问。对于此图:
我从第一条指令中获得了
RV<-sample(V(g), 1)
结果RV=4
,但从第二个
RVn<-sample(neighbors(g, RV, mode="all"), 1)
我获得了RVn=1
。正如我们从图中可以看到的,这是一个错误;而且,指导
neighbors(g, i)
回报
+ 1/10 vertex, named, from 57207c1:
[1] 2
为什么?
谢谢。
改性
您可以选择一个随机顶点和一个随机邻居,如下所示:
RV = sample(V(g), 1)
NRV = neighbors(g, RV, mode="all")
RVn = ifelse(length(NRV) == 1, NRV, sample(NRV, 1))
当RV有一个或多个邻居时,这应该有用。
我想提一下,大多数顶点只有一个邻居,所以邻居的随机选择并不多。
table(sapply(V(g), function(v) length(neighbors(g, v, mode="all"))))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 21 37 38 92
657 183 67 35 12 11 3 7 4 6 2 4 1 2 2 1 1 1 1