入れ子

  • 境のない空間では、放っておくと拡散して均一化してしまう
  • そこにしきりを入れて、パーツ化し、個々のパーツに量子的な反応をさせると、減衰するに任せない動きが作りやすい
  • パーツ化を入れ子にしてやると階層的な構造になる
  • 生物の現象は多かれ少なかれパーツ化・階層化がなされている
  • たとえば、集団、個体、臓器、組織、細胞、細胞内小器官、小器官内骨格構造
  • 単純に考え始めることはいつも大事なので、ごく単純に
  • フラクタルな構成にして階層化すると、どの階層でも同じルールで動かせるのでよい
  • たとえばこんなモデル
    • ある成分がある階層で複数の状態を巡回している
    • 一つ上・一つ下の階層とやりとりする巡回点が一つある
    • これは、分岐木の構造をとる
    • 分岐木の構成をRでうまく取り扱うために、bnlearnパッケージのグラフ要素を取り入れてみる
library(bnlearn)
Ns<-4 # 階層数
Ne<-4 # 巡回状態数

m<-matrix(0,Ne,Ne)

# この分岐木のノード数
Nnode<-((Ne-1)^Ns-1)/(Ne-2)

# この分岐木をグラフとして見て、そのエッジを行列表現する
# 1は自身、2は行に親ノード、列に子ノード
# 3は行に子ノード、列に親ノード

MM<-diag(rep(1,Nnode))
NodeName<-paste("",1:Nnode)
h<-1
a<-1
for(i in 2:Nnode){
	MM[h,i]<-2
	MM[i,h]<-3
	a<-a+1
	if(a==Ne){
		h<-h+1
		a<-1
	}
}

# 辺のリスト(始点ノード、終点ノード)を作る
E<-c()
for(i in 1:Nnode){
	for(j in 1:Nnode){
		if(MM[i,j]==2){
			E<-c(E,NodeName[i],NodeName[j])
		}
	}
}

E<-matrix(E,byrow=TRUE,ncol=2)

# 辺なしのグラフを作って、辺を与える
g<-empty.graph(NodeName)
arcs(g)<-E

# グラフオブジェクトgの様子を見てみる
plot(g)

g$nodes
length(g$nodes)

for(i in 1:length(g$nodes)){
	print(g$nodes[[i]]$children)
}

# 各ノードに値(量など)を与えてみる
for(i in 1:Nnode){
	g$nodes[[i]]$freq<-runif(1)

}