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