dejavu
Fast probabilistic symmetry detection.
|
API for the dejavu Schreier structure. More...
#include <groups.h>
Public Member Functions | |
dej_nodiscard int | get_number_of_generators () const |
void | get_generator (int i, automorphism_workspace &automorphism) |
random_schreier (int domain_size, int error=10, bool true_random=false, int seed=0) | |
void | set_base (std::vector< int > &new_base, bool resift_generators=false) |
void | sift_random () |
dej_nodiscard int | base_size () const |
dej_nodiscard int | get_fixed_point (int pos) const |
bool | is_in_fixed_orbit (const int base_pos, const int v) |
dej_nodiscard int | get_fixed_orbit_size (const int base_pos) |
const std::vector< int > & | get_fixed_orbit (const int base_pos) |
void | get_stabilizer_orbit (int base_pos, orbit &orbit_partition) |
std::vector< int > | get_stabilizer_generators (int base_pos) |
bool | sift (automorphism_workspace &automorphism, bool known_in_group=false) |
bool | sift (int, const int *p, int nsupp, const int *supp, bool known_in_group=false) |
big_number | group_size () |
API for the dejavu Schreier structure.
Enables sifting of automorphisms into a Schreier structure with given base. The Schreier structure does not compute proper random elements of the group, hence no guarantees regarding the error bound are given. The group described by the Schreier structure is always guaranteed to be a subgroup of the actual group generated by the contained elements.
|
inlineexplicit |
Initializes a random Schreier structure with the given parameters.
domain_size | the size of the domain (e.g., number of vertices of the graph) |
error | higher values reduce the likelihood of missing generators (default is 10) |
true_random | whether to use true random number generation |
seed | the seed if pseudo random numbers are being used |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Loads the i-th
generator into the given automorphism_workspace. Valid values for i
are between 0
and get_number_of_generators()-1
.
i | will load the i-th generator |
automorphism | workspace to load the generator into |
|
inline |
|
inline |
Computes a list of generators for the pointwise stabilizer fixing the first base_pos
points of the current base. The returned vector contains a list of generator ID's as stored in the Schreier structure. The generators can then be loaded using get_generator
.
base_pos | position of base to consider |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Sift automorphism into the Schreier structure. If the automorphism is not yet represented in the Schreier structure, the structure is extended using the automorphism. I.e., the routine will add the given automorphism to the structure, if necessary.
w | Auxiliary workspace used for procedures. |
automorphism | Automorphism to be sifted. Will be manipulated by the method. |
|
inline |
Sift automorphism into the Schreier structure.
p | complete bijection of the automorphism |
nsupp | number of points in the support of automorphism |
supp | support of automorphism |
known_in_group | whether we know that the given automorphism is already in the group or not |
|
inline |