第7章 CHKNSモデル ぱらぱらめくる『ランダム グラフ ダイナミクス』

  • ノード数1からノードを一つずつ増やしつつ、ある確率で辺を増やしていく
  • 加えたノードは必ずしも連結しない
  • 連結成分の大きさの変化とその融合の具合を追いかける
n.step <- 100

m0 <- 1
g0 <- graph.empty(n=m0,directed=FALSE)
g.series <- list()
g.series[[1]] <- g0
d <- 0.01
for(i in 2:n.step){
	tmp.g <- add.vertices(g.series[[i-1]],1)
	m <- matrix(sample(c(0,1),i^2,replace=TRUE,prob=c(1-d,d)),i,i)
	m[lower.tri(m)] <- 0
	diag(m) <- 0
	enlarged.m <- matrix(0,i,i)
	enlarged.m[1:(i-1),1:(i-1)] <- get.adjacency(g.series[[i-1]])
	already.edge <- which(enlarged.m ==1)
	#print(get.adjacency(g.series[[i-1]]))
	#print(m)

	m[already.edge] <- 0
	#print(m)
	ed <- which(m == 1,arr.ind=TRUE)
	#print(ed-1)
	g.series[[i]] <- add.edges(tmp.g,t(ed)-1)
}
par(mfcol=c(1,2))
for(i in 1:n.step){
	plot(g.series[[i]])
	plot(degree.distribution(g.series[[i]]))
	Sys.sleep(0.3)
}

plot(g.series[[n.step]])
plot(degree.distribution(g.series[[n.step]]))