- Watts-Strogatzモデル
- 初期状態として、全ノードが同じ次数の対称なグラフを設定し、そこから、辺の片方の端点を指定の確率でつなぎかえるモデル
- つなぎかえ確率が0ならば格子
- つなぎかえ確率が1ならば「ランダム」なグラフだが、このランダムなグラフはErdos-Renyiのランダムグラフとは異なる
n<- 100
k <-4
m <- matrix(0,n,n)
v <- rep(0,n)
v[2:(k/2+1)] <- 1
for(i in 1:n){
if(i > 1){
m[i,] <- v[c((n-i+2):n,1:(n-i+1))]
}else{
m[i,] <- v
}
}
m <- m + t(m)
m.ori <- m
g <- graph.adjacency(m.ori,mode = "undirected")
plot(g,layout=layout.kamada.kawai)
p <- 0.1
for(i in 1:(n-1)){
for(j in (i+1):n){
if(m[i,j] == 1){
r <- runif(1)
if(r < p){
m[i,j] <- m[j,i] <- 0
candidates <- which(m[i,] ==0)
candidates <- candidates[-which(candidates == i)]
s <- sample(candidates,1)
m[i,s] <- m[s,i] <- 1
}
}
}
}
g.2 <- graph.adjacency(m,mode = "undirected")
plot(g.2,layout=layout.kamada.kawai)
degree(g)
degree(g.2)