login
A004106
Number of line-self-dual nets (or edge-self-dual nets) with n nodes.
(Formerly M0889)
4
1, 2, 3, 8, 29, 148, 1043, 11984, 229027, 6997682, 366204347, 30394774084, 4363985982959, 994090870519508, 393850452332173999, 249278602955869472540, 275042591834324901085904, 488860279973733024992540668, 1514493725905920009795681408275
OFFSET
0,2
COMMENTS
A net in this context is a graph with both signed vertices and signed edges. A net is line-self-dual if changing the signs on all edges leaves the graph unchanged up to isomorphism. - Andrew Howroyd, Sep 25 2018
REFERENCES
F. Harary and R. W. Robinson, Exposition of the enumeration of point-line-signed graphs, pp. 19 - 33 of Proc. Second Caribbean Conference Combinatorics and Computing (Bridgetown, 1977). Ed. R. C. Read and C. C. Cadogan. University of the West Indies, Cave Hill Campus, Barbados, 1977. vii+223 pp.
R. W. Robinson, personal communication.
R. W. Robinson, Numerical implementation of graph counting algorithms, AGRC Grant, Math. Dept., Univ. Newcastle, Australia, 1976.
N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).
LINKS
Andrew Howroyd, Table of n, a(n) for n = 0..50 (terms 1..22 from R. W. Robinson)
Frank Harary, Edgar M. Palmer, Robert W. Robinson, Allen J. Schwenk, Enumeration of graphs with signed points and lines, J. Graph Theory 1 (1977), no. 4, 295-308.
MATHEMATICA
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_] := Sum[Sum[If[Mod[v[[i]] v[[j]], 2] == 0, GCD[v[[i]], v[[j]]], 0], {j, 1, i - 1}], {i, 2, Length[v]}] + Sum[If[Mod[v[[i]], 2] == 0, 2 Quotient[v[[i]], 4], 0], {i, 1, Length[v]}];
a[n_] := Module[{s = 0}, Do[s += permcount[p]*3^edges[p]*2^Length[p], {p, IntegerPartitions[n]}]; s/n!];
Array[a, 19, 0] (* Jean-François Alcover, Aug 17 2019, after Andrew Howroyd *)
PROG
(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) = {sum(i=2, #v, sum(j=1, i-1, if(v[i]*v[j]%2==0, gcd(v[i], v[j])))) + sum(i=1, #v, if(v[i]%2==0, v[i]\4*2))}
a(n) = {my(s=0); forpart(p=n, s+=permcount(p)*3^edges(p)*2^#p); s/n!} \\ Andrew Howroyd, Sep 25 2018
(Python)
from itertools import combinations
from math import prod, gcd, factorial
from fractions import Fraction
from sympy.utilities.iterables import partitions
def A004106(n): return int(sum(Fraction(3**(sum(p[r]*p[s]*gcd(r, s) for r, s in combinations(p.keys(), 2) if not (r&1 and s&1))+sum(((q>>1)&-2)*r+(q*r*(r-1)>>1) for q, r in p.items() if q&1^1))<<s, prod(q**r*factorial(r) for q, r in p.items())) for s, p in partitions(n, size=True))) # Chai Wah Wu, Jul 10 2024
CROSSREFS
KEYWORD
nonn
EXTENSIONS
a(0)=1 prepended and a(17)-a(18) added by Andrew Howroyd, Sep 25 2018
STATUS
approved