A070166 Irregular triangle read by rows giving T(n,k) = number of rooted graphs on n + 1 nodes with k edges (n >= 0, 0 <= k <= n(n-1)/2).
1, 1, 1, 1, 2, 2, 1, 1, 2, 4, 6, 4, 2, 1, 1, 2, 5, 11, 17, 18, 17, 11, 5, 2, 1, 1, 2, 5, 13, 29, 52, 76, 94, 94, 76, 52, 29, 13, 5, 2, 1, 1, 2, 5, 14, 35, 83, 173, 308, 487, 666, 774, 774, 666, 487, 308, 173, 83, 35, 14, 5, 2, 1, 1, 2, 5, 14, 37, 98, 252, 585, 1239, 2396, 4135, 6340
Offset: 0
Examples
Triangle begins: 1; 1, 1; 1, 2, 2, 1; 1, 2, 4, 6, 4, 2, 1; 1, 2, 5, 11, 17, 18, 17, 11, 5, 2, 1; <- gives either the numbers of rooted graphs on 5 nodes, or the numbers of graphs with loops on 4 nodes; with from 0 to 10 edges 1, 2, 5, 13, 29, 52, 76, 94, 94, 76, 52, 29, 13, 5, 2, 1; ...
References
- E. Palmer and F. Harary, Graphical Enumeration, Academic Press, 1973.
Links
- Andrew Howroyd, Table of n, a(n) for n = 0..1560
- Marko R. Riedel, Number of distinct connected digraphs
- Eric Weisstein's World of Mathematics, Rooted Graphs
Programs
-
Mathematica
Join[{{1},{1,1}},CoefficientList[Table[CycleIndex[Join[PairGroup[SymmetricGroup[n]],Permutations[Range[Binomial[n,2]+1,Binomial[n,2]+n]],2],s]/.Table[s[i]->1+x^i,{i,1,n^2-n}],{n,2,7}],x]]//Grid (* Geoffrey Critzer, Oct 01 2012 *) permcount[v_] := Module[{m = 1, s = 0, k = 0, t}, For[i = 1, i <= Length[v], i++, t = v[[i]]; k = If[i > 1 && t == v[[i - 1]], k + 1, 1]; m *= t*k; s += t]; s!/m]; edges[v_, t_] := Product[Product[g = GCD[v[[i]], v[[j]]]; t[v[[i]]*v[[j]]/g]^g, {j, 1, i - 1}], {i, 2, Length[v]}]*Product[c = v[[i]]; t[c]^Quotient[c + 1, 2]*If[OddQ[c], 1, t[c/2]], {i, 1, Length[v]}]; row[n_] := Module[{s = 0}, Do[s += permcount[p]*edges[p, 1 + x^# &], {p, IntegerPartitions[n]}]; s/n!] // Expand // CoefficientList[#, x] & row /@ Range[0, 7] // Flatten (* Jean-François Alcover, Jan 07 2021, after Andrew Howroyd *)
-
PARI
permcount(v) = {my(m=1,s=0,k=0,t); for(i=1,#v,t=v[i]; k=if(i>1&&t==v[i-1],k+1,1); m*=t*k;s+=t); s!/m} edges(v, t) = {prod(i=2, #v, prod(j=1, i-1, my(g=gcd(v[i], v[j])); t(v[i]*v[j]/g)^g )) * prod(i=1, #v, my(c=v[i]); t(c)^((c+1)\2)*if(c%2, 1, t(c/2)))} G(n, A=0) = {my(s=0); forpart(p=n, s+=permcount(p)*edges(p, i->1+x^i+A)); s/n!} { for(n=0, 7, print(Vecrev(G(n)))) } \\ Andrew Howroyd, Oct 23 2019, updated Jan 09 2024
Extensions
Offset changed by Andrew Howroyd, Oct 23 2019
Comments