permlib
0.2.9
Library for permutation computations
|
stateful generator of Schreier generators More...
#include <schreier_generator.h>
Public Types | |
typedef std::list< typename PERM::ptr >::const_iterator | PERMlistIt |
const iterator to a list of PERMutations | |
typedef std::list< unsigned long >::const_iterator | TRANSlistIt |
const iterator to a list of points (unsigned long) | |
Public Member Functions | |
SchreierGenerator (const TRANS *U, PERMlistIt S_begin, PERMlistIt S_end) | |
constructor More... | |
PERM | next () |
generates an element | |
bool | hasNext () |
true, iff more elements can be generated | |
void | update (TRANS *U, PERMlistIt S_begin, PERMlistIt S_end) |
updates transversal and group generators that the Schreier generators are constructed from More... | |
void | update (unsigned int j) |
updates the state of this generator More... | |
![]() | |
virtual | ~Generator () |
virtual destructor | |
stateful generator of Schreier generators
Constructs all Schreier generators from given transversal and generators.
The idea is something like forall(u in U) { forall(s in S) { buildSchreierGenerator(u,s); } } only that U and S can be updated without iterating over the same pair (u,s) twice, ensuring that every pair (u,s) is used at least once (if so many generators are requested via next() ).
permlib::SchreierGenerator< PERM, TRANS >::SchreierGenerator | ( | const TRANS * | U, |
PERMlistIt | S_begin, | ||
PERMlistIt | S_end | ||
) |
constructor
U | transversal to build Schreier generators from |
S_begin | begin iterator of group generating list to build Schreier generators from |
S_end | begin iterator of group generating list to build Schreier generators from |
void permlib::SchreierGenerator< PERM, TRANS >::update | ( | TRANS * | U, |
PERMlistIt | S_begin, | ||
PERMlistIt | S_end | ||
) |
updates transversal and group generators that the Schreier generators are constructed from
U | transversal to build Schreier generators from |
S_begin | begin iterator of group generating list to build Schreier generators from |
S_end | begin iterator of group generating list to build Schreier generators from |
void permlib::SchreierGenerator< PERM, TRANS >::update | ( | unsigned int | j | ) |
updates the state of this generator
Saves the current state. Before returning to the current state, all Schreier generators from S[j], S[j+1], &c. and the already visited transversals are next