Transversal base class corresponding to a base element .
More...
#include <transversal.h>
Classes | |
struct | TrivialAction |
action of a PERM on ulong element More... | |
Public Member Functions | |
Transversal (uint n) | |
constructor | |
virtual | ~Transversal () |
virtual destructor | |
virtual PERM * | at (ulong val) const =0 |
returns a transversal element ![]() ![]() | |
virtual bool | trivialByDefinition (const PERM &x, ulong to) const =0 |
true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion | |
virtual bool | contains (const ulong &val) const |
true iff there exists a transversal element mapping ![]() | |
std::list< ulong >::const_iterator | begin () const |
begin iterator of basic orbit | |
std::list< ulong >::const_iterator | end () const |
end iterator of basic orbit | |
uint | size () const |
size of basic orbit / transversal | |
uint | n () const |
size of the set the group is working on | |
template<class InputIterator > | |
void | sort (InputIterator Bbegin, InputIterator Bend) |
sorts orbit according to order given by list of points | |
bool | sorted () const |
true iff orbit is sorted | |
virtual void | orbit (ulong alpha, const PERMlist &generators) |
computes transversal based on orbit of ![]() | |
virtual void | orbitUpdate (ulong alpha, const PERMlist &generators, const PERMptr &g) |
updates transversal based on orbit of ![]() | |
virtual void | permute (const PERM &g, const PERM &gInv) |
updates transversal after group generators have been conjugated by g | |
virtual void | updateGenerators (const std::map< PERM *, PERMptr > &generatorChange) |
updates transversal after group generators have been exchanged | |
virtual const ulong & | element () const |
returns one element of the orbit | |
Transversal (uint n) | |
constructor | |
virtual | ~Transversal () |
virtual destructor | |
virtual PERM * | at (ulong val) const =0 |
returns a transversal element ![]() ![]() | |
virtual bool | trivialByDefinition (const PERM &x, ulong to) const =0 |
true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion | |
virtual bool | contains (const ulong &val) const |
true iff there exists a transversal element mapping ![]() | |
std::list< ulong >::const_iterator | begin () const |
begin iterator of basic orbit | |
std::list< ulong >::const_iterator | end () const |
end iterator of basic orbit | |
uint | size () const |
size of basic orbit / transversal | |
uint | n () const |
size of the set the group is working on | |
template<class InputIterator > | |
void | sort (InputIterator Bbegin, InputIterator Bend) |
sorts orbit according to order given by list of points | |
bool | sorted () const |
true iff orbit is sorted | |
virtual void | orbit (ulong alpha, const PERMlist &generators) |
computes transversal based on orbit of ![]() | |
virtual void | orbitUpdate (ulong alpha, const PERMlist &generators, const PERMptr &g) |
updates transversal based on orbit of ![]() | |
virtual void | permute (const PERM &g, const PERM &gInv) |
updates transversal after group generators have been conjugated by g | |
virtual void | updateGenerators (const std::map< PERM *, PERMptr > &generatorChange) |
updates transversal after group generators have been exchanged | |
virtual const ulong & | element () const |
returns one element of the orbit | |
Protected Member Functions | |
virtual void | registerMove (ulong from, ulong to, const PERMptr &p) |
stores that 'p' maps 'from' onto 'to' | |
virtual bool | foundOrbitElement (const ulong &alpha, const ulong &alpha_p, const PERMptr &p) |
callback when the orbit algorithm constructs an element alpha_p from alpha and p | |
virtual void | registerMove (ulong from, ulong to, const PERMptr &p) |
stores that 'p' maps 'from' onto 'to' | |
virtual bool | foundOrbitElement (const ulong &alpha, const ulong &alpha_p, const PERMptr &p) |
callback when the orbit algorithm constructs an element alpha_p from alpha and p | |
Protected Attributes | |
uint | m_n |
size of the set the group is working on | |
std::vector< boost::shared_ptr < PERM > > | m_transversal |
transversal elements | |
std::list< ulong > | m_orbit |
orbit elements | |
bool | m_sorted |
true if orbit is sorted (according to a previous sort(InputIterator, InputIterator) call | |
Friends | |
std::ostream & | operator<< (std::ostream &out, const Transversal< PERM > &p) |
to stream | |
std::ostream & | operator<< (std::ostream &out, const Transversal< PERM > &p) |
to stream |
Transversal base class corresponding to a base element .
permlib::Transversal< PERM >::Transversal | ( | uint | n | ) | [inline] |
constructor
n | size of the set the group is working on |
permlib::Transversal< PERM >::Transversal | ( | uint | n | ) |
constructor
n | size of the set the group is working on |
virtual bool permlib::Transversal< PERM >::foundOrbitElement | ( | const ulong & | alpha, | |
const ulong & | alpha_p, | |||
const PERMptr & | p | |||
) | [protected, virtual] |
callback when the orbit algorithm constructs an element alpha_p from alpha and p
Implements permlib::Orbit< PERM, ulong >.
bool permlib::Transversal< PERM >::foundOrbitElement | ( | const ulong & | alpha, | |
const ulong & | alpha_p, | |||
const PERMptr & | p | |||
) | [inline, protected, virtual] |
callback when the orbit algorithm constructs an element alpha_p from alpha and p
Implements permlib::Orbit< PERM, ulong >.
virtual void permlib::Transversal< PERM >::orbit | ( | ulong | alpha, | |
const PERMlist & | generators | |||
) | [virtual] |
computes transversal based on orbit of under generators
alpha | ![]() | |
generators | group generators for the orbit |
Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
void permlib::Transversal< PERM >::orbit | ( | ulong | alpha, | |
const PERMlist & | generators | |||
) | [inline, virtual] |
computes transversal based on orbit of under generators
alpha | ![]() | |
generators | group generators for the orbit |
Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
virtual void permlib::Transversal< PERM >::orbitUpdate | ( | ulong | alpha, | |
const PERMlist & | generators, | |||
const PERMptr & | g | |||
) | [virtual] |
updates transversal based on orbit of under generators where g is a new generator
alpha | ![]() | |
generators | group generators for the orbit | |
g | new generator that the transversal is updated for |
Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
void permlib::Transversal< PERM >::orbitUpdate | ( | ulong | alpha, | |
const PERMlist & | generators, | |||
const PERMptr & | g | |||
) | [inline, virtual] |
updates transversal based on orbit of under generators where g is a new generator
alpha | ![]() | |
generators | group generators for the orbit | |
g | new generator that the transversal is updated for |
Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
virtual void permlib::Transversal< PERM >::permute | ( | const PERM & | g, | |
const PERM & | gInv | |||
) | [virtual] |
updates transversal after group generators have been conjugated by g
g | permutation to conjugate | |
gInv | inverse of g for performance reasons |
Reimplemented in permlib::ExplicitTransversal< PERM >, permlib::ShallowSchreierTreeTransversal< PERM >, permlib::ExplicitTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
void permlib::Transversal< PERM >::permute | ( | const PERM & | g, | |
const PERM & | gInv | |||
) | [inline, virtual] |
updates transversal after group generators have been conjugated by g
g | permutation to conjugate | |
gInv | inverse of g for performance reasons |
Reimplemented in permlib::ExplicitTransversal< PERM >, permlib::ShallowSchreierTreeTransversal< PERM >, permlib::ExplicitTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
void permlib::Transversal< PERM >::sort | ( | InputIterator | Bbegin, | |
InputIterator | Bend | |||
) | [inline] |
sorts orbit according to order given by list of points
Bbegin | begin iterator of point list (ulong) inducing an order | |
Bend | end iterator of point list (ulong) inducing an order |
void permlib::Transversal< PERM >::sort | ( | InputIterator | Bbegin, | |
InputIterator | Bend | |||
) | [inline] |
sorts orbit according to order given by list of points
Bbegin | begin iterator of point list (ulong) inducing an order | |
Bend | end iterator of point list (ulong) inducing an order |
virtual void permlib::Transversal< PERM >::updateGenerators | ( | const std::map< PERM *, PERMptr > & | generatorChange | ) | [inline, virtual] |
updates transversal after group generators have been exchanged
generatorChange | map of old generators to new generators |
Reimplemented in permlib::SchreierTreeTransversal< PERM >, permlib::ShallowSchreierTreeTransversal< PERM >, permlib::SchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.
virtual void permlib::Transversal< PERM >::updateGenerators | ( | const std::map< PERM *, PERMptr > & | generatorChange | ) | [inline, virtual] |
updates transversal after group generators have been exchanged
generatorChange | map of old generators to new generators |
Reimplemented in permlib::SchreierTreeTransversal< PERM >, permlib::ShallowSchreierTreeTransversal< PERM >, permlib::SchreierTreeTransversal< PERM >, and permlib::ShallowSchreierTreeTransversal< PERM >.