CliqueSeparation *clq_sep_create( const CGraph *origGraph ) { CliqueSeparation *clqSep = xmalloc( sizeof(CliqueSeparation) ); clqSep->maxDepth = CLQ_SEP_DEF_MAX_DEPTH; clqSep->maxPasses = CLQ_SEP_DEF_MAX_PASSES; clqSep->minViol = CLQ_SEP_DEF_MIN_VIOL; clqSep->minFrac = CLQ_SEP_DEF_MIN_FRAC; clqSep->extendCliques = CLQ_SEP_DEF_EXTEND; clqSep->enumUsage = CLQ_SEP_DEF_ENUM; clqSep->verbose = CLQ_SEP_DEF_VERBOSE; clqSep->maxTimeBK = CLQ_SEP_DEF_TLBK; clqSep->hasCosts = 0; clqSep->nodeCap = cgraph_size(origGraph); clqSep->clqEnum = clq_enum_create( 0 ); vint_set_init( &(clqSep->clqEnumNeighs) ); clqSep->iv = xmalloc( sizeof(int)*clqSep->nodeCap ); clqSep->costs = xmalloc( sizeof(int)*clqSep->nodeCap ); clqSep->cgraph = origGraph; clqSep->clqe = clqe_create(); clqSep->clqSetOrig = clq_set_create(); clqSep->clqSet = clq_set_create(); clqSep->extendedCap = 1024; clqSep->extended = xmalloc( sizeof(char)*clqSep->extendedCap ); return clqSep; }
CliqueSeparation *clq_sep_create( const CGraph *origGraph ) { CliqueSeparation *clqSep = xmalloc( sizeof(CliqueSeparation) ); clqSep->minViol = CLQ_SEP_DEF_MIN_VIOL; clqSep->minFrac = CLQ_SEP_DEF_MIN_FRAC; clqSep->extendCliques = CLQ_SEP_DEF_CLQE_EXTEND; clqSep->verbose = CLQ_SEP_DEF_VERBOSE; clqSep->maxItBK = CLQ_SEP_DEF_MAX_IT_BK; clqSep->maxRC = CLQ_SEP_DEF_CLQE_MAX_RC; clqSep->hasCosts = 0; clqSep->nodeCap = cgraph_size(origGraph); clqSep->iv = xmalloc( sizeof(int)*clqSep->nodeCap ); clqSep->costs = xmalloc( sizeof(int)*clqSep->nodeCap ); clqSep->cgraph = origGraph; clqSep->clqe = clqe_create(); clqSep->clqSetOrig = clq_set_create(); clqSep->clqSet = clq_set_create(); clqSep->extendedCap = 1024; clqSep->extended = xmalloc( sizeof(char)*clqSep->extendedCap ); return clqSep; }
Grasp *grasp_create( const CGraph *_cgraph, const int _minW ) { Grasp *grasp = xmalloc( sizeof(Grasp) ); grasp->cgraph = _cgraph; grasp->w = cgraph_get_node_weights( _cgraph ); grasp->alpha_choice = GRASP_ALPHA_REACTIVE; grasp->alpha = ALPHA; grasp->max_ni_it = MAX_NO_IMPROVEMENT; grasp->max_seconds = MAX_SECONDS; grasp->ra_score = NULL; grasp->ra_count = NULL; grasp->ra_q = NULL; grasp->ra_p = NULL; grasp->ra_roullete = NULL; grasp->candidates = xmalloc( sizeof(int)*cgraph_size( grasp->cgraph ) ); grasp->clique = xmalloc( sizeof(int)*cgraph_size( grasp->cgraph ) ); grasp->nodesLeft = xmalloc( sizeof(int)*cgraph_size( grasp->cgraph ) ); grasp->conflictsCap = cgraph_size( grasp->cgraph )*10; /* when processing temporary space is needed */ grasp->conflicts = xmalloc( sizeof(int)*grasp->conflictsCap ); grasp->evalNodesLeft = xmalloc( sizeof(float)*cgraph_size( grasp->cgraph ) ); grasp->minNodeW = INT_MAX; grasp->maxNodeW = -1; { int i; for ( i=0 ; (i<cgraph_size(_cgraph)) ; ++i ) { grasp->minNodeW = MIN( grasp->minNodeW, grasp->w[i] ); grasp->maxNodeW = MAX( grasp->maxNodeW, grasp->w[i] ); } } grasp->diffNodeW = grasp->maxNodeW - grasp->minNodeW; grasp->minW = _minW; grasp->minDegree = cgraph_min_degree( grasp->cgraph ); grasp->maxDegree = cgraph_max_degree( grasp->cgraph ); fflush( stdout ); fflush( stderr ); assert( grasp->maxDegree >= grasp->minDegree ); grasp->difDegree = grasp->maxDegree - grasp->minDegree; grasp->clqSet = clq_set_create(); return grasp; }
CliqueExtender *clqe_create() { CliqueExtender *clqe = xmalloc( sizeof(CliqueExtender) ); clqe->cgraph = NULL; clqe->clqSet = clq_set_create(); clqe->candidatesCap = 0; clqe->candidates = NULL; clqe->newClique = NULL; clqe->costs = NULL; clqe->costsCap = 0; clqe->nit = nit_create(); clqe->maxClqESize = MAX_CLIQUE_SIZE; return clqe; }