フェーズを決めたら、染色体グラフは木の集合になる

  • 染色体の伝達が未確定のとき、染色体グラフは分岐を持つが、確定すると、木の集合になる
  • Rでやれば:
# sepGraphsと伝達パターンから、木を作って取り出す
SelectTrees<-function(sepG,v){
	ret<-list()
	for(i in 1:length(sepG)){
		tmp<-sepG[[i]][,1:2]
		for(j in 1:length(tmp[,1])){
			tmp[j,2]<-sepG[[i]][j,v[tmp[j,1]]+1]
		}
		#print(tmp)
		tmp2<-rep(0,max(tmp))
		cnt<-1
		for(j in 1:length(tmp[,1])){
			if(tmp[j,1]*tmp[j,2]!=0){
				M<-max(tmp2[tmp[j,1]],tmp2[tmp[j,2]])
				#print(M)
				if(M==0){
					M<-cnt
					cnt<-cnt+1
					tmp2[tmp[j,1]]<-tmp2[tmp[j,2]]<-M
				}else{
					tmp2[tmp[j,1]]<-tmp2[tmp[j,2]]<-M
				}
			}
		}
		ret[[i]]<-tmp2[tmp[,1]]
	}
	ret
}
SelectTrees(sepGraphs,s2[1,])
  • 染色体の連結グラフごとに、属するノードの帰属木番号を振ってやる
    • sepGraphsは連結グラフのリスト
    • vは、伝達情報ベクトル
> SelectTrees(sepGraphs,v)
[[1]]
[1] 1 2 1 2 1 1

[[2]]
[1] 1 0 1 1 1 1