login
A390360
Number of inequivalent chord diagrams on 8n + 2 points with 4n + 1 chords of distinct lengths 1, 2, ..., 4n + 1.
2
1, 2, 1200, 4009024, 51487228672
OFFSET
0,2
COMMENTS
This sequence counts the number of "Cyclic Skolem Sequences" of order M = 4n + 1 under dihedral equivalence. They correspond to pairings of 2M points on a circle where the set of chord lengths is exactly {1, 2, ..., M}.
Each solution is encoded as a string of length 2M containing the symbols 0, 1, ..., M-1 exactly twice. The defining rule is that the two occurrences of symbol k are separated by exactly k characters along the shorter arc of the circle.
Canonicalization: Solutions are considered equivalent under rotation and reflection (dihedral group action). To determine the count, a solution fixes the "0-chord" (length 1, symbol '0') at the beginning of the string (forcing the prefix "00") and adopts the lexicographically smaller of the two mirror images.
The condition M == 0 or 1 (mod 4) is necessary for existence. This entry covers the case M == 1 (mod 4).
a(n) = KCounterFast(4*n + 1) where KCounterFast is the GAP function defined in the Program section.
EXAMPLE
For n=1 (corresponding to M = 5 chords, 10 vertices), there are 2 unique solutions. One is the sequence "0032412134". We interpret the "gap" for each symbol cyclically. Symbol '0': At indices 0, 1. Separation is 0 characters. Symbol '1': At indices 5, 7. Separation is 1 character ('2'). Symbol '2': At indices 3, 6. Separation is 2 characters ('41'). Symbol '3': At indices 2, 8. Linear separation is 5; cyclic wrap separation is 3. Matches symbol '3'. Symbol '4': At indices 4, 9. Separation is 4 characters ('1213').
PROG
(GAP)
# Counts inequivalent chord diagrams for OEIS A390360
# Note: This is a reference implementation. For large N (e.g. N >= 13),
# memory usage for OrbitsDomain becomes prohibitive.
KCounterFast := function(n)
local nvx, sols, dhg, Backtrack;
nvx := 2*n;
sols := [];
Backtrack := function(mus, mln, cps, fnd)
local x, y, l;
if fnd = n then
Add(sols, Set(cps));
return;
fi;
x := Position(mus, false);
for y in [x+1 .. nvx] do
if mus[y] = false then
l := Minimum(y - x, nvx - (y - x));
if mln[l] = false then
mus[x] := true; mus[y] := true;
mln[l] := true;
Add(cps, Set([x, y]));
Backtrack(mus, mln, cps, fnd + 1);
Remove(cps);
mln[l] := false;
mus[y] := false; mus[x] := false;
fi;
fi;
od;
end;
Backtrack(ListWithIdenticalEntries(nvx, false), ListWithIdenticalEntries(n, false), [], 0);
if IsEmpty(sols) then return 0; fi;
dhg := Group(PermList(Concatenation([2..nvx], [1])), Product(List([1..n], i -> (i, nvx-i+1))));
return Size(OrbitsDomain(dhg, sols, OnSetsSets));
end;
# Wrapper for index n (counting 4n+1 chords):
a := n -> KCounterFast(4*n + 1);
CROSSREFS
Cf. A392247.
Sequence in context: A119554 A272246 A277274 * A036104 A036106 A285691
KEYWORD
nonn,more
AUTHOR
Paul Sampson, Jan 04 2026
STATUS
approved