login
Number A(n,k) of rooted trees with n nodes where each node has at most k children; square array A(n,k), n>=0, k>=0, read by antidiagonals.
15

%I #20 Jun 04 2018 04:28:55

%S 1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1,1,2,1,0,1,1,1,2,3,1,0,1,1,1,2,4,6,

%T 1,0,1,1,1,2,4,8,11,1,0,1,1,1,2,4,9,17,23,1,0,1,1,1,2,4,9,19,39,46,1,

%U 0,1,1,1,2,4,9,20,45,89,98,1,0,1,1,1,2,4,9,20,47,106,211,207,1,0

%N Number A(n,k) of rooted trees with n nodes where each node has at most k children; square array A(n,k), n>=0, k>=0, read by antidiagonals.

%H Alois P. Heinz, <a href="/A299038/b299038.txt">Antidiagonals n = 0..140, flattened</a>

%F A(n,k) = Sum_{i=0..k} A244372(n,i) for n>0, A(0,k) = 1.

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

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

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

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

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

%e 0, 1, 3, 4, 4, 4, 4, 4, 4, 4, 4, ...

%e 0, 1, 6, 8, 9, 9, 9, 9, 9, 9, 9, ...

%e 0, 1, 11, 17, 19, 20, 20, 20, 20, 20, 20, ...

%e 0, 1, 23, 39, 45, 47, 48, 48, 48, 48, 48, ...

%e 0, 1, 46, 89, 106, 112, 114, 115, 115, 115, 115, ...

%e 0, 1, 98, 211, 260, 277, 283, 285, 286, 286, 286, ...

%e 0, 1, 207, 507, 643, 693, 710, 716, 718, 719, 719, ...

%p b:= proc(n, i, t, k) option remember; `if`(n=0, 1,

%p `if`(i<1, 0, add(binomial(b((i-1)$2, k$2)+j-1, j)*

%p b(n-i*j, i-1, t-j, k), j=0..min(t, n/i))))

%p end:

%p A:= (n, k)-> `if`(n=0, 1, b(n-1$2, k$2)):

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

%t b[n_, i_, t_, k_] := b[n, i, t, k] = If[n == 0, 1, If[i<1, 0, Sum[Binomial[ b[i-1, i-1, k, k]+j-1, j]*b[n-i*j, i-1, t-j, k], {j, 0, Min[t, n/i]}]]];

%t A[n_, k_] := If[n == 0, 1, b[n - 1, n - 1, k, k]];

%t Table[A[n, d-n], {d, 0, 14}, {n, 0, d}] // Flatten (* _Jean-François Alcover_, Jun 04 2018, from Maple *)

%o (Python)

%o from sympy import binomial

%o from sympy.core.cache import cacheit

%o @cacheit

%o def b(n, i, t, k): return 1 if n==0 else 0 if i<1 else sum([binomial(b(i-1, i-1, k, k)+j-1, j)*b(n-i*j, i-1, t-j, k) for j in range(min(t, n//i)+1)])

%o def A(n, k): return 1 if n==0 else b(n-1, n-1, k, k)

%o for d in range(15): print([A(n, d-n) for n in range(d+1)]) # _Indranil Ghosh_, Mar 02 2018, after Maple code

%Y Columns k=1-11 give: A000012, A001190(n+1), A000598, A036718, A036721, A036722, A182378, A292553, A292554, A292555, A292556.

%Y Main diagonal gives A000081 for n>0.

%Y A(2n,n) gives A299039.

%Y Cf. A244372.

%K nonn,tabl

%O 0,19

%A _Alois P. Heinz_, Feb 01 2018