ノード数が同数の格子グラフ

  • 昨日の続き
  • ノード数が同数の格子グラフを作るには、格子の次元と1辺の長さとを次のように定めることで可能
  • L_s^{k_s} = \prod_i^{n_i} u_i^{\prod_j^{n_j} k_j}
# L_s^{k_s} = (\prod_{i}^{n_i} u_i^{\prod_j^{n_j}k_j})^{k_s}
# n_i = 1,u_1 = 2にして、n_j = 2にしk_1 =2, k_2 = 3,4,5などと振る
# その上で格子グラフの隣接行列を作り、その特性を固有値スペクトルでみてみようかというソース

ni <- 1
nj <- 2
u <- 2
k <- c(2,5)

N <- 1
L <- rep(1,nj)
for(i in 1:ni){
	N <- N * u[i]^prod(k)
	L <- L * u[i]^(prod(k)/k)
}
N
L

L^k

g.list <- list()
D.list <- list()

par(ask = TRUE)
for(ii in 1:nj){
	M <- rep(list(1:L[ii]),k[ii])
	X <- as.matrix(expand.grid(M))
	print(length(X[,1]))
	D <- matrix(0,N,N)

	for(i in 1:(N-1)){
		for(j in (i+1):N){
			d <- sum(abs(X[i,]-X[j,]))
			if(d == 1){
				D[i,j] <- D[j,i] <- 1
			}
		}
	}
	D.list[[ii]] <- D
	g.list[[ii]] <- graph.adjacency(D)
	#plot(g.list[[ii]],layout=layout.kamada.kawai(g.list[[ii]]))

}

eigen(D.list[[1]])$values -> e.v1
eigen(D.list[[2]])$values -> e.v2

matplot(cbind(e.v1,e.v2),type="l")