interface for symmetry computations to sassy as a preprocessor to bliss
Definition in file compute_symmetry_sassy_bliss.cpp.
#include "compute_symmetry.h"#include <bliss/defs.hh>#include <bliss/graph.hh>#include <sassy/preprocessor.h>#include <sassy/tools/bliss_converter.h>#include "build_sassy_graph.h"#include "scip/expr_var.h"#include "scip/expr_sum.h"#include "scip/expr_pow.h"#include "scip/expr.h"#include "scip/cons_nonlinear.h"#include "scip/cons_linear.h"#include "scip/scip_mem.h"#include "scip/symmetry_graph.h"Go to the source code of this file.
Data Structures | |
| struct | SYMMETRY_Data |
Macros | |
| #define | STR(x) |
| #define | XSTR(x) |
Functions | |
| static void | sassyhook (void *user_param, int n, const int *aut, int nsupp, const int *suppa) |
| SCIP_Bool | SYMcanComputeSymmetry (void) |
| const char * | SYMsymmetryGetName (void) |
| const char * | SYMsymmetryGetDesc (void) |
| const char * | SYMsymmetryGetAddName (void) |
| const char * | SYMsymmetryGetAddDesc (void) |
| static SCIP_RETCODE | computeAutomorphisms (SCIP *scip, SYM_SYMTYPE symtype, sassy::static_graph *G, int nsymvars, int maxgenerators, int ***perms, int *nperms, int *nmaxperms, SCIP_Real *log10groupsize, SCIP_Bool restricttovars, SCIP_Real *symcodetime) |
| SCIP_RETCODE | SYMcomputeSymmetryGenerators (SCIP *scip, int maxgenerators, SYM_GRAPH *graph, int *nperms, int *nmaxperms, int ***perms, SCIP_Real *log10groupsize, SCIP_Real *symcodetime) |
| SCIP_Bool | SYMcheckGraphsAreIdentical (SCIP *scip, SYM_SYMTYPE symtype, SYM_GRAPH *G1, SYM_GRAPH *G2) |
| #define STR | ( | x | ) |
Definition at line 204 of file compute_symmetry_sassy_bliss.cpp.
| #define XSTR | ( | x | ) |
Definition at line 205 of file compute_symmetry_sassy_bliss.cpp.
Referenced by SYMsymmetryGetAddName().
|
static |
callback function for sassy
| user_param | parameter supplied at call to sassy |
| n | dimension of permutations |
| aut | permutation |
| nsupp | support size |
| suppa | support list |
Definition at line 99 of file compute_symmetry_sassy_bliss.cpp.
References assert(), SYMMETRY_Data::maxgenerators, SYMMETRY_Data::nmaxperms, SYMMETRY_Data::nperms, SYMMETRY_Data::npermvars, NULL, SYMMETRY_Data::perms, SYMMETRY_Data::restricttovars, SYMMETRY_Data::scip, SCIP_OKAY, SCIPallocBlockMemoryArray, SCIPcalcMemGrowSize(), SCIPreallocBlockMemoryArray, SYM_SYMTYPE_PERM, SYM_SYMTYPE_SIGNPERM, and SYMMETRY_Data::symtype.
Referenced by computeAutomorphisms().
| SCIP_Bool SYMcanComputeSymmetry | ( | void | ) |
return whether symmetry can be computed
Definition at line 183 of file compute_symmetry_sassy_bliss.cpp.
| const char * SYMsymmetryGetName | ( | void | ) |
return name of external program used to compute generators
Definition at line 189 of file compute_symmetry_sassy_bliss.cpp.
| const char * SYMsymmetryGetDesc | ( | void | ) |
return description of external program used to compute generators
Definition at line 199 of file compute_symmetry_sassy_bliss.cpp.
| const char * SYMsymmetryGetAddName | ( | void | ) |
return name of additional external program used for computing symmetries
Definition at line 208 of file compute_symmetry_sassy_bliss.cpp.
References XSTR.
| const char * SYMsymmetryGetAddDesc | ( | void | ) |
return description of additional external program used to compute symmetries
Definition at line 214 of file compute_symmetry_sassy_bliss.cpp.
|
static |
computes autormorphisms of a graph
| scip | SCIP pointer |
| symtype | type of symmetries that need to be computed |
| G | pointer to graph for that automorphisms are computed |
| nsymvars | number of variables encoded in graph |
| maxgenerators | maximum number of generators to be constructed (=0 if unlimited) |
| perms | pointer to store generators as (nperms x npermvars) matrix |
| nperms | pointer to store number of permutations |
| nmaxperms | pointer to store maximal number of permutations (needed for freeing storage) |
| log10groupsize | pointer to store log10 of size of group |
| restricttovars | whether permutations shall be restricted to variables |
| symcodetime | pointer to store the time for symmetry code |
Definition at line 221 of file compute_symmetry_sassy_bliss.cpp.
References assert(), SYMMETRY_Data::maxgenerators, SYMMETRY_Data::nmaxperms, SYMMETRY_Data::nperms, SYMMETRY_Data::npermvars, NULL, SYMMETRY_Data::perms, SYMMETRY_Data::restricttovars, sassyhook(), SYMMETRY_Data::scip, SCIP_Bool, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPgetProbName(), SCIPgetSolvingTime(), SCIPsnprintf(), and SYMMETRY_Data::symtype.
Referenced by SYMcheckGraphsAreIdentical(), and SYMcomputeSymmetryGenerators().
| SCIP_RETCODE SYMcomputeSymmetryGenerators | ( | SCIP * | scip, |
| int | maxgenerators, | ||
| SYM_GRAPH * | graph, | ||
| int * | nperms, | ||
| int * | nmaxperms, | ||
| int *** | perms, | ||
| SCIP_Real * | log10groupsize, | ||
| SCIP_Real * | symcodetime ) |
compute generators of symmetry group
| scip | SCIP pointer |
| maxgenerators | maximal number of generators constructed (= 0 if unlimited) |
| graph | symmetry detection graph |
| nperms | pointer to store number of permutations |
| nmaxperms | pointer to store maximal number of permutations (needed for freeing storage) |
| perms | pointer to store permutation generators as (nperms x npermvars) matrix |
| log10groupsize | pointer to store log10 of size of group |
| symcodetime | pointer to store the time for symmetry code |
Definition at line 370 of file compute_symmetry_sassy_bliss.cpp.
References assert(), computeAutomorphisms(), FALSE, SYMMETRY_Data::maxgenerators, SYMMETRY_Data::nmaxperms, SYMMETRY_Data::nperms, NULL, SYMMETRY_Data::perms, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPgetSymgraphNVars(), SCIPgetSymgraphSymtype(), SYMbuildSassyGraph(), and TRUE.
| SCIP_Bool SYMcheckGraphsAreIdentical | ( | SCIP * | scip, |
| SYM_SYMTYPE | symtype, | ||
| SYM_GRAPH * | G1, | ||
| SYM_GRAPH * | G2 ) |
returns whether two given graphs are identical
| scip | SCIP pointer |
| symtype | type of symmetries to be checked |
| G1 | first graph |
| G2 | second graph |
Definition at line 412 of file compute_symmetry_sassy_bliss.cpp.
References computeAutomorphisms(), FALSE, i, SYMMETRY_Data::nmaxperms, nnodes, SYMMETRY_Data::nperms, SYMMETRY_Data::perms, SCIP_Bool, SCIP_CALL, SCIP_CALL_ABORT, SCIP_Real, SCIPfreeBlockMemoryArray, SCIPfreeBlockMemoryArrayNull, SCIPgetSymgraphSymtype(), SYMbuildSassyGraphCheck(), and TRUE.