public static CompositeDictionary <IPermutation, int> GetConjOrbit( this IPermutation perm, IPermutation conj, uint maxSize = 1000) { var pd = PermutationEx.PermutationDictionary(perm.Order); var curConj = conj; var curRes = perm; for (var i = 0; i < maxSize; i++) { if (pd.ContainsKey(curRes)) { return(pd); } pd.Add(curRes, 1); curRes = perm.ConjugateBy(curConj); curConj = curConj.Multiply(conj); } return(pd); }
public static IPermutation ConjugateByRandomSingleTwoCycle(this IPermutation perm, IRando randy) { return(perm.ConjugateBy(randy.ToSingleTwoCyclePermutation(perm.Order))); // return perm.ConjugateBy(randy.ToFullTwoCyclePermutation(perm.Order)); }
public static IPermutation ConjugateByRandomPermutation(this IPermutation perm, IRando randy) { return(perm.ConjugateBy(randy.ToPermutation(perm.Order))); }