- ベキ則のグラフをランダムに作成するBarabasi-Albertモデル
library(igraph)
n.step <- 1000
m0 <- 5
m <- sample(1:m0,1)
print(m)
g0 <- graph.empty(n=m0,directed=FALSE)
g.series <- list()
g.series[[1]] <- g0
for(i in 2:n.step){
tmp.g <- add.vertices(g.series[[i-1]],1)
tmp.degree <- degree(g.series[[i-1]])
if(sum(tmp.degree)==0){
prob <- rep(1,m0+i-2)
}else{
prob <- tmp.degree
}
prob <- prob/sum(prob)
s <- sample(0:(m0+i-3),m,prob=prob)
ed <- cbind(s,rep(m0+i-2,m))
g.series[[i]] <- add.edges(tmp.g,t(ed))
}
par(mfcol=c(1,2))
plot(g.series[[n.step]])
plot(degree.distribution(g.series[[n.step]]))