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.