Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Array read by antidiagonals: T(n,k) is the number of k-regular multigraphs on n labeled nodes, loops allowed, n >= 0, k >= 0.
6

%I #16 Apr 07 2020 15:27:43

%S 1,1,1,1,0,1,1,1,1,1,1,0,2,0,1,1,1,2,5,3,1,1,0,3,0,17,0,1,1,1,3,15,47,

%T 73,15,1,1,0,4,0,138,0,388,0,1,1,1,4,34,306,2021,4720,2461,105,1,1,0,

%U 5,0,670,0,43581,0,18155,0,1,1,1,5,65,1270,25050,291001,1295493,1256395,152531,945,1

%N Array read by antidiagonals: T(n,k) is the number of k-regular multigraphs on n labeled nodes, loops allowed, n >= 0, k >= 0.

%H Andrew Howroyd, <a href="/A333467/b333467.txt">Table of n, a(n) for n = 0..405</a> (diagonals 0..27)

%e Array begins:

%e =============================================================

%e n\k | 0 1 2 3 4 5 6

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

%e 0 | 1 1 1 1 1 1 1 ...

%e 1 | 1 0 1 0 1 0 1 ...

%e 2 | 1 1 2 2 3 3 4 ...

%e 3 | 1 0 5 0 15 0 34 ...

%e 4 | 1 3 17 47 138 306 670 ...

%e 5 | 1 0 73 0 2021 0 25050 ...

%e 6 | 1 15 388 4720 43581 291001 1594340 ...

%e 7 | 1 0 2461 0 1295493 0 159207201 ...

%e 8 | 1 105 18155 1256395 50752145 1296334697 23544232991 ...

%e ...

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

%p `if`(l[n]=0, b(sort(subsop(n=[][], l)), n-1),

%p `if`(i<1, 0, b(l, i-1)+`if`(i=n, `if`(l[n]>1,

%p b(subsop(n=l[n]-2, l), i), 0), `if`(l[i]>0,

%p b(subsop(i=l[i]-1, n=l[n]-1, l), i), 0))))))(nops(l))

%p end:

%p A:= (n, k)-> b([k$n], n):

%p seq(seq(A(n, d-n), n=0..d), d=0..12); # _Alois P. Heinz_, Mar 23 2020

%t b[l_, i_] := b[l, i] = Function[n, If[n == 0, 1, If[l[[n]] == 0, b[Sort[ ReplacePart[l, n -> Nothing]], n-1], If[i < 1, 0, b[l, i-1] + If[i == n, If[l[[n]] > 1, b[ReplacePart[l, n -> l[[n]]-2], i], 0], If[l[[i]] > 0, b[ReplacePart[l, {i -> l[[i]]-1, n -> l[[n]]-1}], i], 0]]]]]][Length[l]];

%t A[n_, k_] := b[Table[k, {n}], n];

%t Table[A[n, d-n], {d, 0, 12}, {n, 0, d}] // Flatten (* _Jean-François Alcover_, Apr 07 2020, after _Alois P. Heinz_ *)

%o (PARI)

%o MultigraphsWLByDegreeSeq(n, limit, ok)={

%o local(M=Map(Mat([0, 1])));

%o my(acc(p, v)=my(z); mapput(M, p, if(mapisdefined(M, p, &z), z+v, v)));

%o my(recurse(r, h, p, q, v, e) = if(!p, if(ok(x^e+q, r), acc(x^e+q, v)), my(i=poldegree(p), t=pollead(p)); self()(r, limit, p-t*x^i, q+t*x^i, v, e); for(m=1, h-i, for(k=1, min(t, (limit-e)\m), self()(r, if(k==t, limit, i+m-1), p-k*x^i, q+k*x^(i+m), binomial(t, k)*v, e+k*m)))));

%o for(r=1, n, my(src=Mat(M)); M=Map(); for(i=1, matsize(src)[1], forstep(e=0, limit, 2, recurse(n-r, limit, src[i, 1], 0, src[i, 2], e)))); Mat(M);

%o }

%o T(n, k)={if(n%2&&k%2, 0, vecsum(MultigraphsWLByDegreeSeq(n, k, (p, r)->subst(deriv(p), x, 1)>=(n-2*r)*k)[, 2]))}

%o { for(n=0, 8, for(k=0, 6, print1(T(n, k), ", ")); print) }

%Y Rows n=0..3 are A000012, A059841, A008619, A006003.

%Y Columns k=0..4 are A000012, A123023, A002135, A005814, A005816.

%Y Cf. A059441 (graphs), A167625 (unlabeled nodes), A333351 (without loops).

%K nonn,tabl

%O 0,13

%A _Andrew Howroyd_, Mar 23 2020