交互

  • 染色体で交叉すると組換え体ができる
  • こちらにあるように、2色の交代パターンができる(添付のソースは、2次元模様を描くものだが、片方の軸に区切りを入れなければ、1次元のものも描ける)
  • 1次元の交互パターンである
  • 多次元にも交互パターンはある
  • 2次元だと市松模様である(市松模様は、通常、等幅ですが)
  • 多次元だと絵にし難いが、ハッセ図(こちら)を描けば、上から下へと、層状になっていて、このようにノードを配置すると、すべてのノードは、上下の層のノードとの間に辺があるが、それ以外の層のノードとの間には辺はなく、同じ層のノード同士にも辺がないので、層ごとに白黒を入れ替えることで、「隣接する」ノードの色が異なるようにできる
#市松模様
d<-2
cuts<-rpois(d,20)+1

cutpoints<-list(rep(c(),d))
for(i in 1:d){
	cutpoints[[i]]<-sort(c(0,runif(cuts[i]),1))
}
#cutpoints[[1]]<-c(0,1) #1次元にしたければ
cutpoints

cubes<-expand.grid(cutpoints)

values<-rep(0,length(cubes[,1]))
values<-rep(c(0,1),length(values)/2+1)
values<-values[1:length(cubes[,1])]

xx<-c(0:1,1:0)
yy<-c(0:1,1:0)
plot(xx,yy,type="n")
colval1<-1
colval2<-1
for(i in 1:(length(cutpoints[[1]])-1)){
	colval1<-colval1*(-1)
	colval2<-1
	for(j in 1:(length(cutpoints[[2]])-1)){
		colval2<-colval2*(-1)
		colval<-(colval1*colval2+1)/2
		print(colval)
		polygon(c(cutpoints[[1]][i],cutpoints[[1]][i+1],cutpoints[[1]][i+1],cutpoints[[1]][i]),c(cutpoints[[2]][j],cutpoints[[2]][j],cutpoints[[2]][j+1],cutpoints[[2]][j+1]),col=gray(colval/1))
	}
}