OFFSET
0,3
COMMENTS
A multiset is normal if it spans an initial interval of positive integers, and strongly normal if in addition it has weakly decreasing multiplicities. a(n) is also the number of combinatory separations (see A269134 for definition) of strongly normal multisets of size n into normal sets.
From Andrew Howroyd, Oct 31 2019: (Start)
Also, the number of distinct unordered row and column sums of binary matrices without empty columns or rows and with a total of n ones. Only matrices in which both row and columns sums are weakly increasing need to be considered.
By the Gale-Ryser theorem this is equivalent to the number of pairs of integer partitions (y,v) of n with y dominating v. (End)
LINKS
Andrew Howroyd, Table of n, a(n) for n = 0..100
Manfred Krause, A simple proof of the Gale-Ryser theorem, American Mathematical Monthly, 1996.
Wikipedia, Gale-Ryser theorem
EXAMPLE
The a(4) = 15 pairs of integer partitions:
4, 1111
22, 22
22, 211
22, 1111
31, 211
31, 1111
211, 22
211, 31
211, 211
211, 1111
1111, 4
1111, 22
1111, 31
1111, 211
1111, 1111
The a(4) = 15 combinatory separations:
1111<={1,1,1,1}
1112<={1,1,12}
1112<={1,1,1,1}
1122<={12,12}
1122<={1,1,12}
1122<={1,1,1,1}
1123<={1,123}
1123<={12,12}
1123<={1,1,12}
1123<={1,1,1,1}
1234<={1234}
1234<={1,123}
1234<={12,12}
1234<={1,1,12}
1234<={1,1,1,1}
MATHEMATICA
sps[{}]:={{}}; sps[set:{i_, ___}]:=Join@@Function[s, Prepend[#, s]&/@sps[Complement[set, s]]]/@Cases[Subsets[set], {i, ___}];
mps[set_]:=Union[Sort[Sort/@(#/.x_Integer:>set[[x]])]&/@sps[Range[Length[set]]]];
strnorm[n_]:=Flatten[MapIndexed[Table[#2, {#1}]&, #]]&/@IntegerPartitions[n];
normize[m_]:=m/.Rule@@@Table[{Union[m][[i]], i}, {i, Length[Union[m]]}];
Table[Length[Select[Union@@Table[{m, Sort[normize/@#]}&/@mps[m], {m, strnorm[n]}], And@@UnsameQ@@@#[[2]]&]], {n, 6}]
PROG
(PARI)
IsDom(p, q)=if(#q<#p, 0, my(s=0, t=0); for(i=0, #p-1, s+=p[#p-i]; t+=q[#q-i]; if(t>s, return(0))); 1)
a(n)={if(n<1, n==0, my(s=0); forpart(p=n, forpart(q=n, s+=IsDom(p, q), [1, p[#p]], [#p, n])); s)} \\ Andrew Howroyd, Oct 31 2019
(PARI) \\ faster version.
a(n)={local(Cache=Map());
my(recurse(b, c, s, t)=my(hk=Vecsmall([b, c, s, t]), z);
if(!mapisdefined(Cache, hk, &z),
z = if(s, sum(i=1, min(s, b), sum(j=1, min(t-s+i, c), self()(i, j, s-i, t-j))),
if(t, sum(j=1, min(t, c), self()(b, j, s, t-j)), 1));
mapput(Cache, hk, z)); z);
recurse(n, n, n, n)
} \\ Andrew Howroyd, Oct 31 2019
CROSSREFS
KEYWORD
nonn
AUTHOR
Gus Wiseman, Aug 25 2018
EXTENSIONS
Terms a(9) and beyond from Andrew Howroyd, Oct 31 2019
STATUS
approved