From 350b400fa0fb49c190b5b62934fa58869f23f4c4 Mon Sep 17 00:00:00 2001 From: skachano Date: Fri, 30 Sep 2016 10:06:39 +0000 Subject: Weak Witness + Active Witness. It seems to work. git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/relaxed-witness@1595 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 04b616907f9173e7b3cffebcd8b167a0413eb687 --- src/Witness_complex/example/witness_complex_sphere.cpp | 9 ++++----- .../include/gudhi/Active_witness/Active_witness.h | 7 ++++--- .../include/gudhi/Active_witness/Active_witness_iterator.h | 5 +++-- src/Witness_complex/include/gudhi/Witness_complex.h | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Witness_complex/example/witness_complex_sphere.cpp b/src/Witness_complex/example/witness_complex_sphere.cpp index 5a041c3e..310fb1be 100644 --- a/src/Witness_complex/example/witness_complex_sphere.cpp +++ b/src/Witness_complex/example/witness_complex_sphere.cpp @@ -65,13 +65,12 @@ int main(int argc, char * const argv[]) { int number_of_landmarks = atoi(argv[1]); clock_t start, end; - // Construct the Simplex Tree - Gudhi::Simplex_tree<> simplex_tree; - std::vector< std::pair > l_time; // Read the point file for (int nbP = 500; nbP < 10000; nbP += 500) { + // Construct the Simplex Tree + Gudhi::Simplex_tree<> simplex_tree; Point_Vector point_vector, landmarks; generate_points_sphere(point_vector, nbP, 4); std::cout << "Successfully generated " << point_vector.size() << " points.\n"; @@ -91,8 +90,8 @@ int main(int argc, char * const argv[]) { double time = static_cast(end - start) / CLOCKS_PER_SEC; std::cout << "Witness complex for " << number_of_landmarks << " landmarks took " << time << " s. \n"; - assert(1 == 0); - std::cout << simplex_tree << "\n"; + //assert(1 == 0); + //std::cout << simplex_tree << "\n"; std::cout << "Number of simplices is: " << simplex_tree.num_simplices() << "\n"; l_time.push_back(std::make_pair(nbP, time)); } diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h index 87981c25..7b169784 100644 --- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h +++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h @@ -38,8 +38,9 @@ public: typedef Active_witness ActiveWitness; typedef typename INS_range::iterator INS_iterator; typedef Active_witness_iterator< ActiveWitness, Id_distance_pair, INS_iterator > iterator; + typedef typename std::list Table; - std::vector nearest_landmark_table_; + Table nearest_landmark_table_; INS_range search_range_; INS_iterator iterator_last_; INS_iterator iterator_end_; @@ -60,8 +61,8 @@ public: return iterator(this); } - std::vector end_element_table_; - typename std::vector::iterator end_pointer = end_element_table_.end(); + Table end_element_table_ = {Id_distance_pair(-1,0)}; + typename Table::iterator end_pointer = end_element_table_.begin(); }; } diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h index cd4f4b92..658405f6 100644 --- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h +++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h @@ -42,7 +42,7 @@ class Active_witness_iterator friend class boost::iterator_core_access; //typedef Active_witness Active_witness; - typedef typename std::vector::iterator Pair_iterator; + typedef typename std::list::iterator Pair_iterator; typedef typename Gudhi::witness_complex::Active_witness_iterator Iterator; @@ -57,7 +57,8 @@ public: { } - Active_witness_iterator(Active_witness* aw, Pair_iterator lh_) + Active_witness_iterator(Active_witness* aw, Pair_iterator lh) + : aw_(aw), lh_(lh) { } diff --git a/src/Witness_complex/include/gudhi/Witness_complex.h b/src/Witness_complex/include/gudhi/Witness_complex.h index c6dff3bf..158f92ec 100644 --- a/src/Witness_complex/include/gudhi/Witness_complex.h +++ b/src/Witness_complex/include/gudhi/Witness_complex.h @@ -237,7 +237,7 @@ private: } else if (dim == 0) for (; l_it->second - alpha2 <= norelax_dist2 && l_it != end; ++l_it) { - simplex.push_back(l_it->second); + simplex.push_back(l_it->first); double filtration_value = 0; // if norelax_dist is infinite, relaxation is 0. if (l_it->second > norelax_dist2) -- cgit v1.2.3