From a5e505fc1a8f7ae060f8f2604a8d5b6132851d34 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Mon, 22 Aug 2016 10:42:36 -0400 Subject: made updating the dual clusters more efficient --- src/gen_laplacian.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/gen_laplacian.c') diff --git a/src/gen_laplacian.c b/src/gen_laplacian.c index 6f4263a..a282564 100644 --- a/src/gen_laplacian.c +++ b/src/gen_laplacian.c @@ -5,8 +5,7 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv, unsigned int pad, cholmod_common *c) { unsigned int ne; if (dual) - ne = ((int)instance->network->num_edges - - (int)instance->num_remaining_edges); + ne = ((int)instance->network->num_edges); else { ne = instance->num_remaining_edges; if (!breakv && instance->network->boundary != TORUS_BOUND) { @@ -58,6 +57,19 @@ cholmod_sparse *gen_adjacency(const finst *instance, bool dual, bool breakv, ci[2 * count + 1] = v1; ai[2 * count + 1] = 1; + count++; + } else if (dual) { + unsigned int v1 = etv[2 * i]; + unsigned int v2 = etv[2 * i + 1]; + + ri[2 * count] = v1; + ci[2 * count] = v2; + ai[2 * count] = 0; + + ri[2 * count + 1] = v2; + ci[2 * count + 1] = v1; + ai[2 * count + 1] = 0; + count++; } } -- cgit v1.2.3-70-g09d2