login
Number of simple unlabeled graphs on n nodes with exactly 2 connected components that are trees or cycles.
3

%I #23 Apr 26 2021 08:53:22

%S 1,1,3,5,10,17,33,62,127,267,587,1326,3085,7326,17731,43585,108563,

%T 273544,696113,1787042,4623125,12043071,31565842,83200763,220413272,

%U 586625403,1567930743,4207181144,11329835687,30613313339,82975300030,225552632043,614787508640

%N Number of simple unlabeled graphs on n nodes with exactly 2 connected components that are trees or cycles.

%H Alois P. Heinz, <a href="/A215982/b215982.txt">Table of n, a(n) for n = 2..650</a>

%F a(n) ~ c * d^n / n^(5/2), where d = A051491 = 2.9557652856519949747148..., c = 0.3339525664158379... . - _Vaclav Kotesovec_, Sep 07 2014

%e a(5) = 5: .o-o o. .o-o o. .o-o o. .o o-o. .o o-o.

%e .| | . .| . .|\ . .|\ . .| .

%e .o-o . .o-o . .o o . .o-o . .o-o .

%p with(numtheory):

%p b:= proc(n) option remember; local d, j; `if` (n<=1, n,

%p (add(add(d*b(d), d=divisors(j)) *b(n-j), j=1..n-1))/(n-1))

%p end:

%p g:= proc(n) option remember; local k; `if`(n>2, 1, 0)+ b(n)-

%p (add(b(k)*b(n-k), k=0..n) -`if`(irem(n, 2)=0, b(n/2), 0))/2

%p end:

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

%p `if`(min(i, t)<1, 0, add(binomial(g(i)+j-1, j)*

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

%p end:

%p a:= n-> p(n, n, 2):

%p seq(a(n), n=2..40);

%t b[n_] := b[n] = If[n <= 1, n, Sum[Sum[d*b[d], {d, Divisors[j]}]*b[n-j], {j, 1, n-1}]/(n-1)]; g[n_] := g[n] = If[n>2, 1, 0]+b[n]-(Sum [b[k]*b[n-k], {k, 0, n}] - If[Mod[n, 2] == 0, b[n/2], 0])/2; p[n_, i_, t_] := p[n, i, t] = If[n<t, 0, If[n == t, 1,If[Min[i, t]<1, 0, Sum[Binomial[g[i]+j-1, j]*p[n-i*j, i-1, t-j], {j, 0, Min[n/i, t]}]]]]; a[n_] := p[n, n, 2] // FullSimplify; Table[a[n], {n, 2, 40}] // Flatten (* _Jean-François Alcover_, Dec 04 2014, translated from Maple *)

%o (Python)

%o from sympy.core.cache import cacheit

%o from sympy import binomial, divisors

%o @cacheit

%o def b(n): return n if n<2 else sum([sum([d*b(d) for d in divisors(j)])*b(n - j) for j in range(1, n)])//(n - 1)

%o @cacheit

%o def g(n): return (1 if n>2 else 0) + b(n) - (sum([b(k)*b(n - k) for k in range(n + 1)]) - (b(n//2) if n%2==0 else 0))//2

%o @cacheit

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

%o def a(n): return p(n, n, 2)

%o print([a(n) for n in range(2, 41)]) # _Indranil Ghosh_, Aug 07 2017

%Y Column k=2 of A215977.

%Y The labeled version is A215852.

%K nonn

%O 2,3

%A _Alois P. Heinz_, Aug 29 2012