permlib 0.2.9
Library for permutation computations
Loading...
Searching...
No Matches
permlib::ExplicitTransversal< PERM > Class Template Reference

Transversal class that stores all transversal elements explicitly. More...

#include <explicit_transversal.h>

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

Public Member Functions

 ExplicitTransversal (unsigned int n)
 constructor
virtual PERMat (unsigned long val) const
 returns a transversal element $u$ such that $\alpha^u$ equals val
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 void permute (const PERM &g, const PERM &gInv)
 updates transversal after group generators have been conjugated by g
ExplicitTransversal< PERMclone (const std::map< PERM *, typename PERM::ptr > &generatorChange) const
 returns a clone of this transversal
Public Member Functions inherited from permlib::Transversal< PERM >
 Transversal (unsigned int n)
 constructor
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< unsignedlong >::const_iterator begin () const
 begin iterator of basic orbit
std::list< unsignedlong >::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
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
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
virtual void updateGenerators (const std::map< PERM *, typename PERM::ptr > &generatorChange)
 updates transversal after group generators have been exchanged
virtual const unsigned long & element () const
 returns one element of the orbit

Static Public Attributes

static const unsigned int m_statMaxDepth
 maximal depth of "tree" structure representing the transversal; identical to 1 for explicit 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
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
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

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::ExplicitTransversal< PERM >

Transversal class that stores all transversal elements explicitly.

Member Function Documentation

◆ at()

template<class PERM>
PERM * permlib::ExplicitTransversal< PERM >::at ( unsigned long val) const
virtual

returns a transversal element $u$ such that $\alpha^u$ equals val

Implements permlib::Transversal< PERM >.

◆ clone()

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

returns a clone of this transversal

Parameters
generatorChangenot used by this implementation; just for API consistence

◆ permute()

template<class PERM>
void permlib::ExplicitTransversal< PERM >::permute ( const PERM & g,
const PERM & gInv )
virtual

updates transversal after group generators have been conjugated by g

Parameters
gpermutation to conjugate
gInvinverse of g for performance reasons

Reimplemented from permlib::Transversal< PERM >.

◆ registerMove()

template<class PERM>
void permlib::ExplicitTransversal< PERM >::registerMove ( unsigned long from,
unsigned long to,
const typename PERM::ptr & p )
protectedvirtual

stores that 'p' maps 'from' onto 'to'

Reimplemented from permlib::Transversal< PERM >.

◆ trivialByDefinition()

template<class PERM>
bool permlib::ExplicitTransversal< PERM >::trivialByDefinition ( const PERM & x,
unsigned long to ) const
virtual

true if Schreier generator constructed from x and the transversal element related to "to" is trivial by defintion

Implements permlib::Transversal< PERM >.


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