Skip to content
/ AlgoPlus Public
forked from CSRT-NTUA/AlgoPlus

AlgoPlus is a C++17 library for complex data structures and algorithms

License

Notifications You must be signed in to change notification settings

R-Goc/AlgoPlus

 
 

Repository files navigation

Algoplus{BETA Version}

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

Algoplus

Gitpod Ready-to-Code CodeQL CI codecov GitHub repo size

See the full documentation here

Join our Discord

Example:

#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.

Classes

Graphs

Trees

Lists

Other

Machine Learning(NEW!)

How to run test cases

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 && cd build
cmake -G "MinGW Makefiles" ..
make
cd tests
./runUnitTests

Our contributors

How to contribute

  1. Povide new implementations on our already implemented data structures & algorithms.

  2. Implement new classes / algorithms.

  3. Contribute to unit testing by writting unit tests for our classes and algorithms.

  4. Create and contribute to APIs for other languages.

  5. Promote the repository on your local workshop/seminar and get a shout-out.

See more here.

Star History

Star History Chart

About

AlgoPlus is a C++17 library for complex data structures and algorithms

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.8%
  • Other 1.2%