1

Let $ G $ be a subgroup of $ S_n $. What is the the best way to count the number of orbits of $ G $ acting on the length $ n $ bit strings $ \mathbb{F}_2^n $?

Obviously permutations can only take a bit string to another bit string of the same Hamming weight, so a lower bound for the number of orbits is $ n+1 $, the number of possible Hamming weights

If $ G=S_n $ then the lower bound is saturated and there are $ n+1 $ orbits, one for each weight.

If $ G=A_n $, for $ n\neq 2 $, then again there are $ n+1 $ orbits, one for each weight.

In particular what I am using is that if $ G $ is $ k $-transitive then all bit stings of Hamming weight $ k $ will form a single orbit, and also all bit strings of Hamming weight $ n-k $ will form a single orbit.

But what about for general $ G $ is there a good way to count the number of orbits? Say for example a systematic way to count in the case that $ G $ is cyclic generated by an $ n $ cycle?

A particular case I'm interested in is counting the number of orbits of the $ 5 $-transitive group $ M_{24} $ acting on $ \mathbb{F}_2^{24} $.

I'm equally interested in answers that use theory and answers that are computational, like GAP

  • I see there is a downvote, do you have any suggestions about how to improve the question? Should I add more background? Make the question narrower? Does this have a well known or obvious answer that I am missing? Is there a factual error I can correct? – Ian Gershon Teixeira May 01 '24 at 18:43
  • 1
    I might be wrong but isn't this just the cycle index evaluated with all variables set to two? – Marko Riedel May 01 '24 at 18:48

2 Answers2

3

I'd never heard of the cycle index of a permutation group before so I really appreciate the comment from Marko Riedel! I did some reading and Marko is indeed right that what I want is just the cycle index evaluated with all variables set to $ 2 $.

So for example the action of $ M_{24} $ on $ \mathbb{F}_2^{24} $ has $ 49 $ orbits.

And the action of $ M_{12} $ on $ \mathbb{F}_2^{12} $ has $ 14 $ orbits. We can kind of check this by hand because 5 transitivity means that all orbits are weight classes except weight 6 which must split into at least two orbits and indeed it splits into exactly 2 so we have $ 6+2+6=14 $

As for counting for cyclic permutation group this can be done the same way using the cycle index, but there is a special name for this, the cycle index polynomials you get this way are called necklace polynomials https://en.wikipedia.org/wiki/Necklace_polynomial

In general its always great to see a beautiful new area of math and I'm a stranger to combinatorics so I'm excited to learn more about cycle index polynomials! Thanks so much Marko Riedel!

2

Since you are asking how to do this in GAP

gap> g:=MathieuGroup(24);;
gap> ci:=CycleIndex(g);
1/244823040*x_1^24+1/21504*x_1^8*x_2^8+1/1080*x_1^6*x_3^6+1/7680*x_2^12+1/128\
*x_1^4*x_2^2*x_4^4+1/60*x_1^4*x_5^4+1/24*x_1^2*x_2^2*x_3^2*x_6^2+1/384*x_2^4*\
x_4^4+1/504*x_3^8+1/21*x_1^3*x_7^3+1/16*x_1^2*x_2*x_4*x_8^2+1/96*x_4^6+1/11*x\
_1^2*x_11^2+1/7*x_1*x_2*x_7*x_14+2/15*x_1*x_3*x_5*x_15+1/20*x_2^2*x_10^2+1/12\
*x_2*x_4*x_6*x_12+1/24*x_6^4+2/23*x_1*x_23+2/21*x_3*x_21+1/12*x_12^2
gap> Value(ci,List([1..24],x->X(Rationals,x)),List([1..24],x->2));
49

The cycle index is a polynomial, create the variables needed, and evaluate.

ahulpke
  • 20,399
  • Does GAP have anything like necklace polynomials/ generalized necklace polynomials for doing this in the the cyclic case? – Ian Gershon Teixeira May 02 '24 at 02:06
  • Not built in. But the basic tools are in. – ahulpke May 02 '24 at 11:45
  • Is there a way to count the number of orbits of a given size? For example all the orbits of size $ 24 $ for the action of $ M_{24} $ on $ \mathbb{F}_2^{24} $? I guess what I'm saying is is there an easy way to produce a list of all the sizes of each of the $ 49 $ orbits, and see how many orbits of size $ 24 $ there are? If this is better suited to a new question I can also just do that – Ian Gershon Teixeira May 20 '24 at 19:05