compute_symmetry_bliss.cpp
Go to the documentation of this file.
32 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
85 /* make sure we do not generate more that maxgenerators many permutations, if the limit in bliss is not available */
138 if ( SCIPreallocBlockMemoryArray(data->scip, &data->perms, data->nmaxperms, newsize) != SCIP_OKAY )
166 return "Computing Graph Automorphism Groups by T. Junttila and P. Kaski (users.aalto.fi/~tjunttil/bliss)";
355 /* lambda function to have access to data and terminate the search if maxgenerators are reached */
357 return (maxgenerators != 0 && data.nperms >= maxgenerators); /* check the number of generators that we have created so far */
364 /* Older bliss versions do not allow to terminate with a limit on the number of generators unless patched. */
366 /* If patch is present, do not use a node limit, but set generator limit. This approach is not very accurate, since
367 * it limits the generators considered in bliss and not the ones that we generate (the ones that work on the variable
577 /* if a new first node has been found, group the edges of the previous first node; ignoring the last group */
#define SCIPreallocBlockMemoryArray(scip, ptr, oldnum, newnum)
Definition: scip_mem.h:99
Definition: struct_scip.h:69
SCIP_Bool SYMcheckGraphsAreIdentical(SCIP *scip, SYM_SYMTYPE symtype, SYM_GRAPH *G1, SYM_GRAPH *G2)
Definition: compute_symmetry_bliss.cpp:627
SCIP_RETCODE SYMcomputeSymmetryGenerators(SCIP *scip, int maxgenerators, SYM_GRAPH *graph, int *nperms, int *nmaxperms, int ***perms, SCIP_Real *log10groupsize, SCIP_Real *symcodetime)
Definition: compute_symmetry_bliss.cpp:405
#define SCIPallocClearBufferArray(scip, ptr, num)
Definition: scip_mem.h:126
int SCIPgetSymgraphNodeColor(SYM_GRAPH *graph, int nodeidx)
Definition: symmetry_graph.c:1560
void SCIPsortIntIntInt(int *intarray1, int *intarray2, int *intarray3, int len)
Definition: type_symmetry.h:58
private functions to work with algebraic expressions
SCIP_Bool SYMcanComputeSymmetry(void)
Definition: compute_symmetry_bliss.cpp:148
SCIP_Bool SCIPhasGraphUniqueEdgetype(SYM_GRAPH *graph)
Definition: symmetry_graph.c:1624
variable expression handler
interface for symmetry computations
Definition: type_symmetry.h:68
static void blisshook(void *user_param, unsigned int n, const unsigned int *aut)
Definition: compute_symmetry_bliss.cpp:72
methods for dealing with symmetry detection graphs
int SCIPgetSymgraphEdgeFirst(SYM_GRAPH *graph, int edgeidx)
Definition: symmetry_graph.c:1499
void SCIPsortIntInt(int *intarray1, int *intarray2, int len)
SCIP_Bool SCIPisSymgraphEdgeColored(SYM_GRAPH *graph, int edgeidx)
Definition: symmetry_graph.c:1583
static SCIP_RETCODE addGroupedEdges(bliss::Graph *G, int commonnodeidx, int *neighbors, int *colors, int nneighbors, int *naddednodes, int *naddededges)
Definition: compute_symmetry_bliss.cpp:240
Definition: type_symmetry.h:57
power and signed power expression handlers
Definition: type_retcode.h:42
SYM_SYMTYPE SCIPgetSymgraphSymtype(SYM_GRAPH *graph)
Definition: symmetry_graph.c:1439
constraint handler for nonlinear constraints specified by algebraic expressions
Constraint handler for linear constraints in their most general form, .
int SCIPgetSymgraphEdgeColor(SYM_GRAPH *graph, int edgeidx)
Definition: symmetry_graph.c:1598
SCIP_Bool isEdgeGroupable(SYM_GRAPH *graph, int edgeidx, SCIP_Bool groupbycons)
Definition: compute_symmetry_bliss.cpp:182
methods for handling symmetries
Definition: type_symmetry.h:67
int SCIPgetSymgraphNConsnodes(SYM_GRAPH *graph)
Definition: symmetry_graph.c:1469
Definition: struct_symmetry.h:45
SYM_NODETYPE SCIPgetSymgraphNodeType(SYM_GRAPH *graph, int nodeidx)
Definition: symmetry_graph.c:1545
const char * SYMsymmetryGetAddDesc(void)
Definition: compute_symmetry_bliss.cpp:176
sum expression handler
Definition: compute_symmetry_bliss.cpp:58
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
Definition: scip_mem.h:111
Definition: objbenders.h:43
int SCIPgetSymgraphVarnodeColor(SYM_GRAPH *graph, int nodeidx)
Definition: symmetry_graph.c:1523
int SCIPgetSymgraphEdgeSecond(SYM_GRAPH *graph, int edgeidx)
Definition: symmetry_graph.c:1511
static SCIP_RETCODE computeAutomorphisms(SCIP *scip, SYM_SYMTYPE symtype, bliss::Graph *G, int nsymvars, int maxgenerators, int ***perms, int *nperms, int *nmaxperms, SCIP_Real *log10groupsize, SCIP_Bool restricttovars, SCIP_Real *symcodetime)
Definition: compute_symmetry_bliss.cpp:297
const char * SYMsymmetryGetAddName(void)
Definition: compute_symmetry_bliss.cpp:170