From 0e3bd6152519cce4a55c104aa00478aeaf23dfb9 Mon Sep 17 00:00:00 2001 From: Ulrich Bauer Date: Wed, 9 Nov 2016 23:58:52 +0100 Subject: initialize edges from lower distance matrix --- ripser.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/ripser.cpp b/ripser.cpp index 36a477a..3ebf2e3 100644 --- a/ripser.cpp +++ b/ripser.cpp @@ -965,19 +965,19 @@ int main(int argc, char** argv) { std::vector columns_to_reduce; std::vector simplices, &edges = simplices; - - for (index_t i = 0; i < n; ++i) { - simplex_coboundary_enumerator cofaces(diameter_index_t(i), 0, n, modulus, sparse_dist, binomial_coeff); - - while (cofaces.has_next(false)) { - auto coface = cofaces.next(); - value_t diameter = get_diameter(coface); - if (diameter <= threshold) edges.push_back(std::make_pair(diameter, get_index(coface))); - } - - std::sort(edges.rbegin(), edges.rend(), greater_diameter_or_smaller_index()); + + std::chrono::time_point start, end; + long elapsed_time; + + start = std::chrono::system_clock::now(); + + for (index_t e = 0; e < dist.distances.size(); ++e) { + value_t diameter = dist.distances[e]; + if (diameter <= threshold) edges.push_back(std::make_pair(diameter, e)); } - + + std::sort(edges.rbegin(), edges.rend(), greater_diameter_or_smaller_index()); + { union_find dset(n); @@ -1019,4 +1019,9 @@ int main(int argc, char** argv) { threshold, modulus, binomial_coeff); } } + + end = std::chrono::system_clock::now(); + elapsed_time = std::chrono::duration_cast(end - start).count(); + std::cout << "Computed Rips persistence in " << elapsed_time << " ms.\n"; + } -- cgit v1.2.3