From: Matthew Fernandez Date: Fri, 30 Dec 2022 18:10:38 +0000 (-0800) Subject: sfdpgen: remove 'coarsen_scheme_used' option that is always set the same X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=27beca48cbdc1f5890bbc1886d139d3b89ada5c4;p=graphviz sfdpgen: remove 'coarsen_scheme_used' option that is always set the same --- diff --git a/lib/sfdpgen/Multilevel.c b/lib/sfdpgen/Multilevel.c index d463c343e..b61a79fc4 100644 --- a/lib/sfdpgen/Multilevel.c +++ b/lib/sfdpgen/Multilevel.c @@ -305,7 +305,6 @@ static Multilevel Multilevel_establish(Multilevel grid, Multilevel_control ctrl) cgrid = Multilevel_init(cA, cD, cnode_weights); grid->next = cgrid; - cgrid->coarsen_scheme_used = COARSEN_INDEPENDENT_EDGE_SET_HEAVEST_EDGE_PERNODE_SUPERNODES_FIRST; cgrid->level = grid->level + 1; cgrid->n = cA->m; cgrid->A = cA; diff --git a/lib/sfdpgen/Multilevel.h b/lib/sfdpgen/Multilevel.h index 414dcc2f4..8b9879e10 100644 --- a/lib/sfdpgen/Multilevel.h +++ b/lib/sfdpgen/Multilevel.h @@ -26,13 +26,10 @@ struct Multilevel_struct { Multilevel next; Multilevel prev; int delete_top_level_A; - int coarsen_scheme_used;/* to get from previous level to here */ }; enum {MAX_CLUSTER_SIZE = 4}; -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}; - struct Multilevel_control_struct { int minsize; double min_coarsen_factor; diff --git a/lib/sfdpgen/spring_electrical.c b/lib/sfdpgen/spring_electrical.c index 3c5f8b587..f7355587e 100644 --- a/lib/sfdpgen/spring_electrical.c +++ b/lib/sfdpgen/spring_electrical.c @@ -1520,21 +1520,19 @@ void interpolate_coord(int dim, SparseMatrix A, double *x){ free(y); } -static void prolongate(int dim, SparseMatrix A, SparseMatrix P, SparseMatrix R, double *x, double *y, int coarsen_scheme_used, double delta){ +static void prolongate(int dim, SparseMatrix A, SparseMatrix P, SparseMatrix R, double *x, double *y, double delta){ int nc, *ia, *ja, i, j, k; SparseMatrix_multiply_dense(P, x, &y, dim); /* xu yao rao dong */ - if (coarsen_scheme_used > EDGE_BASED_STA && coarsen_scheme_used < EDGE_BASED_STO){ - interpolate_coord(dim, A, y); - nc = R->m; - ia = R->ia; - ja = R->ja; - for (i = 0; i < nc; i++){ - for (j = ia[i]+1; j < ia[i+1]; j++){ - for (k = 0; k < dim; k++){ - y[ja[j]*dim + k] += delta*(drand() - 0.5); - } + interpolate_coord(dim, A, y); + nc = R->m; + ia = R->ia; + ja = R->ja; + for (i = 0; i < nc; i++){ + for (j = ia[i]+1; j < ia[i+1]; j++){ + for (k = 0; k < dim; k++){ + y[ja[j]*dim + k] += delta*(drand() - 0.5); } } } @@ -1766,7 +1764,7 @@ static void multilevel_spring_electrical_embedding_core(int dim, SparseMatrix A0 Multilevel_control mctrl = NULL; - int n, plg, coarsen_scheme_used; + int n, plg; SparseMatrix A = A0, D = D0, P = NULL; Multilevel grid, grid0; double *xc = NULL, *xf = NULL; @@ -1893,25 +1891,19 @@ static void multilevel_spring_electrical_embedding_core(int dim, SparseMatrix A0 goto RETURN; } P = grid->P; - coarsen_scheme_used = grid->coarsen_scheme_used; grid = grid->prev; if (Multilevel_is_finest(grid)){ xf = x; } else { xf = gv_calloc(grid->n * dim, sizeof(double)); } - prolongate(dim, grid->A, P, grid->R, xc, xf, coarsen_scheme_used, (ctrl->K)*0.001); + prolongate(dim, grid->A, P, grid->R, xc, xf, (ctrl->K)*0.001); free(xc); xc = xf; ctrl->random_start = FALSE; ctrl->K = ctrl->K * 0.75; ctrl->adaptive_cooling = FALSE; - if (grid->next->coarsen_scheme_used > VERTEX_BASED_STA && - grid->next->coarsen_scheme_used < VERTEX_BASED_STO){ - ctrl->step = 1; - } else { - ctrl->step = .1; - } + ctrl->step = .1; } while (grid); #ifdef TIME