%I #31 Apr 02 2015 18:05:02
%S 1,1,4,64,7132,201538000,432345572694417712,
%T 3987683987354747642922773353963277968,
%U 678469272874899582559986240285280710364867063489779510427038722229750276832
%N Number of reduced Latin n-dimensional hypercubes of order 4; labeled n-ary loops of order 4 with fixed identity.
%C The values are calculated recursively, based on the characterization by 2009. The number a(5) was found before (2001 and, independently, later works) by exhaustive computer-aided classification of the objects.
%D T. Ito, Creation Method of Table, Creation Apparatus, Creation Program and Program Storage Medium, U.S. Patent application 20040243621, Dec. 2, 2004.
%D D. S. Krotov, V. N. Potapov, On the reconstruction of N-quasigroups of order 4 and the upper bounds on their numbers, Proc. Conference devoted to the 90th anniversary of Alexei A. Lyapunov (Novosibirsk, Russia, October 8-11, 2001), 2001, http://www.ict.nsc.ru/ws/Lyap2001/2363/
%D B. D. McKay, I. M. Wanless, A census of small latin hypercubes, SIAM J. Discrete Math. 22:2 (2008) 719-736.
%H D. S. Krotov, V. N. Potapov, <a href="http://arxiv.org/abs/math/0701519">n-Ary Quasigroups of Order 4</a>, SIAM J. Discrete Math. 23:2 (2009), 561-570, arXiv: math/0701519.
%H V. N. Potapov, D. S. Krotov, <a href="http://arxiv.org/abs/0912.5453">On the number of n-ary quasigroups of finite order</a>, Discrete Mathematics and Applications, 21:5-6 (2011), 575-586, arXiv:0912.5453.
%F a(n) = A211215(n)/(4*6^n).
%o # (Python)
%o N=12 # the maximum arity to calculate
%o J,K=[[[[]]]],[[[[]]]]
%o for n in range(1,N+1):
%o .J+=[[[]]] # create empty J[n][0]
%o .K+=[[[]]] # create empty K[n][0]
%o .for i in range(1,n):
%o ..J[n]+=[[]] # create empty J[n][i]
%o ..K[n]+=[[]] # create empty K[n][i]
%o ..if (i<=n-i):
%o ...J[n][i] += J[n-i][i][:]
%o ...K[n][i] += map(lambda K_: [K_[0]+1]+K_[1:], K[n-i][i])
%o ..for j in range(i+1,n-i+1):
%o ...J[n][i] += map(lambda J_: [i]+J_, J[n-i][j])
%o ...K[n][i] += map(lambda K_: [1]+K_, K[n-i][j])
%o .J[n]+=[[[n]]] # create J[n][n]
%o .K[n]+=[[[1]]] # create K[n][n]
%o J = map(lambda Ji:sum(Ji,[]), J); K = map(lambda Ji:sum(Ji,[]), K) # merge groups
%o # now J[n] and K[n] represent a list of partitions of n into positive summands:
%o # n=J[n][i][0]*K[n][i][0]+J[n][i][1]*K[n][i][1]+J[n][i][2]*K[n][i][2]+...
%o # 0<J[n][i][0]<J[n][i][1]<J[n][i][2]<... -- summands; K[n][i][j]>0 -- multiplicities
%o map(lambda Ji:Ji.pop(), J); map(lambda Ki:Ki.pop(), K) # remove the trivial 1-partitions
%o #
%o import math
%o F=map(lambda J1,K1,n:map(lambda J2,K2: reduce(lambda res, JK: res/JK, map(lambda J3,K3:math.factorial(K3)*math.factorial(J3)**K3, J2,K2), math.factorial(n)), J1,K1), J,K,range(N+1))
%o # F[n][i] is the number of partitions of an n-set that correspond to the partition J[n][i],K[n][i] of n.
%o La=map(lambda n:2L**(2**n-n-1), range(N+1))
%o Ras,Ra0,R_0,R_s,P_a,V,T = [0,0L],[0,0L],[0,0L],[0,0L],[0,0L],[1,1L],[4,24L]
%o for n in range(2,N+1):
%o .V+=[0L]; T+=[0L]; P_a+=[0L]; Ras+=[0L]; Ra0+=[0L]; R_0+=[0L]; R_s+=[0L]
%o .for i in range(len(K[n])):
%o ..R_0[n],Ra0[n],R_s[n],Ras[n] = map(lambda A,B,C :
%o ...A[n] + reduce(lambda r,t:r*(B[J[n][i][t]]-C*A[J[n][i][t]])**K[n][i][t],range(len(K[n][i])),((1-C)*P_a[sum(K[n][i])]+C)*F[n][i]),
%o ...(R_0,Ra0,R_s,Ras), (V,La,V,La), (0,0,1,1))
%o .R_0[n] *= 3
%o .P_a[n] = La[n] - Ra0[n] - 2*Ras[n]
%o .V[n] = 3*P_a[n] + R_0[n] + 4*R_s[n]
%o .T[n] = 4*(6**n)*V[n]
%o print "\n Reduced (A211214):", V
%o print "\n Total (A211215):", T
%Y Cf. A000315, A098843, A100539, A132205.
%K nonn
%O 0,3
%A Denis S. Krotov and Vladimir N. Potapov, Apr 06 2012
|