- こちらの続き
- Latin squareが作るAssociation schemeの行列表現を作ってみる
- ラテン方格は『n 行 n 列の表に n 個の異なる記号を、各記号が各行および各列に1回だけ現れるように並べたもの』
- 今、個の要素について、そのペアをとって関係を考える
- 「自身」という関係
- 「第一関係」という関係
- ラテン方格において、行が一緒か、列が一緒か、入っている値が一緒だったら「第一関係」。ただし、「自身」という関係の場合を除く
- 「第二関係」はそれ以外
- 上記3つの関係として、それぞれの関係にある場合に1、ない場合に0となるような行列を3つ作る
X<-matrix(c("A","B","C","D","D","A","B","C","C","D","A","B","B","C","D","A"),4,4,byrow=TRUE)
Y<-matrix(1:16,4,4,byrow=TRUE)
M<-matrix(0,4^2,4^2)
A0<-diag(rep(1,4^2))
R<-C<-L<-matrix(0,4^2,4^2)
for(i in 1:16){
tmp1<-which(Y==i,arr.ind=TRUE)
for(j in 1:16){
tmp2<-which(Y==j,arr.ind=TRUE)
if(tmp1[1]==tmp2[1]){
R[i,j]<-1
}
if(tmp1[2]==tmp2[2]){
C[i,j]<-1
}
if(X[tmp1]==X[tmp2]){
L[i,j]<-1
}
}
}
A1<-R+C+L-3*A0
J<-matrix(1,16,16)
A2<-J-A1-A0
A1%*%J
A2%*%J
v<-16
t<-seq(from=0,to=1,length=v+1)*2*pi
t<-t[-length(t)]
plot(cos(t),sin(t))
As<-list()
As[[1]]<-A0
As[[2]]<-A1
As[[3]]<-A2
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)
}
}
}
}