33 #ifndef REFIMENET_FAMILY_H 34 #define REFIMENET_FAMILY_H 36 #include <permlib/search/partition/group_refinement.h> 37 #include <permlib/search/partition/set_stabilize_refinement.h> 38 #include <permlib/search/partition/set_image_refinement.h> 39 #include <permlib/search/partition/matrix_refinement2.h> 51 typedef typename Refinement<PERM>::RefinementPtr RefinementPtr;
52 typedef boost::shared_ptr<Partition> PartitionPtr;
62 virtual std::pair<PartitionPtr,RefinementPtr>
apply(
Partition& pi)
const = 0;
66 template<
class PERM,
class TRANS>
69 typedef typename RefinementFamily<PERM>::RefinementPtr RefinementPtr;
70 typedef typename RefinementFamily<PERM>::PartitionPtr PartitionPtr;
80 return std::make_pair(PartitionPtr(
new Partition(pi)), ref);
82 return std::make_pair(PartitionPtr(), RefinementPtr());
92 typedef typename RefinementFamily<PERM>::RefinementPtr RefinementPtr;
93 typedef typename RefinementFamily<PERM>::PartitionPtr PartitionPtr;
101 template<
class InputIterator>
109 if (strictRefinement)
110 return std::make_pair(PartitionPtr(
new Partition(pi)), ref);
112 return std::make_pair(PartitionPtr(), RefinementPtr());
116 std::vector<unsigned long> toStab;
123 typedef typename RefinementFamily<PERM>::RefinementPtr RefinementPtr;
124 typedef typename RefinementFamily<PERM>::PartitionPtr PartitionPtr;
134 template<
class InputIterator>
136 : m_n(n), delta(begin, end), phi(beginImg, endImg)
143 if (strictRefinement)
144 return std::make_pair(PartitionPtr(
new Partition(pi)), ref);
146 return std::make_pair(PartitionPtr(), RefinementPtr());
150 std::vector<unsigned long> delta;
151 std::vector<unsigned long> phi;
155 template<
class PERM,
class MATRIX>
158 typedef typename RefinementFamily<PERM>::RefinementPtr RefinementPtr;
159 typedef typename RefinementFamily<PERM>::PartitionPtr PartitionPtr;
173 if (strictRefinement)
174 return std::make_pair(PartitionPtr(
new Partition(pi)), ref);
176 return std::make_pair(PartitionPtr(), RefinementPtr());
180 const MATRIX& m_matrix;
186 #endif // -- REFIMENET_FAMILY_H bool initializeAndApply(Partition &pi)
applies (left-)refinement to partition and initializes refinement for future use in R-base ...
Definition: refinement.h:136
Definition: set_image_refinement.h:51
virtual ~RefinementFamily()
virtual destructor
Definition: refinement_family.h:55
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition: refinement_family.h:169
SetStabilizeRefinementFamily(unsigned long n, InputIterator begin, InputIterator end)
refinement family for set stabilization of given set
Definition: refinement_family.h:102
concrete -refinements for set stabilization
Definition: set_stabilize_refinement.h:50
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const =0
tries to initialize a suitable Refinement<PERM> for given partition
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition: refinement_family.h:139
partition
Definition: partition.h:48
MatrixAutomorphismRefinementFamily(unsigned long n, const MATRIX &matrix)
refinement family for symmetric matrix automorphisms
Definition: refinement_family.h:166
core data of a base and strong generating set (BSGS)
Definition: bsgs_core.h:42
SetImageRefinementFamily(unsigned long n, InputIterator begin, InputIterator end, InputIterator beginImg, InputIterator endImg)
refinement family for set stabilization of given set
Definition: refinement_family.h:135
-refinements for group membership
Definition: refinement_family.h:67
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition: refinement_family.h:105
-refinements for set stabilization
Definition: refinement_family.h:121
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition: refinement_family.h:75
concrete -refinements for group membership
Definition: group_refinement.h:44
concrete -refinement for symmetric matrix automorphisms
Definition: matrix_refinement2.h:49
-refinements for symmetric matrix automorphisms
Definition: refinement_family.h:156
represents a class of -refinements for a given problem
Definition: refinement_family.h:49
-refinements for set stabilization
Definition: refinement_family.h:90
GroupRefinementFamily(const BSGSCore< PERM, TRANS > &bsgs)
refinement family for group membership in given group
Definition: refinement_family.h:73
Definition: abstract_bsgs.h:49