CycleIndexPolynomial[perm,{x1,…,xn}]
constructs the cycle index monomial of the permutation perm in the variables xi.
CycleIndexPolynomial[group,{x1,…,xn}]
constructs the cycle index polynomial of group in the variables xi.
CycleIndexPolynomial
CycleIndexPolynomial[perm,{x1,…,xn}]
constructs the cycle index monomial of the permutation perm in the variables xi.
CycleIndexPolynomial[group,{x1,…,xn}]
constructs the cycle index polynomial of group in the variables xi.
Details
- The cycle index polynomial of a permutation group gives useful information to solve enumeration problems related to the action of that group on a set of objects. It is a fundamental object in Pólya theory.
- CycleIndexPolynomial[perm,{x1,…,xk}] returns a monic monomial x1a1x2a2 … xkak for a permutation perm whose cyclic structure contains a1 1-cycles, a2 2-cycles, etc.
- CycleIndexPolynomial[group,{x1,…,xk}] returns a polynomial in which the coefficient of the monomial x1a1x2a2 … xkak gives the number of group elements whose cyclic structure contains a1 1-cycles, a2 2-cycles, etc., divided by the order of the group. It is the average of the cycle index monomials of its elements.
- For a permutation or group p, CycleIndexPolynomial[p,vars,n] denotes that p acts on a domain of n points, where n must be equal to or larger than PermutationMax[p].
- For a permutation or group p, CycleIndexPolynomial[p,vars] is equivalent to CycleIndexPolynomial[p,vars,PermutationMax[p]].
- Variables corresponding to cycle lengths not present in the elements of the group are ignored.
- If the elements of the group contain cycle lengths beyond the number of variables provided, then the result effectively uses a value 1 for those missing variables.
- The length of the cycles of a permutation or a permutation group is always bounded above by the length of their support, as given by PermutationLength. Hence, this is a safe estimate for the number of variables to include as the second argument of CycleIndexPolynomial.
Examples
open all close allBasic Examples (2)
Cycle index monomial of a permutation:
CycleIndexPolynomial[Cycles[{{3, 2, 6}, {1, 7}, {4, 5}}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}]Cycle index polynomial for the alternating group on five points:
CycleIndexPolynomial[AlternatingGroup[5], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]Scope (4)
Cycle index monomial of permutations:
CycleIndexPolynomial[Cycles[{{1, 7, 3}, {4, 10}, {6, 2, 8}, {9, 11}, {13, 15}}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}]CycleIndexPolynomial[{8, 9, 3, 13, 10, 11, 6, 12, 14, 4, 7, 1, 5, 2, 15}, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]Specify the size of the domain of action:
CycleIndexPolynomial[Cycles[{{3, 4}, {5, 6}, {8, 10}}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, 15]CycleIndexPolynomial[{1, 2, 3, 4, 7, 5, 6, 8, 9, 10}, {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, 15]Cycle index polynomial of permutation groups:
CycleIndexPolynomial[DihedralGroup[8], Array[Subscript[x, ##]&, 8]]CycleIndexPolynomial[PermutationGroup[{Cycles[{{1, 2}}], Cycles[{{1, 3}, {2, 4}}]}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}]Specify the size of the domain of action:
CycleIndexPolynomial[CyclicGroup[10], Array[Subscript[x, ##]&, 10], 15]CycleIndexPolynomial[PermutationGroup[{Cycles[{{1, 2}}], Cycles[{{1, 3}, {2, 4}}]}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}, 10]Applications (1)
Cycle index polynomials are essential in Pólya's theory of counting. The classical example is counting how many necklaces can be formed with beads of different colors:
Suppose there is a necklace with 10 beads, invariant under cyclic rotations:
poly = CycleIndexPolynomial[CyclicGroup[10], Array[Subscript[a, ##]&, 10]]Suppose that there are beads of three colors, denoted by r, g, b:
rgbpoly = poly /. Subscript[a, i_] -> r^i + g^i + b^i//ExpandFor instance, there are 252 necklaces with three r beads, five g beads and two b beads:
Coefficient[rgbpoly, r^3 g^5 b^2]This can be checked by actual construction of the necklaces:
GroupOrbits[CyclicGroup[10], Permutations[{r, r, r, g, g, g, g, g, b, b}], Permute]//LengthIf the necklace is considered to also be invariant under reflections along a diameter, then the symmetry group is dihedral:
poly = CycleIndexPolynomial[DihedralGroup[10], Array[Subscript[a, ##]&, 10]]rgbpoly = poly /. Subscript[a, i_] -> r^i + g^i + b^i//ExpandCoefficient[rgbpoly, r^3 g^5 b^2]Properties & Relations (4)
The identity permutation has degree zero and hence does not move any point:
CycleIndexPolynomial[Cycles[{}], {Subscript[x, 1], Subscript[x, 2]}]If it acts on a set with four points, then the cycle index polynomial reflects the existence of four singletons:
CycleIndexPolynomial[Cycles[{}], {Subscript[x, 1], Subscript[x, 2]}, 4]Each point not moved contributes a multiplication by the first variable:
CycleIndexPolynomial[Cycles[{{5, 6, 7}}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}]CycleIndexPolynomial[Cycles[{{1, 2, 3}}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}, 7]CycleIndexPolynomial[PermutationGroup[{Cycles[{{5, 6, 7}}]}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3]}]//FactorMissing variables are effectively replaced by 1:
p = CycleIndexPolynomial[SymmetricGroup[5], {Subscript[x, 1], Subscript[x, 2]}]p === CycleIndexPolynomial[SymmetricGroup[5], {Subscript[x, 1], Subscript[x, 2], 1, 1, 1}]CycleIndexPolynomial[SymmetricGroup[5], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]p === (% /. {Subscript[x, 3] -> 1, Subscript[x, 4] -> 1, Subscript[x, 5] -> 1})The cycle index polynomial of a direct product of groups is the product of the cycle index polynomial of the groups:
p4 = CycleIndexPolynomial[CyclicGroup[4], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4]}]p5 = CycleIndexPolynomial[CyclicGroup[5], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]CycleIndexPolynomial[AbelianGroup[{4, 5}], {Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}]% === Expand[p4 p5]Related Guides
History
Text
Wolfram Research (2012), CycleIndexPolynomial, Wolfram Language function, https://reference.wolfram.com/language/ref/CycleIndexPolynomial.html.
CMS
Wolfram Language. 2012. "CycleIndexPolynomial." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CycleIndexPolynomial.html.
APA
Wolfram Language. (2012). CycleIndexPolynomial. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CycleIndexPolynomial.html
BibTeX
@misc{reference.wolfram_2026_cycleindexpolynomial, author="Wolfram Research", title="{CycleIndexPolynomial}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/CycleIndexPolynomial.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_cycleindexpolynomial, organization={Wolfram Research}, title={CycleIndexPolynomial}, year={2012}, url={https://reference.wolfram.com/language/ref/CycleIndexPolynomial.html}, note=[Accessed: 12-June-2026]}