PermLib
|
BSGS construction with Random Schreier-Sims algorithm. More...
#include <random_schreier_sims_construction.h>
Public Member Functions | |
RandomSchreierSimsConstruction (unsigned int n, RandomGenerator< PERM > *rng, unsigned long 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 | |
unsigned int | m_statRandomElementsConsidered |
number of Schreier generators examined during the last construct call | |
Static Public Attributes | |
static const unsigned int | minimalConsecutiveSiftingElementCount = 20 |
number of elements that have to sift through constructed BSGS consecutively that it is returned as a probable BSGS | |
static const unsigned int | 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 | ( | unsigned int | n, |
RandomGenerator< PERM > * | rng, | ||
unsigned long | 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, | ||
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 |
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 unsigned long |
prescribedBaseEnd | end iterator of prescribed base of type unsigned long |
guaranteedBSGS | iff true, return object is guaranteed to be a BSGS |