Example #1
0
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;
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}