AlgoPlus is a C++ library that includes ready-to-use complex data structures and algorithms.
See the full documentation here
Join our Discord
#include "machine_learning/clustering/DBSCAN/dbscan.h"
// AlgoPlus now has Machine Learning classes!
int main(){
std::vector<std::vector<double> > data;
...
// Eps = 4, MinPts = 3
DBSCAN a(data, 4, 3);
// returns the clusters and noise of the DBSCAN clustering
std::map<std::pair<double, double>, int64_t> clusters = a.get_clusters();
std::vector<std::pair<double, double> > noise = a.get_noise();
...
}
#include "machine_learning/image/edge_detection/sobel_operator.h"
// As well as image processing algorithms!
int main(){
...
std::vector<std::vector<int32_t> > img(data);
// Performs edge detection on image img
std::vector<std::vector<int32_t> > resulted = Sobel(img);
...
}
#include "graph/graph.h"
#include "visualization/graph_visualization.h"
// And of course, every data structure that you need!
int main(){
weighted_graph<int> g("undirected");
g.add_edge(1, 4, 2);
g.add_edge(4, 5, 6);
g.add_edge(5, 2, 9);
g.add_edge(2, 8, 10);
// returns the shortest path from 1 to 2.
std::cout << g.shortest_path(1, 2) << '\n';
g.visualize() // You can visualize almost any of our implemented data structures!
}
You can see more examples or follow the Tutorials.
Graphs
Trees
- Red-Black Tree
- AVL Tree
- Binary Search Tree
- Splay Tree
- Trie
- Segment Tree
- Fenwick Tree
- Interval Tree
- 234 Tree
- Min/Max Heap
- Rope(Chord)
Lists
Algorithms
Other
Machine Learning(NEW!)
- Clustering Algorithms
- Encoders
- Regression Algorithms
- Shortest Path Algorithms
- Image Processing Algorithms
We have unit tests for every function of our implemented algorithms & data structures. It is very important to make sure that your code works before making any pull requests!
Linux/MacOS
mkdir build && cd build
cmake ..
make
cd tests
./runUnitTests
Windows
mkdir build
cmake -S . -B build -G Ninja
cmake --build build
cd build/tests
./runUnitTests
-
Povide new implementations on our already implemented data structures & algorithms.
-
Implement new classes / algorithms.
-
Contribute to unit testing by writting unit tests for our classes and algorithms.
-
Create and contribute to APIs for other languages(Check AlgoPy branch).
-
Promote the repository on your local workshop/seminar and get a shout-out.
See more here.
For any information or questions, please contact Spiros at [email protected]