Archives

Calculating Symmetry using Representative Elements

I have long been curious how other people who write cube programs and who incorporate symmetry into their programs actually do the symmetry calculations.  The general way I do it has been outlined in Cube-Lovers.

For a given position x, I calculate a representative element of its m-conjugates, where M is the standard Cube-Lovers terminology for the 48 symmetries of the cube.  I then store and manipulate only the representatives.

We denote this calculation as y = Rep(x) = min{xM} = min{xm | m in M}.  The minimum element of xM is taken to be the one that is first in lexicographic order.  And as usual, xm means m-1xm, and xM means {xm | m in M}.