- 複数のON-OFFスイッチでできたシステムがあるとする
- その格子空間を酔歩しているとする
- 歩きながら何もシステムに変化がなければただの酔歩
- 酔歩にはSelf-avoiding path的な酔歩というのがある
- すでに通ったノードはもう通らない、というルールを課した酔歩のことである
- これを言い換える
- すでに通ったノードに連結するエッジを取り去り、格子を改変しながら進む酔歩である、と
- じゃあ、少し一般化して「格子を改変しながら進む」ときの「エッジの取り去りルール」を、「ノードに連結するエッジ」を取り除くのではなくて、「ノードが指定したエッジ」を取り除くことにする
- そうすると格子の上を酔歩しながら、格子のエッジがだんだん減って行く
- それを「自己改変型多スイッチシステム」と呼ぶことにしよう
- このようなシステム上をある点から多数の酔歩する虫が歩くと、虫の座標の分布に特徴が現れる
- どんな「取り去りエッジ指定情報」のときに、どんな「分布特徴」が対応するか、には、どういうルールが潜むのだろう?
- 以下、お試しソース
n <- 5
x <- expand.grid(rep(list(0:1),n))
d <- as.matrix(dist(x,method="manhattan"))
d. <- d
d. <- d.==1
library(igraph)
g <- graph.adjacency(d.)
plot(g)
e.list <- get.edgelist(g)
v.e <- sample(1:length(e.list[,1]),length(x[,1]),replace=TRUE)
v.e <- list()
for(i in 1:length(d.[,1])){
v.e[[i]] <- sample(1:length(e.list[,1]),sample(10))
}
n.rep <- 50
n.iter <- 100
n.step <- 50
f <- matrix(0,n.rep,length(d.[1,]))
for(ii in 1:n.rep){
p <- matrix(0,n.iter,n.step+1)
for(i in 1:n.iter){
init <- 1
m <- d.
p[i,1] <- init
for(j in 1:n.step){
rm.edge <- matrix(e.list[v.e[[p[i,j]]],],ncol=2)
for(k in 1:length(rm.edge[,1])){
m[rm.edge[k,1],rm.edge[k,2]] <- m[rm.edge[k,2],rm.edge[k,1]] <- 0
}
ok <- which(m[p[i,j],] == 1)
if(length(ok)>0){
s <- sample(ok,1)
if(runif(1) < 0.5){
p[i,j+1] <- s
}else{
p[i,j+1] <- p[i,j]
}
}else{
p[i,j+1] <- p[i,j]
}
}
}
t <- table(p[,n.step])
t
tab <- tabulate(p[,n.step],length(d.[1,]))
f[ii,] <- tab
}
length(t)
length(d.[1,])
all.tab <- apply(p,2,tabulate)
for(i in 1:(n.step+1)){
tab <- tabulate(p[,i])
plot(g,vertex.color=rgb(tab/max(tab),1-tab/max(tab),0))
}