AlgoPlus  v0.1.0
Algoplus{1.0.0}

AlgoPlus is a C++ library that includes ready-to-use complex data structures and algorithms.

Algoplus

Gitpod Ready-to-Code tests codecov GitHub repo size

<strong>See the full documentation <a href="https://csrt-ntua.github.io/AlgoPlus/">here</a></strong>

<strong><a href="https://discord.gg/M9nYv4MHz6">Join</a> our Discord</strong>

Example:

#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.h>
#include <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!
}
DBSCAN clustering algorithm class.
Definition: dbscan.h:17
class for weighted graph
Definition: graph.h:554
std::vector< std::vector< int32_t > > Sobel(const std::vector< std::vector< int32_t > > &image)
Sobel apply function.
Definition: sobel_operator.h:50

You can see more examples or follow the Tutorials.

Classes

Graphs

Trees

Lists

Other

Machine Learning(NEW!)

<strong>How to run test cases</strong>

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

<strong>Our contributors</strong>

<strong>How to contribute</strong>

  1. Povide new implementations on our already implemented data structures & algorithms.
  2. Implement new classes / algorithms.
  1. Contribute to unit testing by writting unit tests for our classes and algorithms.
  2. Create and contribute to APIs for other languages(Check AlgoPy branch).
  3. Promote the repository on your local workshop/seminar and get a shout-out.

See more /home/spiros/Documents/AlgoPlus/.github/CONTRIBUTE/CONTRIBUTE.md "here".

For any information or questions, please contact Spiros at **spirosmag@ieee.org**

<strong>Star History</strong>

Star History Chart