A327084 Array read by descending antidiagonals: A(n,k) is the number of unoriented colorings of the edges of a regular n-dimensional simplex using up to k colors.
1, 2, 1, 3, 4, 1, 4, 10, 11, 1, 5, 20, 66, 34, 1, 6, 35, 276, 792, 156, 1, 7, 56, 900, 10688, 25506, 1044, 1, 8, 84, 2451, 90005, 1601952, 2302938, 12346, 1, 9, 120, 5831, 533358, 43571400, 892341888, 591901884, 274668
Offset: 1
Examples
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.
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.
Crossrefs
Programs
-
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 *)
-
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
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).
Comments