#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) #x |
#define | XSTR(x) STR(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) |
Macro Definition Documentation
◆ STR
Definition at line 204 of file compute_symmetry_sassy_bliss.cpp.
◆ XSTR
Definition at line 205 of file compute_symmetry_sassy_bliss.cpp.
Referenced by SYMsymmetryGetAddName().
Function Documentation
◆ sassyhook()
|
static |
callback function for sassy
- Parameters
-
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 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().
◆ SYMcanComputeSymmetry()
SCIP_Bool SYMcanComputeSymmetry | ( | void | ) |
return whether symmetry can be computed
Definition at line 183 of file compute_symmetry_sassy_bliss.cpp.
References TRUE.
◆ SYMsymmetryGetName()
const char* SYMsymmetryGetName | ( | void | ) |
return name of external program used to compute generators
Definition at line 189 of file compute_symmetry_sassy_bliss.cpp.
◆ SYMsymmetryGetDesc()
const char* SYMsymmetryGetDesc | ( | void | ) |
return description of external program used to compute generators
Definition at line 199 of file compute_symmetry_sassy_bliss.cpp.
◆ SYMsymmetryGetAddName()
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.
◆ SYMsymmetryGetAddDesc()
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.
◆ computeAutomorphisms()
|
static |
computes autormorphisms of a graph
- Parameters
-
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 SYMMETRY_Data::maxgenerators, SYMMETRY_Data::nmaxperms, SYMMETRY_Data::nperms, SYMMETRY_Data::npermvars, NULL, SYMMETRY_Data::perms, SYMMETRY_Data::restricttovars, sassyhook(), SYMMETRY_Data::scip, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPgetProbName(), SCIPgetSolvingTime(), SCIPsnprintf(), and SYMMETRY_Data::symtype.
Referenced by SYMcheckGraphsAreIdentical(), and SYMcomputeSymmetryGenerators().
◆ 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
- Parameters
-
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 computeAutomorphisms(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPgetSymgraphNVars(), SCIPgetSymgraphSymtype(), SYMbuildSassyGraph(), and TRUE.
◆ SYMcheckGraphsAreIdentical()
SCIP_Bool SYMcheckGraphsAreIdentical | ( | SCIP * | scip, |
SYM_SYMTYPE | symtype, | ||
SYM_GRAPH * | G1, | ||
SYM_GRAPH * | G2 | ||
) |
returns whether two given graphs are identical
- Parameters
-
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, 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.