summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-09-30 10:06:39 +0000
committerskachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2016-09-30 10:06:39 +0000
commit350b400fa0fb49c190b5b62934fa58869f23f4c4 (patch)
tree633ff8f3e1d6ce0fa31be1f7c6ef225de8ca7c16
parente1eab27ee280826a5c9c44d530679626da2efb1f (diff)
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
-rw-r--r--src/Witness_complex/example/witness_complex_sphere.cpp9
-rw-r--r--src/Witness_complex/include/gudhi/Active_witness/Active_witness.h7
-rw-r--r--src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h5
-rw-r--r--src/Witness_complex/include/gudhi/Witness_complex.h2
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<int, double> > 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<double>(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<Id_distance_pair, INS_range> ActiveWitness;
typedef typename INS_range::iterator INS_iterator;
typedef Active_witness_iterator< ActiveWitness, Id_distance_pair, INS_iterator > iterator;
+ typedef typename std::list<Id_distance_pair> Table;
- std::vector<Id_distance_pair> 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<Id_distance_pair> end_element_table_;
- typename std::vector<Id_distance_pair>::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<Id_distance_pair, INS_iterator> Active_witness;
- typedef typename std::vector<Id_distance_pair>::iterator Pair_iterator;
+ typedef typename std::list<Id_distance_pair>::iterator Pair_iterator;
typedef typename Gudhi::witness_complex::Active_witness_iterator<Active_witness, Id_distance_pair, INS_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)