login
Triangular array read by rows: T(n,k) is the number of rooted identity trees with n nodes having exactly k subtrees from the root.
12

%I #52 Mar 23 2020 06:21:53

%S 1,1,1,1,1,2,1,3,3,6,5,1,12,11,2,25,22,5,52,49,12,113,104,28,2,247,

%T 232,65,4,548,513,152,13,1226,1159,351,34,2770,2619,818,91,1,6299,

%U 5989,1907,225,6,14426,13734,4460,571,18,33209,31729,10453,1403,57,76851

%N Triangular array read by rows: T(n,k) is the number of rooted identity trees with n nodes having exactly k subtrees from the root.

%C Row sums = A004111.

%H Alois P. Heinz, <a href="/A227774/b227774.txt">Rows n = 1..400, flattened</a>

%F G.f.: x * Product_{n>=1} (1 + y * x^n)^A004111(n).

%F From _Alois P. Heinz_, Aug 25 2017: (Start)

%F T(n,k) = Sum_{h=0..n-k} A291529(n-1,h,k).

%F Sum_{k>=1} k * T(n,k) = A291532(n-1). (End)

%e Triangular array T(n,k) begins:

%e n\k: 0 1 2 3 4 ...

%e ---+---------------------------

%e 01 : 1;

%e 02 : . 1;

%e 03 : . 1;

%e 04 : . 1, 1;

%e 05 : . 2, 1;

%e 06 : . 3, 3;

%e 07 : . 6, 5, 1;

%e 08 : . 12, 11, 2;

%e 09 : . 25, 22, 5;

%e 10 : . 52, 49, 12;

%e 11 : . 113, 104, 28, 2;

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

%p add(binomial(b((i-1)$2), j)*b(n-i*j, i-1), j=0..n/i)))

%p end:

%p g:= proc(n, i) option remember; `if`(n=0, 1, `if`(i<1, 0, expand(

%p add(x^j*binomial(b((i-1)$2), j)*g(n-i*j, i-1), j=0..n/i))))

%p end:

%p T:= n-> `if`(n=1, 1,

%p (p-> seq(coeff(p, x, k), k=1..degree(p)))(g((n-1)$2))):

%p seq(T(n), n=1..25); # _Alois P. Heinz_, Jul 30 2013

%t nn=20;f[x_]:=Sum[a[n]x^n,{n,0,nn}];sol=SolveAlways[0==Series[f[x]-x Product[(1+x^i)^a[i],{i,1,nn}],{x,0,nn}],x];A004111=Drop[ Flatten[Table[a[n],{n,0,nn}]/.sol],1];Map[Select[#,#>0&]&, Drop[CoefficientList[Series[x Product[(1 + y x^i)^A004111[[i]],{i,1,nn}],{x,0,nn}],{x,y}],1]]//Grid

%o (Python)

%o from sympy import binomial, Poly, Symbol

%o from sympy.core.cache import cacheit

%o x=Symbol('x')

%o @cacheit

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

%o @cacheit

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

%o def T(n): return [1] if n==1 else Poly(g(n - 1, n - 1)).all_coeffs()[::-1][1:]

%o for n in range(1, 26): print(T(n)) # _Indranil Ghosh_, Aug 28 2017

%Y Columns k=1-10 give: A004111(n-1), A227806, A227807, A227808, A227809, A227810, A227811, A227812, A227813, A227814.

%Y Cf. A291529, A291532.

%K nonn,tabf,look

%O 1,6

%A _Geoffrey Critzer_, Jul 30 2013