BSGS construction with Random Schreier-Sims algorithm. More...
#include <random_schreier_sims_construction.h>
Public Member Functions | |
RandomSchreierSimsConstruction (uint n, RandomGenerator< PERM > *rng, ulong knownOrder=0) | |
constructor | |
template<class ForwardIterator > | |
BSGS< PERM, TRANS > | construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, bool &guaranteedBSGS) const |
constructs a probable BSGS for group given by generators with no base prescribed | |
template<class ForwardIterator , class InputIterator > | |
BSGS< PERM, TRANS > | construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, bool &guaranteedBSGS) const |
constructs a probable BSGS for group given by generators respecting prescribed base elements | |
RandomSchreierSimsConstruction (uint n, RandomGenerator< PERM > *rng, ulong knownOrder=0) | |
constructor | |
template<class ForwardIterator > | |
BSGS< PERM, TRANS > | construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, bool &guaranteedBSGS) const |
constructs a probable BSGS for group given by generators with no base prescribed | |
template<class ForwardIterator , class InputIterator > | |
BSGS< PERM, TRANS > | construct (ForwardIterator generatorsBegin, ForwardIterator generatorsEnd, InputIterator prescribedBaseBegin, InputIterator prescribedBaseEnd, bool &guaranteedBSGS) const |
constructs a probable BSGS for group given by generators respecting prescribed base elements | |
Public Attributes | |
uint | m_statRandomElementsConsidered |
number of Schreier generators examined during the last construct call | |
Static Public Attributes | |
static const uint | minimalConsecutiveSiftingElementCount = 20 |
number of elements that have to sift through constructed BSGS consecutively that it is returned as a probable BSGS | |
static const uint | maxIterationFactor = 10000 |
factor limiting the number of maximal iterations depeding on the initial base size |
BSGS construction with Random Schreier-Sims algorithm.
Randomized algorithm for BSGS construction. If order is known it is Las Vegas type, otherwise Monte Carlo (it may return an incomplete BSGS).
permlib::RandomSchreierSimsConstruction< PERM, TRANS >::RandomSchreierSimsConstruction | ( | uint | n, | |
RandomGenerator< PERM > * | rng, | |||
ulong | knownOrder = 0 | |||
) | [inline] |
constructor
n | cardinality of the set the group is acting on | |
rng | a RandomGenerator generating uniformly distributed random group elements of the group that the BSGS is constructed of | |
knownOrder | order of the group that the BSGS is constructed of. If non-zero upgrades algorithm to Las Vegas type and the output is guaranteed to be a BSGS. |
permlib::RandomSchreierSimsConstruction< PERM, TRANS >::RandomSchreierSimsConstruction | ( | uint | n, | |
RandomGenerator< PERM > * | rng, | |||
ulong | knownOrder = 0 | |||
) |
constructor
n | cardinality of the set the group is acting on | |
rng | a RandomGenerator generating uniformly distributed random group elements of the group that the BSGS is constructed of | |
knownOrder | order of the group that the BSGS is constructed of. If non-zero upgrades algorithm to Las Vegas type and the output is guaranteed to be a BSGS. |
BSGS<PERM, TRANS> permlib::RandomSchreierSimsConstruction< PERM, TRANS >::construct | ( | ForwardIterator | generatorsBegin, | |
ForwardIterator | generatorsEnd, | |||
InputIterator | prescribedBaseBegin, | |||
InputIterator | prescribedBaseEnd, | |||
bool & | guaranteedBSGS | |||
) | const [inline] |
constructs a probable BSGS for group given by generators respecting prescribed base elements
runs (#{size of initial base} * maxIterationFactor) iterations or until constructed BSGS has knownOrder or minimalConsecutiveSiftingElementCount sift through the constructed BSGS consecutively
generatorsBegin | begin iterator of group generators of type PERM | |
generatorsEnd | end iterator of group generators of type PERM | |
prescribedBaseBegin | begin iterator of prescribed base of type ulong | |
prescribedBaseEnd | end iterator of prescribed base of type ulong | |
guaranteedBSGS | iff true, return object is guaranteed to be a BSGS |
BSGS<PERM, TRANS> permlib::RandomSchreierSimsConstruction< PERM, TRANS >::construct | ( | ForwardIterator | generatorsBegin, | |
ForwardIterator | generatorsEnd, | |||
bool & | guaranteedBSGS | |||
) | const [inline] |
constructs a probable BSGS for group given by generators with no base prescribed
BSGS< PERM, TRANS > permlib::RandomSchreierSimsConstruction< PERM, TRANS >::construct | ( | ForwardIterator | generatorsBegin, | |
ForwardIterator | generatorsEnd, | |||
InputIterator | prescribedBaseBegin, | |||
InputIterator | prescribedBaseEnd, | |||
bool & | guaranteedBSGS | |||
) | const [inline] |
constructs a probable BSGS for group given by generators respecting prescribed base elements
runs (#{size of initial base} * maxIterationFactor) iterations or until constructed BSGS has knownOrder or minimalConsecutiveSiftingElementCount sift through the constructed BSGS consecutively
generatorsBegin | begin iterator of group generators of type PERM | |
generatorsEnd | end iterator of group generators of type PERM | |
prescribedBaseBegin | begin iterator of prescribed base of type ulong | |
prescribedBaseEnd | end iterator of prescribed base of type ulong | |
guaranteedBSGS | iff true, return object is guaranteed to be a BSGS |
BSGS< PERM, TRANS > permlib::RandomSchreierSimsConstruction< PERM, TRANS >::construct | ( | ForwardIterator | generatorsBegin, | |
ForwardIterator | generatorsEnd, | |||
bool & | guaranteedBSGS | |||
) | const [inline] |
constructs a probable BSGS for group given by generators with no base prescribed