ctrl->min_coarsen_factor = 0.75;
ctrl->maxlevel = 1<<30;
- ctrl->coarsen_mode = COARSEN_MODE_FORCEFUL;
return ctrl;
}
maximal_independent_edge_set_heavest_edge_pernode_supernodes_first(A, &cluster, &clusterp, &ncluster);
assert(ncluster <= n);
nc = ncluster;
- if ((ctrl->coarsen_mode == COARSEN_MODE_GENTLE && nc > ctrl->min_coarsen_factor*n) || nc == n || nc < ctrl->minsize) {
+ if (nc == n || nc < ctrl->minsize) {
#ifdef DEBUG_PRINT
if (Verbose)
fprintf(stderr, "nc = %d, nf = %d, minsz = %d, coarsen_factor = %f coarsening stops\n",nc, n, ctrl->minsize, ctrl->min_coarsen_factor);
A = cA0;
node_wgt = cnode_wgt0;
cnode_wgt0 = NULL;
- } while (nc > ctrl->min_coarsen_factor*n && ctrl->coarsen_mode == COARSEN_MODE_FORCEFUL);
+ } while (nc > ctrl->min_coarsen_factor*n);
}
enum {EDGE_BASED_STA, COARSEN_INDEPENDENT_EDGE_SET, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_LEAVES_FIRST, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_DEGREE_SCALED, COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_CLUSTER_PERNODE_LEAVES_FIRST, EDGE_BASED_STO, VERTEX_BASED_STA, COARSEN_INDEPENDENT_VERTEX_SET, COARSEN_INDEPENDENT_VERTEX_SET_RS, VERTEX_BASED_STO, COARSEN_HYBRID};
-enum {COARSEN_MODE_GENTLE, COARSEN_MODE_FORCEFUL};
-
struct Multilevel_control_struct {
int minsize;
double min_coarsen_factor;
int maxlevel;
- int coarsen_mode;
};
typedef struct Multilevel_control_struct *Multilevel_control;