login
Number A(n,k) of k-ary heaps on n levels; square array A(n,k), n>=0, k>=0, read by antidiagonals.
6

%I #22 Jan 02 2022 09:47:40

%S 1,1,1,1,1,0,1,1,1,0,1,1,2,1,0,1,1,6,80,1,0,1,1,24,7484400,21964800,1,

%T 0,1,1,120,3892643213082624,35417271278873496315860673177600000000,

%U 74836825861835980800000,1,0

%N Number A(n,k) of k-ary heaps on n levels; square array A(n,k), n>=0, k>=0, read by antidiagonals.

%H Alois P. Heinz, <a href="/A273712/b273712.txt">Antidiagonals n = 0..9, flattened</a>

%H Wikipedia, <a href="https://en.wikipedia.org/wiki/D-ary_heap">D-ary heap</a>

%e Square array A(n,k) begins:

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

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

%e 0, 1, 2, 6, ...

%e 0, 1, 80, 7484400, ...

%e 0, 1, 21964800, 35417271278873496315860673177600000000, ...

%p with(combinat):

%p b:= proc(n, k) option remember; local h, i, x, y, z;

%p if n<2 then 1 elif k<2 then k

%p else h:= ilog[k]((k-1)*n+1);

%p if k^h=(k-1)*n+1 then b((n-1)/k, k)^k*

%p multinomial(n-1, ((n-1)/k)$k)

%p else x, y:=(k^h-1)/(k-1), (k^(h-1)-1)/(k-1);

%p for i from 0 do z:= (n-1)-(k-1-i)*y-i*x;

%p if y<=z and z<=x then b(y, k)^(k-1-i)*

%p multinomial(n-1, y$(k-1-i), x$i, z)*

%p b(x, k)^i*b(z, k); break fi

%p od

%p fi fi

%p end:

%p A:= (n, k)-> `if`(n<2, 1, `if`(k<2, k, b((k^n-1)/(k-1), k))):

%p seq(seq(A(n,d-n), n=0..d), d=0..7);

%t multinomial[n_, k_List] := n!/Times @@ (k!);

%t b[n_, k_] := b[n, k] = Module[{h, i, x, y, z}, Which[n<2, 1, k<2, k, True, h = Log[k, (k-1)*n+1] // Floor; If[k^h == (k-1)*n+1, b[(n-1)/k, k]^k*multinomial[n-1, Array[(n-1)/k&, k]], {x, y} := {(k^h-1)/(k-1), (k^(h-1)-1)/(k-1)}; For[i = 0, True, i++, z = (n-1) - (k-1-i)*y - i*x; If[y <= z && z <= x, b[y, k]^(k-1-i) * multinomial[n-1, Join[Array[y&, k-1-i], Array[x&, i], {z}]]*b[x, k]^i * b[z, k]; Break[]]]]]];

%t A[n_, k_] := If[n<2, 1, If[k<2, k, b[(k^n-1) / (k-1), k]]];

%t Table[A[n, d-n], {d, 0, 7}, {n, 0, d}] // Flatten (* _Jean-François Alcover_, Jan 24 2017, after _Alois P. Heinz_ *)

%Y Columns k=0-4 give: A019590(n+1), A000012, A056972, A273723, A273725.

%Y Main diagonal gives A273729.

%Y Cf. A273693.

%K nonn,tabl

%O 0,13

%A _Alois P. Heinz_, May 28 2016