SparseMatrix D;
D = SparseMatrix_get_real_adjacency_matrix_symmetrized(graph);
remove_overlap(dim, D, x, width, 1000, 5000.,
- ELSCHEME_NONE, 0, NULL, NULL, &flag);
+ ELSCHEME_NONE, 0, NULL, NULL, TRUE, &flag);
nart = nart0;
nrandom = nr0;
}
remove_overlap(Ndim, A, pos, sizes, am->value, am->scaling,
- ELSCHEME_NONE, 0, NULL, NULL, &flag);
+ ELSCHEME_NONE, 0, NULL, NULL, TRUE, &flag);
for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
real *npos = pos + (Ndim * ND_id(n));
}
void remove_overlap(int dim, SparseMatrix A, real *x, real *label_sizes, int ntry, real initial_scaling,
- int edge_labeling_scheme, int n_constr_nodes, int *constr_nodes, SparseMatrix A_constr, int *flag){
+ int edge_labeling_scheme, int n_constr_nodes, int *constr_nodes, SparseMatrix A_constr, int do_shrinking, int *flag){
/*
edge_labeling_scheme: if ELSCHEME_NONE, n_constr_nodes/constr_nodes/A_constr are not used
break;
} else {
res = LARGE;
- neighborhood_only = FALSE; shrink = 1;
+ neighborhood_only = FALSE; if (do_shrinking) shrink = 1;
continue;
}
}
if (has_penalty_terms){
/* now do without penalty */
remove_overlap(dim, A, x, label_sizes, ntry, 0.,
- ELSCHEME_NONE, 0, NULL, NULL, flag);
+ ELSCHEME_NONE, 0, NULL, NULL, TRUE, flag);
}
#ifdef DEBUG
#else
#include "types.h"
#include "SparseMatrix.h"
-void remove_overlap(int dim, SparseMatrix A, int m, real *x, real *label_sizes, int ntry, real initial_scaling, int *flag)
+void remove_overlap(int dim, SparseMatrix A, int m, real *x, real *label_sizes, int ntry, real initial_scaling, int do_shrinking, int *flag)
{
agerr(AGERR, "remove_overlap: Graphviz not built with triangulation library\n");
}
assert(!(*flag));
attach_edge_label_coordinates(dim, A, n_edge_label_nodes, edge_label_nodes, x, x2);
remove_overlap(dim, A, x, label_sizes, ctrl->overlap, ctrl->initial_scaling,
- ctrl->edge_labeling_scheme, n_edge_label_nodes, edge_label_nodes, A, flag);
+ ctrl->edge_labeling_scheme, n_edge_label_nodes, edge_label_nodes, A, TRUE, flag);
SparseMatrix_delete(A2);
FREE(x2);
if (A != A0) SparseMatrix_delete(A);
if (Verbose) fprintf(stderr, "ctrl->overlap=%d\n",ctrl->overlap);
remove_overlap(dim, A, x, label_sizes, ctrl->overlap, ctrl->initial_scaling,
- ctrl->edge_labeling_scheme, n_edge_label_nodes, edge_label_nodes, A, flag);
+ ctrl->edge_labeling_scheme, n_edge_label_nodes, edge_label_nodes, A, TRUE, flag);
RETURN:
*ctrl = ctrl0;