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;
66template<
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;
155template<
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;
GroupRefinementFamily(const BSGSCore< PERM, TRANS > &bsgs)
refinement family for group membership in given group
Definition refinement_family.h:73
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
MatrixAutomorphismRefinementFamily(unsigned long n, const MATRIX &matrix)
refinement family for symmetric matrix automorphisms
Definition refinement_family.h:166
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition refinement_family.h:169
concrete -refinement for symmetric matrix automorphisms
Definition matrix_refinement2.h:49
partition
Definition partition.h:48
represents a class of -refinements for a given problem
Definition refinement_family.h:49
virtual ~RefinementFamily()
virtual destructor
Definition refinement_family.h:55
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const =0
tries to initialize a suitable Refinement<PERM> for given partition
bool initializeAndApply(Partition &pi)
applies (left-)refinement to partition and initializes refinement for future use in R-base
Definition refinement.h:136
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition refinement_family.h:139
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
Definition set_image_refinement.h:51
virtual std::pair< PartitionPtr, RefinementPtr > apply(Partition &pi) const
tries to initialize a suitable Refinement<PERM> for given partition
Definition refinement_family.h:105
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
core data of a base and strong generating set (BSGS)
Definition bsgs_core.h:42