Ejemplo n.º 1
0
        public void TestTransversal()
        {
            int size = 4;
            // Sym(n) : make the total symmetry group
            PermutationGroup group = PermutationGroup.MakeSymN(size);

            // Aut(G) : make the automorphism group for a graph
            Permutation p1         = new Permutation(2, 1, 0, 3);
            Permutation p2         = new Permutation(0, 3, 2, 1);
            var         generators = new List <Permutation>
            {
                p1,
                p2
            };
            PermutationGroup subgroup = new PermutationGroup(size, generators);

            // generate the traversal
            var transversal = group.Transversal(subgroup);

            int subgroupOrder   = (int)subgroup.Order();
            int groupOrder      = (int)group.Order();
            int transversalSize = transversal.Count;

            // check that |Aut(G)| / |Sym(N)| = |Transversal|
            Assert.AreEqual(Factorial(size), groupOrder);
            Assert.AreEqual(groupOrder / subgroupOrder, transversalSize);
        }