|
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... | |
Public Member Functions inherited from permlib::Generator< PERM > | |
| 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