OFFSET
1,2
COMMENTS
An n-dimensional simplex has n+1 vertices and (n+1)*n/2 edges. For n=1, the figure is a line segment with one edge. For n=2, the figure is a triangle with three edges. For n=3, the figure is a tetrahedron with six edges. The Schläfli symbol, {3,...,3}, of the regular n-dimensional simplex consists of n-1 threes. Two unoriented colorings are the same if congruent; chiral pairs are counted as one.
A(n,k) is also the number of unoriented colorings of (n-2)-dimensional regular simplices in an n-dimensional simplex using up to k colors. Thus, A(2,k) is also the number of unoriented colorings of the vertices (0-dimensional simplices) of an equilateral triangle.
LINKS
Chai Wah Wu, Table of n, a(n) for n = 1..1528 (terms 1..325 from Robert A. Russell)
Harald Fripertinger, The cycle type of the induced action on 2-subsets
E. M. Palmer and R. W. Robinson, Enumeration under two representations of the wreath product, Acta Math., 131 (1973), 123-143.
FORMULA
The algorithm used in the Mathematica program below assigns each permutation of the vertices to a partition of n+1. It then determines the number of permutations for each partition and the cycle index for each partition.
A(n,k) = Sum_{j=1..(n+1)*n/2} A327088(n,j) * binomial(k,j).
A(n,k) = A327083(n,k) - A327085(n,k) = (A327083(n,k) + A327086(n,k)) / 2 = A327085(n,k) + A327086(n,k).
A(n,k) = A063841(n+1,k-1).
EXAMPLE
Array begins with A(1,1):
1 2 3 4 5 6 7 8 9 10 ...
1 4 10 20 35 56 84 120 165 220 ...
1 11 66 276 900 2451 5831 12496 24651 45475 ...
1 34 792 10688 90005 533358 2437848 9156288 29522961 84293770 ...
...
For A(2,3) = 10, the nine achiral colorings are AAA, AAB, AAC, ABB, ACC, BBB, BBC, BCC, and CCC. The chiral pair is ABC-ACB.
MATHEMATICA
CycleX[{2}] = {{1, 1}}; (* cycle index for permutation with given cycle structure *)
CycleX[{n_Integer}] := CycleX[n] = If[EvenQ[n], {{n/2, 1}, {n, (n-2)/2}}, {{n, (n-1)/2}}]
compress[x : {{_, _} ...}] := (s = Sort[x]; For[i = Length[s], i > 1, i -= 1, If[s[[i, 1]] == s[[i-1, 1]], s[[i-1, 2]] += s[[i, 2]]; s = Delete[s, i], Null]]; s)
CycleX[p_List] := CycleX[p] = compress[Join[CycleX[Drop[p, -1]], If[Last[p] > 1, CycleX[{Last[p]}], ## &[]], If[# == Last[p], {#, Last[p]}, {LCM[#, Last[p]], GCD[#, Last[p]]}] & /@ Drop[p, -1]]]
pc[p_List] := Module[{ci, mb}, mb = DeleteDuplicates[p]; ci = Count[p, #] & /@ mb; Total[p]!/(Times @@ (ci!) Times @@ (mb^ci))] (* partition count *)
row[n_Integer] := row[n] = Factor[Total[pc[#] j^Total[CycleX[#]][[2]] & /@ IntegerPartitions[n+1]]/(n+1)!]
array[n_, k_] := row[n] /. j -> k
Table[array[n, d-n+1], {d, 1, 10}, {n, 1, d}] // Flatten
(* Using Fripertinger's exponent per Andrew Howroyd code in A063841: *)
pc[p_] := Module[{ci, mb}, mb = DeleteDuplicates[p]; ci = Count[p, #] &/@ mb; Total[p]!/(Times @@ (ci!) Times @@ (mb^ci))]
ex[v_] := Sum[GCD[v[[i]], v[[j]]], {i, 2, Length[v]}, {j, i-1}] + Total[Quotient[v, 2]]
array[n_, k_] := Total[pc[#]k^ex[#] &/@ IntegerPartitions[n+1]]/(n+1)!
Table[array[n, d-n+1], {d, 10}, {n, d}] // Flatten
(* Another program (translated from Andrew Howroyd's PARI code): *)
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[GCD[v[[i]], v[[j]]], {i, 2, Length[v]}, {j, 1, i-1}] + Total[Quotient[v, 2]];
T[n_, k_] := Module[{s = 0}, Do[s += permcount[p]*k^edges[p], {p, IntegerPartitions[n+1]}]; s/(n+1)!];
Table[T[n-k+1, k], {n, 1, 9}, {k, n, 1, -1}] // Flatten (* Jean-François Alcover, Jan 08 2021 *)
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, gcd(v[i], v[j]))) + sum(i=1, #v, v[i]\2)}
T(n, k) = {my(s=0); forpart(p=n+1, s+=permcount(p)*k^edges(p)); s/(n+1)!} \\ Andrew Howroyd, Sep 06 2019
(Python)
from itertools import combinations
from math import prod, gcd, factorial
from fractions import Fraction
from sympy.utilities.iterables import partitions
def A327084_T(n, k): return int(sum(Fraction(k**(sum(p[r]*p[s]*gcd(r, s) for r, s in combinations(p.keys(), 2))+sum((q>>1)*r+(q*r*(r-1)>>1) for q, r in p.items())), prod(q**r*factorial(r) for q, r in p.items())) for p in partitions(n+1))) # Chai Wah Wu, Jul 09 2024
CROSSREFS
KEYWORD
nonn,tabl
AUTHOR
Robert A. Russell, Aug 19 2019
STATUS
approved