33 #ifndef MATRIXREFINEMENT1_H_
34 #define MATRIXREFINEMENT1_H_
36 #include <permlib/predicate/pointwise_stabilizer_predicate.h>
37 #include <permlib/search/partition/refinement.h>
47 template<
class PERM,
class MATRIX>
58 const MATRIX& m_matrix;
59 std::vector<std::list<unsigned long> > m_diagonalPartition;
62 template<
class PERM,
class MATRIX>
64 :
Refinement<PERM>(n, Default), m_matrix(matrix)
68 template<
class PERM,
class MATRIX>
70 BOOST_ASSERT( this->initialized() );
75 unsigned long cell = *cellPairIt;
78 unsigned long diagIndex = *cellPairIt;
79 if (pi.
intersect(m_diagonalPartition[diagIndex].begin(), m_diagonalPartition[diagIndex].end(), cell))
89 template<
class PERM,
class MATRIX>
91 m_diagonalPartition.resize(m_matrix.k());
92 for (
unsigned long i = 0; i < m_matrix.dimension(); ++i) {
93 m_diagonalPartition[m_matrix.at(i,i)].push_back(i);
96 bool foundIntersection =
false;
97 for (
unsigned int c = 0; c < pi.
cells(); ++c) {
99 for (
unsigned long i = 0; i < m_diagonalPartition.size(); ++i) {
100 if (pi.
intersect(m_diagonalPartition[i].begin(), m_diagonalPartition[i].end(), c)) {
102 foundIntersection =
true;
107 if (foundIntersection) {
119 #endif // -- MATRIXREFINEMENT1_H_