dncrane / cover-tree Goto Github PK
View Code? Open in Web Editor NEWA well-documented C++ implementation of the cover tree datastructure for quick k-nearest-neighbor search. Allows single-point insertion and removal. Uses templates.
A well-documented C++ implementation of the cover tree datastructure for quick k-nearest-neighbor search. Allows single-point insertion and removal. Uses templates.
Hi to all,
looking at the code frequency, I am wondering if this repo is dead? Did people move on? Is there another good implementation of a cover tree out there? Or should we fork/clone and continue letting this baby live??
Best,
P
I just replaced all the use of std::pair
with using std::tuple
and got a 30% speed improvement on insert calls:
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
BM_insert/100 4009190 ns 3993675 ns 175
BM_insert/200 14098351 ns 14066840 ns 50
BM_insert/500 79044530 ns 78869829 ns 9
BM_insert_improved/100 5105467 ns 5094695 ns 138
BM_insert_improved/200 18299317 ns 18259001 ns 38
BM_insert_improved/500 105163774 ns 104951121 ns 7
@DNCrane are you interested in such improvements and hence interested in moving to a more recent standard?
Have you considered adding an open-source license to the project so that the code can be used by others? If no license is given, the default is 'exclusive copyright by author' which means that nobody can legally use it....
I personally prefer the Apache APL 2.0 license for my own projects (for example, it provides patent grant and a patent retaliation clauses while being less restrictive than others, such as GPL), but others (MIT license, ...) are also good. See short license overview.
It would allow me to translate your code to Java and include it in my spatial index library (giving due credit to you, of course).
If you like, I can provide a pull request.
I am offering to port the tests to use the header-only catch(2) framework. I am suggesting to move to c++11 at least. Any objections/thoughts/feedback? If not, I'll send in a PR.
it would be useful to add a kNN method that returns not only points, but also their distances, e.g. as std::vec<std::pair<double, Point>>
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.