login
a(n) is the number of endofunctions on a set of size n with preimage constraint {0, 1, 2, 3, 4, 5, 6, 7, 8}.
2

%I #19 Jun 28 2023 09:44:08

%S 1,1,4,27,256,3125,46656,823543,16777216,387420480,9999999090,

%T 285311608890,8916096836988,302874907278372,11111996007290178,

%U 437893300069054830,18446711285575475760,827238394513348062960,39346298554172667026112,1978413024254468818876002

%N a(n) is the number of endofunctions on a set of size n with preimage constraint {0, 1, 2, 3, 4, 5, 6, 7, 8}.

%C A preimage constraint is a set of nonnegative integers such that the size of the inverse image of any element is one of the values in that set.

%C Thus, a(n) is the number of endofunctions on a set of size n such that each preimage has at most 8 elements. Equivalently, it is the number of n-letter words from an n-letter alphabet such that no letter appears more than 8 times.

%H Alois P. Heinz, <a href="/A324808/b324808.txt">Table of n, a(n) for n = 0..386</a>

%H B. Otto, <a href="https://arxiv.org/abs/1903.00542">Coalescence under Preimage Constraints</a>, arXiv:1903.00542 [math.CO], 2019, Corollaries 5.6 and 7.8.

%F a(n) = n! * [x^n] e_8(x)^n, where e_k(x) is the truncated exponential 1 + x+ x^2/2! + ... + x^k/k!. The link above yields explicit constants c_k, r_k so that the columns are asymptotically c_8 * n^(-1/2) * r_8^-n.

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

%p add(b(n-j, i-1)*binomial(n, j), j=0..min(8, n))))

%p end:

%p a:= n-> b(n$2):

%p seq(a(n), n=0..20); # _Alois P. Heinz_, Apr 01 2019

%t b[n_, i_] := b[n, i] = If[n == 0 && i == 0, 1, If[i<1, 0, Sum[b[n-j, i-1]* Binomial[n, j], {j, 0, Min[8, n]}]]];

%t a[n_] := b[n, n];

%t a /@ Range[0, 19] (* _Jean-François Alcover_, Feb 29 2020, after _Alois P. Heinz_ *)

%o (Python)

%o # print first num_entries entries in the sequence

%o import math, sympy; x=sympy.symbols('x')

%o k=8; num_entries = 64

%o P=range(k+1); eP=sum([x**d/math.factorial(d) for d in P]); r = [1]; curr_pow = 1

%o for term in range(1,num_entries):

%o ...curr_pow=(curr_pow*eP).expand()

%o ...r.append(curr_pow.coeff(x**term)*math.factorial(term))

%o print(r)

%Y Column k=8 of A306800; see that entry for sequences related to other preimage constraints constructions.

%K nonn

%O 0,3

%A _Benjamin Otto_, Mar 25 2019