permlib  0.2.9
Library for permutation computations
Public Member Functions | Public Attributes | Protected Member Functions | Friends | List of all members
permlib::SchreierTreeTransversal< PERM > Class Template Reference

Transversal class that stores transversal elements in a Schreier tree. More...

#include <schreier_tree_transversal.h>

Inheritance diagram for permlib::SchreierTreeTransversal< PERM >:
permlib::Transversal< PERM > permlib::Orbit< PERM, unsigned long > permlib::ShallowSchreierTreeTransversal< PERM >

Public Member Functions

 SchreierTreeTransversal (unsigned int n)
 constructor
 
virtual bool trivialByDefinition (const PERM &x, unsigned long to) const
 true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion
 
virtual PERM * at (unsigned long val) const
 returns a transversal element $u$ such that $\alpha^u$ equals val
 
virtual void updateGenerators (const std::map< PERM *, typename PERM::ptr > &generatorChange)
 updates transversal after group generators have been exchanged More...
 
SchreierTreeTransversal< PERM > clone (const std::map< PERM *, typename PERM::ptr > &generatorChange) const
 returns a clone of this transversal More...
 
- Public Member Functions inherited from permlib::Transversal< PERM >
 Transversal (unsigned int n)
 constructor More...
 
virtual ~Transversal ()
 virtual destructor
 
virtual bool contains (const unsigned long &val) const
 true iff there exists a transversal element mapping $\alpha$ to val
 
std::list< unsigned long >::const_iterator begin () const
 begin iterator of basic orbit
 
std::list< unsigned long >::const_iterator end () const
 end iterator of basic orbit
 
std::pair< std::list< unsigned long >::const_iterator, std::list< unsigned long >::const_iterator > pairIt () const
 pair of begin, end iterator
 
size_t size () const
 size of basic orbit / transversal
 
unsigned int 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 More...
 
bool sorted () const
 true iff orbit is sorted
 
virtual void orbit (unsigned long alpha, const std::list< typename PERM::ptr > &generators)
 computes transversal based on orbit of $\alpha$ under generators More...
 
virtual void orbitUpdate (unsigned long alpha, const std::list< typename PERM::ptr > &generators, const typename PERM::ptr &g)
 updates transversal based on orbit of $\alpha$ under generators where g is a new generator More...
 
virtual void permute (const PERM &g, const PERM &gInv)
 updates transversal after group generators have been conjugated by g More...
 
virtual const unsigned long & element () const
 returns one element of the orbit
 

Public Attributes

unsigned int m_statMaxDepth
 maximal depth of tree structure representing the transversal
 

Protected Member Functions

virtual void registerMove (unsigned long from, unsigned long to, const typename PERM::ptr &p)
 stores that 'p' maps 'from' onto 'to'
 
- Protected Member Functions inherited from permlib::Transversal< PERM >
virtual bool foundOrbitElement (const unsigned long &alpha, const unsigned long &alpha_p, const typename PERM::ptr &p)
 callback when the orbit algorithm constructs an element alpha_p from alpha and p More...
 
- Protected Member Functions inherited from permlib::Orbit< PERM, unsigned long >
void orbit (const unsigned long &beta, const std::list< typename PERM::ptr > &generators, Action a, std::list< unsigned long > &orbitList)
 computes orbit of beta under generators More...
 
void orbitUpdate (const unsigned long &beta, const std::list< typename PERM::ptr > &generators, const typename PERM::ptr &g, Action a, std::list< unsigned long > &orbitList)
 updates an existing orbit of beta after one element has been added More...
 

Friends

struct permlib::exports::BSGSSchreierExport
 
struct permlib::exports::BSGSSchreierImport
 

Additional Inherited Members

- Public Types inherited from permlib::Orbit< PERM, unsigned long >
typedef PERM PERMtype
 type of permutation used for this orbit
 
- Protected Attributes inherited from permlib::Transversal< PERM >
unsigned int m_n
 size of the set the group is working on
 
std::vector< boost::shared_ptr< PERM > > m_transversal
 transversal elements
 
std::list< unsigned long > m_orbit
 orbit elements
 
bool m_sorted
 true if orbit is sorted (according to a previous sort(InputIterator, InputIterator) call
 

Detailed Description

template<class PERM>
class permlib::SchreierTreeTransversal< PERM >

Transversal class that stores transversal elements in a Schreier tree.

Member Function Documentation

◆ clone()

template<class PERM >
SchreierTreeTransversal< PERM > permlib::SchreierTreeTransversal< PERM >::clone ( const std::map< PERM *, typename PERM::ptr > &  generatorChange) const

returns a clone of this transversal

the group generators that the clone may use are given by the transition map

Parameters
generatorChangetransition map

◆ updateGenerators()

template<class PERM >
void permlib::SchreierTreeTransversal< PERM >::updateGenerators ( const std::map< PERM *, typename PERM::ptr > &  generatorChange)
virtual

updates transversal after group generators have been exchanged

Parameters
generatorChangemap of old generators to new generators

Reimplemented from permlib::Transversal< PERM >.

Reimplemented in permlib::ShallowSchreierTreeTransversal< PERM >.


The documentation for this class was generated from the following file: