summaryrefslogtreecommitdiff
path: root/src/Bipartite_graphs_matching/example/basic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Bipartite_graphs_matching/example/basic.cpp')
-rw-r--r--src/Bipartite_graphs_matching/example/basic.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/Bipartite_graphs_matching/example/basic.cpp b/src/Bipartite_graphs_matching/example/basic.cpp
index 772bcd4a..797968cc 100644
--- a/src/Bipartite_graphs_matching/example/basic.cpp
+++ b/src/Bipartite_graphs_matching/example/basic.cpp
@@ -23,8 +23,48 @@
#include "../include/gudhi/Graph_matching.h"
#include <iostream>
+#include <chrono>
+#include <fstream>
+
using namespace Gudhi::bipartite_graph_matching;
+
+double upper_bound = 400.; // any real >0
+
+int main(){
+ std::ofstream objetfichier;
+ objetfichier.open("results.csv", std::ios::out);
+
+ for(int n =50; n<=1000; n+=100){
+ std::uniform_real_distribution<double> unif1(0.,upper_bound);
+ std::uniform_real_distribution<double> unif2(upper_bound/1000.,upper_bound/100.);
+ std::default_random_engine re;
+ std::vector< std::pair<double, double> > v1, v2;
+ for (int i = 0; i < n; i++) {
+ double a = unif1(re);
+ double b = unif1(re);
+ double x = unif2(re);
+ double y = unif2(re);
+ v1.emplace_back(std::min(a,b), std::max(a,b));
+ v2.emplace_back(std::min(a,b)+std::min(x,y), std::max(a,b)+std::max(x,y));
+ if(i%5==0)
+ v1.emplace_back(std::min(a,b),std::min(a,b)+x);
+ if(i%3==0)
+ v2.emplace_back(std::max(a,b),std::max(a,b)+y);
+ }
+
+ std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
+ double b = bottleneck_distance(v1,v2);
+ std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
+
+ typedef std::chrono::duration<int,std::milli> millisecs_t;
+ millisecs_t duration(std::chrono::duration_cast<millisecs_t>(end-start));
+ objetfichier << n << ";" << duration.count() << ";" << b << std::endl;
+ }
+ objetfichier.close();
+}
+
+/*
int main() {
std::vector< std::pair<double,double> > v1, v2;
@@ -40,4 +80,4 @@ int main() {
std::cout << "Bottleneck distance = " << b << std::endl;
-}
+}*/