assert( aut !=
NULL);
108assert( user_param !=
NULL);
119 boolisIdentity =
true;
138 for(
intj = 0; j < permlen; ++j)
140 if( (
int) aut[j] != j )
152 for(
intj = 0; j < permlen; ++j)
153p[j] = (
int) aut[j];
169assert( newsize >= data->
nperms);
191#ifdef BLISS_PATCH_PRESENT 192 return "bliss "BLISS_VERSION
"p";
194 return "bliss "BLISS_VERSION;
201 return "Computing Graph Automorphisms by T. Junttila and P. Kaski (users.aalto.fi/~tjunttil/bliss)";
205#define XSTR(x) STR(x) 210 return "sassy " XSTR(SASSY_VERSION_MAJOR)
"." XSTR(SASSY_VERSION_MINOR);
216 return "Symmetry preprocessor by Markus Anders (github.com/markusa4/sassy)";
224sassy::static_graph* G,
240assert( maxgenerators >= 0 );
241assert( perms !=
NULL);
242assert( nperms !=
NULL);
243assert( nmaxperms !=
NULL);
244assert( log10groupsize !=
NULL);
245assert( symcodetime !=
NULL);
268sassy::preprocessor sassy;
271sassy::configstruct sconfig;
272sconfig.CONFIG_PREP_DEACT_PROBE =
true;
273sassy.configure(&sconfig);
276sassy::sassy_hook sassyglue = [&](
intn,
const int* p,
intnsupp,
const int* suppa) {
277 sassyhook((
void*)&data, n, p, nsupp, suppa);
281sassy.reduce(G, &sassyglue);
284bliss::Graph blissgraph(0);
287convert_sassy_to_bliss(G, &blissgraph);
290blissgraph.write_dot(
"debug.dot");
293#ifdef SCIP_DISABLED_CODE 296FILE* fp = fopen(filename,
"w");
299blissgraph.write_dimacs(fp);
311blissgraph.set_splitting_heuristic(bliss::Graph::shs_f);
313blissgraph.set_component_recursion(
false);
315#if BLISS_VERSION_MAJOR >= 1 || BLISS_VERSION_MINOR >= 76 321 autohook = [&](
unsigned intn,
const unsigned int* aut) {
322sassy.bliss_hook(n, aut);
326blissgraph.find_automorphisms(stats, hook, term);
330#ifdef BLISS_PATCH_PRESENT 338blissgraph.find_automorphisms(stats, sassy::preprocessor::bliss_hook, (
void*) &sassy);
343(void) stats.print(stdout);
364*log10groupsize = (
SCIP_Real) log10l(stats.get_group_size_approx() * sassy.base) + (
SCIP_Real) sassy.exp;
385assert( graph !=
NULL);
389assert( log10groupsize !=
NULL);
390assert( symcodetime !=
NULL);
400sassy::static_graph sassygraph;
429sassy::static_graph sassygraph;
444 for(
intp = 0; p <
nperms&& ! success; ++p)
446 for(
inti = 0; i < nnodesfromG1; ++i)
448 if(
perms[p][i] >= nnodesfromG1 )
456 for(
intp = 0; p <
nperms; ++p)
SCIP_RETCODE SYMbuildSassyGraph(SCIP *scip, sassy::static_graph *sassygraph, SYM_GRAPH *graph, SCIP_Bool *success)
SCIP_RETCODE SYMbuildSassyGraphCheck(SCIP *scip, sassy::static_graph *sassygraph, SYM_GRAPH *G1, SYM_GRAPH *G2, int *nnodes, int *nnodesfromG1, SCIP_Bool *success)
methods to build sassy graph for symmetry detection
interface for symmetry computations
SCIP_Bool SYMcheckGraphsAreIdentical(SCIP *scip, SYM_SYMTYPE symtype, SYM_GRAPH *G1, SYM_GRAPH *G2)
const char * SYMsymmetryGetName(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)
const char * SYMsymmetryGetAddName(void)
SCIP_RETCODE SYMcomputeSymmetryGenerators(SCIP *scip, int maxgenerators, SYM_GRAPH *graph, int *nperms, int *nmaxperms, int ***perms, SCIP_Real *log10groupsize, SCIP_Real *symcodetime)
SCIP_Bool SYMcanComputeSymmetry(void)
const char * SYMsymmetryGetDesc(void)
static void sassyhook(void *user_param, int n, const int *aut, int nsupp, const int *suppa)
const char * SYMsymmetryGetAddDesc(void)
Constraint handler for linear constraints in their most general form, .
constraint handler for nonlinear constraints specified by algebraic expressions
#define SCIP_CALL_ABORT(x)
private functions to work with algebraic expressions
power and signed power expression handlers
variable expression handler
const char * SCIPgetProbName(SCIP *scip)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
int SCIPcalcMemGrowSize(SCIP *scip, int num)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
SCIP_Real SCIPgetSolvingTime(SCIP *scip)
int SCIPsnprintf(char *t, int len, const char *s,...)
SYM_SYMTYPE SCIPgetSymgraphSymtype(SYM_GRAPH *graph)
int SCIPgetSymgraphNVars(SYM_GRAPH *graph)
public methods for memory management
methods for dealing with symmetry detection graphs
enum SCIP_Retcode SCIP_RETCODE
enum SYM_Symtype SYM_SYMTYPE
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4