searching in a group with classical backtracking More...
#include <backtrack_search.h>
Public Types | |
typedef BaseSearch< BSGSIN, TRANSRET >::PERM | PERM |
typedef BaseSearch< BSGSIN, TRANSRET >::TRANS | TRANS |
typedef boost::shared_ptr < typename BacktrackSearch < BSGSIN, TRANSRET >::PERM > | PERMptrType |
typedef BaseSearch< BSGSIN, TRANSRET >::PERM | PERM |
typedef BaseSearch< BSGSIN, TRANSRET >::TRANS | TRANS |
typedef boost::shared_ptr < typename BacktrackSearch < BSGSIN, TRANSRET >::PERM > | PERMptrType |
Public Member Functions | |
BacktrackSearch (const BSGSIN &bsgs, uint pruningLevelDCM, bool breakAfterChildRestriction=false, bool stopAfterFirstElement=false) | |
constructor | |
void | search (BSGS< PERM, TRANSRET > &groupK) |
searches for a subgroup and stores it into groupK | |
virtual PERMptrType | searchCosetRepresentative (BSGS< PERM, TRANSRET > &groupK, BSGS< PERM, TRANSRET > &groupL) |
searches for a coset representative if one exists | |
BacktrackSearch (const BSGSIN &bsgs, uint pruningLevelDCM, bool breakAfterChildRestriction=false, bool stopAfterFirstElement=false) | |
constructor | |
void | search (BSGS< PERM, TRANSRET > &groupK) |
searches for a subgroup and stores it into groupK | |
virtual PERMptrType | searchCosetRepresentative (BSGS< PERM, TRANSRET > &groupK, BSGS< PERM, TRANSRET > &groupL) |
searches for a coset representative if one exists | |
Protected Member Functions | |
virtual const std::vector < ulong > & | subgroupBase () const |
base of the sought subgroup | |
void | construct (SubgroupPredicate< PERM > *pred, bool addPredRefinement) |
initializes the search | |
uint | search (const PERM &t, uint level, uint &completed, BSGS< PERM, TRANSRET > &groupK, BSGS< PERM, TRANSRET > &groupL) |
recursive backtrack search | |
virtual const std::vector < ulong > & | subgroupBase () const |
base of the sought subgroup | |
void | construct (SubgroupPredicate< PERM > *pred, bool addPredRefinement) |
initializes the search | |
uint | search (const PERM &t, uint level, uint &completed, BSGS< PERM, TRANSRET > &groupK, BSGS< PERM, TRANSRET > &groupL) |
recursive backtrack search |
searching in a group with classical backtracking
permlib::classic::BacktrackSearch< BSGSIN, TRANSRET >::BacktrackSearch | ( | const BSGSIN & | bsgs, | |
uint | pruningLevelDCM, | |||
bool | breakAfterChildRestriction = false , |
|||
bool | stopAfterFirstElement = false | |||
) | [inline] |
constructor
bsgs | BSGS to search in | |
pruningLevelDCM | prune levels smaller than pruningLevelDCM by double coset minimality with base change | |
breakAfterChildRestriction | true iff the rest of a search level can be skipped when one element has been skipped due to child restriction | |
stopAfterFirstElement | true iff the search can be stopped after the first element found with the desired property |
permlib::classic::BacktrackSearch< BSGSIN, TRANSRET >::BacktrackSearch | ( | const BSGSIN & | bsgs, | |
uint | pruningLevelDCM, | |||
bool | breakAfterChildRestriction = false , |
|||
bool | stopAfterFirstElement = false | |||
) |
constructor
bsgs | BSGS to search in | |
pruningLevelDCM | prune levels smaller than pruningLevelDCM by double coset minimality with base change | |
breakAfterChildRestriction | true iff the rest of a search level can be skipped when one element has been skipped due to child restriction | |
stopAfterFirstElement | true iff the search can be stopped after the first element found with the desired property |
virtual PERMptrType permlib::classic::BacktrackSearch< BSGSIN, TRANSRET >::searchCosetRepresentative | ( | BSGS< PERM, TRANSRET > & | groupK, | |
BSGS< PERM, TRANSRET > & | groupL | |||
) | [virtual] |
searches for a coset representative if one exists
the two arguments are two groups K and L such that
groupK | subgroup of G | |
groupL | subgroup of G |
Implements permlib::BaseSearch< BSGSIN, TRANSRET >.
BacktrackSearch< BSGSIN, TRANSRET >::PERMptrType permlib::classic::BacktrackSearch< BSGSIN, TRANSRET >::searchCosetRepresentative | ( | BSGS< PERM, TRANSRET > & | groupK, | |
BSGS< PERM, TRANSRET > & | groupL | |||
) | [inline, virtual] |
searches for a coset representative if one exists
the two arguments are two groups K and L such that
groupK | subgroup of G | |
groupL | subgroup of G |
Implements permlib::BaseSearch< BSGSIN, TRANSRET >.