login
Array A(m,n) read by antidiagonals: number of domino tilings of the m X n grid with upper left corner removed iff m*n is odd, (m>=0, n>=0).
8

%I #31 Jul 07 2020 04:17:46

%S 1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,3,3,1,1,1,1,5,4,5,1,1,1,1,8,11,11,

%T 8,1,1,1,1,13,15,36,15,13,1,1,1,1,21,41,95,95,41,21,1,1,1,1,34,56,281,

%U 192,281,56,34,1,1,1,1,55,153,781,1183,1183,781,153,55,1,1,1,1,89,209,2245,2415,6728,2415,2245,209,89,1,1

%N Array A(m,n) read by antidiagonals: number of domino tilings of the m X n grid with upper left corner removed iff m*n is odd, (m>=0, n>=0).

%H Alois P. Heinz, <a href="/A189006/b189006.txt">Antidiagonals n = 0..75, flattened</a>

%H Eric Weisstein's World of Mathematics, <a href="http://mathworld.wolfram.com/PerfectMatching.html">Perfect Matching</a>

%H Wikipedia, <a href="https://en.wikipedia.org/wiki/FKT_algorithm">FKT algorithm</a>

%H Wikipedia, <a href="https://en.wikipedia.org/wiki/Matching_(graph_theory)">Matching (graph theory)</a>

%H <a href="/index/Do#domino">Index entries for sequences related to dominoes</a>

%e A(3,3) = 4, because there are 4 domino tilings of the 3 X 3 grid with upper left corner removed:

%e . .___. . .___. . .___. . .___.

%e ._|___| ._|___| ._| | | ._|___|

%e | |___| | | | | | |_|_| |___| |

%e |_|___| |_|_|_| |_|___| |___|_|

%e Array begins:

%e 1, 1, 1, 1, 1, 1, 1, ...

%e 1, 1, 1, 1, 1, 1, 1, ...

%e 1, 1, 2, 3, 5, 8, 13, ...

%e 1, 1, 3, 4, 11, 15, 41, ...

%e 1, 1, 5, 11, 36, 95, 281, ...

%e 1, 1, 8, 15, 95, 192, 1183, ...

%e 1, 1, 13, 41, 281, 1183, 6728, ...

%p with(LinearAlgebra):

%p A:= proc(m, n) option remember; local i, j, s, t, M;

%p if m=0 or n=0 then 1

%p elif m<n then A(n, m)

%p else s:= irem(n*m, 2);

%p M:= Matrix(n*m-s, shape=skewsymmetric);

%p for i to n do

%p for j to m do

%p t:= (i-1)*m+j-s;

%p if i>1 or j>1 or s=0 then

%p if j<m then M[t, t+1]:= 1 fi;

%p if i<n then M[t, t+m]:= 1-2*irem(j, 2) fi

%p fi

%p od

%p od;

%p isqrt(Determinant(M))

%p fi

%p end:

%p seq(seq(A(m, d-m), m=0..d), d=0..15);

%t A[1, 1] = 1; A[m_, n_] := A[m, n] = Module[{i, j, s, t, M}, Which[m == 0 || n == 0, 1, m < n, A[n, m], True, s = Mod[n*m, 2];M[i_, j_] /; j < i := -M[j, i]; M[_, _] = 0; For[i = 1, i <= n, i++, For[j = 1, j <= m, j++, t = (i-1)*m+j-s; If[i > 1 || j > 1 || s == 0, If[j < m, M[t, t+1] = 1]; If[i < n, M[t, t+m] = 1-2*Mod[j, 2]]]]]; Sqrt[Det[Array[M, {n*m-s, n*m-s}]]]]]; Table[Table[A[m, d-m], {m, 0, d}], {d, 0, 15}] // Flatten (* _Jean-François Alcover_, Dec 26 2013, translated from Maple *)

%Y Rows m=0+1, 2-12 give: A000012, A000045(n+1), A002530(n+1), A005178(n+1), A189003, A028468, A189004, A028470, A189005, A028472, A210724, A028474.

%Y Main diagonal gives: A189002.

%Y Cf. A099390, A187596, A187616, A187617, A187618, A004003.

%K nonn,tabl

%O 0,13

%A _Alois P. Heinz_, Apr 15 2011