32 #include <boost/scoped_ptr.hpp> 37 #ifndef ABSTRACT_BSGS_HELPERS_H_ 38 #define ABSTRACT_BSGS_HELPERS_H_ 56 virtual const std::vector<dom_int>*
set()
const = 0;
67 : m_support(support), m_originalSet(s) {}
76 virtual const std::vector<dom_int>*
set()
const {
return &m_originalSet; }
78 const boost::shared_ptr<std::set<dom_int> > m_support;
79 const std::vector<dom_int>& m_originalSet;
96 BOOST_ASSERT( m_support );
97 return std::find_first_of(m_support->begin(), m_support->end(), m_originalSet.begin(), m_originalSet.end()) == m_support->end();
111 m_reducedSet =
new std::vector<dom_int>();
112 m_reducedSet->reserve(s.size());
113 std::vector<dom_int> sorted(s);
114 std::sort(sorted.begin(), sorted.end());
115 std::set_intersection(m_support->begin(), m_support->end(), sorted.begin(), sorted.end(), std::back_inserter(*m_reducedSet));
123 BOOST_ASSERT( m_reducedSet );
124 return m_reducedSet->empty();
129 const std::vector<dom_int>*
set()
const {
133 std::vector<dom_int>* m_reducedSet;
virtual bool canBeIgnored() const
Definition: abstract_bsgs_helpers.h:72
bool canBeIgnored() const
Definition: abstract_bsgs_helpers.h:122
virtual bool canBeIgnored() const =0
ReducedSupportRestriction(const boost::shared_ptr< std::set< dom_int > > &support, const std::vector< dom_int > &s)
Definition: abstract_bsgs_helpers.h:89
This class never imposes a restriction on any set.
Definition: abstract_bsgs_helpers.h:60
virtual bool canBeIgnored() const
Definition: abstract_bsgs_helpers.h:95
This class implements canBeIgnored() but has a trivial set()
Definition: abstract_bsgs_helpers.h:83
This class implements both canBeIgnored() and set()
Definition: abstract_bsgs_helpers.h:102
BaseSupportRestriction(const boost::shared_ptr< std::set< dom_int > > &support, const std::vector< dom_int > &s)
Definition: abstract_bsgs_helpers.h:66
helper class to decide when an permutation action on a set is trivial or can be reduced to a subset ...
Definition: abstract_bsgs_helpers.h:44
FullSupportRestriction(const boost::shared_ptr< std::set< dom_int > > &support, const std::vector< dom_int > &s)
Definition: abstract_bsgs_helpers.h:108
Definition: abstract_bsgs.h:49
virtual ~SupportRestriction()
destructor
Definition: abstract_bsgs_helpers.h:47