33 #ifndef MATRIXAUTOMORPHISMPREDICATE_H_ 34 #define MATRIXAUTOMORPHISMPREDICATE_H_ 36 #include <permlib/predicate/subgroup_predicate.h> 37 #include <permlib/search/partition/refinement_family.h> 39 #include <boost/foreach.hpp> 44 template <
class PERM,
class MATRIX>
51 virtual bool childRestriction(
const PERM &h,
unsigned int i,
unsigned long beta_i)
const;
52 virtual unsigned int limit()
const;
54 const MATRIX& m_matrix;
61 template <
class PERM,
class MATRIX>
66 template <
class PERM,
class MATRIX>
68 const unsigned long n = m_matrix.dimension();
69 for (
unsigned long i = 0; i < n; ++i) {
70 for (
unsigned long j = i; j < n; ++j) {
71 if (m_matrix.at(i, j) != m_matrix.at(p / i, p / j))
78 template <
class PERM,
class MATRIX>
84 template <
class PERM,
class MATRIX>
87 return m_matrix.dimension();
92 #endif // -- MATRIXAUTOMORPHISMPREDICATE_H_ virtual bool operator()(const PERM &p) const
true iff group element fulfills predicate
Definition: matrix_automorphism_predicate.h:67
predicate for the automorphisms of a symmetric matrix
Definition: matrix_automorphism_predicate.h:45
virtual unsigned int limit() const
limit of recursion depth in backtrack search
Definition: matrix_automorphism_predicate.h:85
MatrixAutomorphismPredicate(const MATRIX &matrix)
constructor
Definition: matrix_automorphism_predicate.h:62
abstract base class for subgroup (and coset) predicates
Definition: subgroup_predicate.h:45
Definition: abstract_bsgs.h:49
virtual bool childRestriction(const PERM &h, unsigned int i, unsigned long beta_i) const
checks if a given group element should not be followed in backtrack search
Definition: matrix_automorphism_predicate.h:79