- 前の記事で、要素間の関係定義を与えるにあたって、要素を「長方形」に納めることでAssociation Schemeを満足させた
- 行で関係を決め、決まらなかったら、列で決め、それでも決まらなかったら、「残り」という論理だった
- 「行」「列」が1つずつでなければならない処理の組み方になっていないので、多次元にして、第1軸→第2軸→第3軸→…最終軸→残り、という処理でもよさそう
- ということで、そのような組み方にしたのが以下
numdim<-3
nnns<-sample(3:5,numdim,replace=TRUE)
numelem<-prod(nnns)
numelem
Ma<-array(1:numelem,nnns)
Ma
v<-numelem
A<-matrix(0,v,v)
for(i in 1:v){
tmp1<-which(Ma==i,arr.ind=TRUE)
for(j in 1:v){
tmp2<-which(Ma==j,arr.ind=TRUE)
if(i==j){
A[i,j]<-0
}else{
difftmp<-tmp1-tmp2
zeros<-which(difftmp==0)
if(length(zeros)==0){
A[i,j]<-length(difftmp)+1
}else{
A[i,j]<-min(zeros)
}
}
}
}
As<-list()
for(i in 0:n){
As[[i+1]]<-matrix(0,v,v)
As[[i+1]][which(A==i,arr.ind=TRUE)]<-1
}
Asum<-matrix(0,v,v)
for(i in 1:(3+1)){
Asum<-Asum+As[[i]]
}
Asum
for(i in 0:(3-1)){
for(j in (i+1):3){
print(As[[i+1]]%*%As[[j+1]])
}
}
J<-matrix(1,v,v)
As[[2]]%*%J
J%*%As[[2]]
A
t<-seq(from=0,to=1,length=v+1)*2*pi
t<-t[-length(t)]
plot(cos(t),sin(t))
for(i in 1:length(As)){
for(j in 1:length(As[[i]][,1])){
for(k in 1:length(As[[i]][1,])){
if(As[[i]][j,k]==1){
segments(cos(t[j]),sin(t[j]),cos(t[k]),sin(t[k]),col=i,lwd=1)
}
}
}
}