Ejemplo n.º 1
0
        // TODO Complete algorithm
        public static bool AreIsomorphic(IGroup group1, IGroup group2)
        {
            if (group1.Order != group2.Order)
            {
                return(false);
            }

            if (group1.Equals(group2))
            {
                return(true);
            }

            // Assumes order
            //for (int k = 0; k < group1.Order; k++)
            //    if (group1.Elements[k].Order != group2.Elements[k].Order)
            //        return false;

            if (IsCyclic(group1) && IsCyclic(group2))
            {
                return(true);
            }

            Dictionary <IElement, IElement> map = new Dictionary <IElement, IElement>();

            if (TryMap(group1, group2, map))
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 2
0
        public void MultiplyGenerateSymmetricGroup()
        {
            IGroup group1 = new GeneratedGroup(Element.CreateRotation(4));
            IGroup group2 = new GeneratedGroup(Element.CreateSwap(4));

            IGroup group3 = GroupUtilities.Multiply(group1, group2);

            Assert.AreEqual(24, group3.Order);

            IGroup symm = new SymmetricGroup(4);

            Assert.IsTrue(GroupUtilities.AreEqual(group3, symm));
            Assert.IsTrue(group3.Equals(symm));
        }
Ejemplo n.º 3
0
        // TODO Complete algorithm
        public static bool AreIsomorphic(IGroup group1, IGroup group2)
        {
            if (group1.Order != group2.Order)
                return false;

            if (group1.Equals(group2))
                return true;

            // Assumes order
            //for (int k = 0; k < group1.Order; k++)
            //    if (group1.Elements[k].Order != group2.Elements[k].Order)
            //        return false;

            if (IsCyclic(group1) && IsCyclic(group2))
                return true;

            Dictionary<IElement, IElement> map = new Dictionary<IElement, IElement>();

            if (TryMap(group1, group2, map))
                return true;

            return false;
        }