permlib  0.2.9
Library for permutation computations
Public Types | Public Member Functions | Protected Member Functions | List of all members
permlib::Orbit< PERM, PDOMAIN > Class Template Referenceabstract

abstract base class for orbit computation More...

#include <orbit.h>

Inheritance diagram for permlib::Orbit< PERM, PDOMAIN >:
permlib::OrbitList< PERM, PDOMAIN > permlib::OrbitSet< PERM, PDOMAIN >

Public Types

typedef PERM PERMtype
 type of permutation used for this orbit
 

Public Member Functions

virtual bool contains (const PDOMAIN &val) const =0
 true iff there exists a transversal element mapping $\alpha$ to val
 
virtual const PDOMAIN & element () const =0
 returns one element of the orbit
 

Protected Member Functions

template<class Action >
void orbit (const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, Action a, std::list< PDOMAIN > &orbitList)
 computes orbit of beta under generators More...
 
template<class Action >
void orbitUpdate (const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, const typename PERM::ptr &g, Action a, std::list< PDOMAIN > &orbitList)
 updates an existing orbit of beta after one element has been added More...
 
virtual bool foundOrbitElement (const PDOMAIN &alpha, const PDOMAIN &alpha_p, const typename PERM::ptr &p)=0
 callback when the orbit algorithm constructs an element alpha_p from alpha and p More...
 

Detailed Description

template<class PERM, class PDOMAIN>
class permlib::Orbit< PERM, PDOMAIN >

abstract base class for orbit computation

Member Function Documentation

◆ foundOrbitElement()

template<class PERM, class PDOMAIN>
virtual bool permlib::Orbit< PERM, PDOMAIN >::foundOrbitElement ( const PDOMAIN &  alpha,
const PDOMAIN &  alpha_p,
const typename PERM::ptr &  p 
)
protectedpure virtual

callback when the orbit algorithm constructs an element alpha_p from alpha and p

Returns
true iff alpha_p is a new element that has not been seen before

Implemented in permlib::Transversal< PERM >, permlib::OrbitSet< PERM, PDOMAIN >, and permlib::OrbitList< PERM, PDOMAIN >.

◆ orbit()

template<class PERM , class PDOMAIN >
template<class Action >
void permlib::Orbit< PERM, PDOMAIN >::orbit ( const PDOMAIN &  beta,
const std::list< typename PERM::ptr > &  generators,
Action  a,
std::list< PDOMAIN > &  orbitList 
)
inlineprotected

computes orbit of beta under generators

Parameters
beta
generators
a()-callable structure that defines how a PERM acts on a PDOMAIN-element
orbitLista list of all orbit elements to be filled by the algorithm

◆ orbitUpdate()

template<class PERM , class PDOMAIN >
template<class Action >
void permlib::Orbit< PERM, PDOMAIN >::orbitUpdate ( const PDOMAIN &  beta,
const std::list< typename PERM::ptr > &  generators,
const typename PERM::ptr &  g,
Action  a,
std::list< PDOMAIN > &  orbitList 
)
inlineprotected

updates an existing orbit of beta after one element has been added

if this instance of Orbit represents the orbit $\beta^{S_0}$, then after call of orbitUpdate it will represent the orbit $\beta^{S}$ where $S = S_0 \cup \{g\}$

Parameters
beta
generatorsupdated generators, which must include g
gnew generator which has not been there before
a()-callable structure that defines how a PERM acts on a PDOMAIN-element
orbitLista list of all orbit elements to be filled by the algorithm

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