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/kmeans/kmeans.h>
// AlgoPlus now has Machine Learning classes!
int main(){
std::vector<std::vector<double> > data;
int CLUSTERS;
kmeans a(data, CLUSTERS);
...
// returns the cluster centers and assignments of the kmeans clustering
std::pair<std::vector<std::vector<double> >, std::map<std::vector<double>, int64_t> > ans = a.fit();
}
#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.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
Lists
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]