A340425 Square array T(n,k), n >= 1, k >= 1, read by antidiagonals, where T(n,k) is the number of spanning trees of odd Aztec rectangle of order (n, k).
1, 4, 4, 16, 192, 16, 64, 8960, 8960, 64, 256, 417792, 4542720, 417792, 256, 1024, 19480576, 2280570880, 2280570880, 19480576, 1024, 4096, 908328960, 1143668117504, 12116689944576, 1143668117504, 908328960, 4096
Offset: 1
Examples
Square array begins: 1, 4, 16, 64, 256, ... 4, 192, 8960, 417792, 19480576, ... 16, 8960, 4542720, 2280570880, 1143668117504, ... 64, 417792, 2280570880, 12116689944576, 64046643170770944, ... 256, 19480576, 1143668117504, 64046643170770944, 3544863978266468352000, ...
References
- Mihai Ciucu, Matchings and applications. Department of Mathematics, Indiana University, Bloomington, IN 47405. See Lecture 12.
Programs
-
PARI
default(realprecision, 120); {T(n,k) = round(4^(2*n*k-n-k)*prod(a=1, n-1, prod(b=1, k-1, 1-(sin(a*Pi/(2*n))*sin(b*Pi/(2*k)))^2)))}
-
Python
# Using graphillion from graphillion import GraphSet def make_OD_nk(n, k): n += 1 k += 1 grids = [] s = k * n for i in range(1, k * n, k): for j in range(1, k): a, b = i + j - 1, i + j c = s + a if i > 1: grids.extend([(c - k, a), (c - k, b)]) if i < k * (n - 1) + 1: grids.extend([(c, a), (c, b)]) return grids def A340425(n, k): universe = make_OD_nk(n, k) GraphSet.set_universe(universe) spanning_trees = GraphSet.trees(is_spanning=True) return spanning_trees.len() print([A340425(j + 1, i - j + 1) for i in range(7) for j in range(i + 1)])
Formula
T(n,k) = T(k,n).
T(n,k) = 4^(2*n*k-n-k) * Product_{a=1..n-1} Product_{b=1..k-1} (1 - sin(a*Pi/(2*n))^2 * sin(b*Pi/(2*k))^2).
T(n,k) = 4^(2*n*k-n-k) * Product_{a=1..n-1} Product_{b=1..k-1} (1 - cos(a*Pi/(2*n))^2 * cos(b*Pi/(2*k))^2).
T(n,k) = 4^(2*n*k-n-k) * Product_{a=1..n-1} Product_{b=1..k-1} (1 - sin(a*Pi/(2*n))^2 * cos(b*Pi/(2*k))^2).