36 #include <permlib/transversal/orbit.h> 41 template<
class PERM,
class PDOMAIN>
44 virtual bool contains(
const PDOMAIN& val)
const;
56 template<
class Action>
57 void orbit(
const PDOMAIN& beta,
const std::list<typename PERM::ptr> &generators, Action a);
62 virtual const PDOMAIN&
element()
const;
64 typedef typename std::set<PDOMAIN>::const_iterator const_iterator;
73 virtual bool foundOrbitElement(
const PDOMAIN& alpha,
const PDOMAIN& alpha_p,
const typename PERM::ptr& p);
76 template <
class PERM,
class PDOMAIN>
78 if (m_orbitSet.insert(alpha_p).second) {
79 PERMLIB_DEBUG(std::cout <<
" o " << alpha_p <<
" @ " << (*p) << std::endl;)
85 template <
class PERM,
class PDOMAIN>
87 return m_orbitSet.find(val) != m_orbitSet.end();
90 template <
class PERM,
class PDOMAIN>
91 template<
class Action>
93 std::list<PDOMAIN> orbitList;
97 template <
class PERM,
class PDOMAIN>
99 return *(m_orbitSet.begin());
104 #endif // -- ORBIT_SET_H_ std::set< PDOMAIN > m_orbitSet
orbit elements as set
Definition: orbit_set.h:71
const_iterator begin() const
begin-iterator to orbit elements
Definition: orbit_set.h:66
virtual bool contains(const PDOMAIN &val) const
true iff there exists a transversal element mapping to val
Definition: orbit_set.h:86
void orbit(const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, Action a, std::list< PDOMAIN > &orbitList)
computes orbit of beta under generators
Definition: orbit.h:89
abstract base class for orbit computation
Definition: orbit.h:44
stores an orbit in a set for fast contains() operation
Definition: orbit_set.h:42
virtual bool foundOrbitElement(const PDOMAIN &alpha, const PDOMAIN &alpha_p, const typename PERM::ptr &p)
callback when the orbit algorithm constructs an element alpha_p from alpha and p
Definition: orbit_set.h:77
bool empty() const
true iff orbit is empty (i.e. contains no element at all)
Definition: orbit_set.h:47
const_iterator end() const
end-iterator to orbit elements
Definition: orbit_set.h:68
virtual const PDOMAIN & element() const
returns one element of the orbit
Definition: orbit_set.h:98
size_t size() const
number of orbit elements
Definition: orbit_set.h:60
void orbit(const PDOMAIN &beta, const std::list< typename PERM::ptr > &generators, Action a)
computes orbit of beta under generators
Definition: orbit_set.h:92
Definition: abstract_bsgs.h:49