DEV Community

Cover image for CXXGraph Library : Header-Only C++ Library for Graph Representation and Algorithms
ZigRazor
ZigRazor

Posted on • Updated on

CXXGraph Library : Header-Only C++ Library for Graph Representation and Algorithms

CXXGraph

GitHub logo ZigRazor / CXXGraph

Header-Only C++ Library for Graph Representation and Algorithms

CXXGraph

DOI

DOI

codecov CodeFactor

GitHub license GitHub release

Generic badge Generic badge Generic badge

Generic badge Generic badge

Join the chat at https://gitter.im/CXXGraph-Community/community

Share on Tweet

Introduction

CXXGraph is a small library, header only, that manages the Graph and it's algorithms in C++. In other words a "Comprehensive C++ Graph Library" An alternative to Boost Graph Library (BGL).

We are Looking for...

We are looking for:

  • Site Developer for the development of the CXXGraph site ( for the moment on GitHub Page );
  • Developers and Committers, also at first experience, we will guide you step by step to the open-source world!

If you are interested, please contact us at zigrazor@gmail.com or contribute to this project. We are waiting for you!

Roadmap

Completed Description Date of Completition
✔️ First Optimization Apr 4, 2022
✔️ Add Benchmark for all algorithms Oct 5, 2022
✔️ Code Optimization Oct 5, 2022
✔️ Release 0.4.0 Oct 7, 2022
✔️ "Const" Code Review #155 Mar 23, 2023
✔️ Release 0.5.0 Mar 23, 2023
Test

CXXGraph is an Header-Only library, that manages the Graph and it's algorithms in C++. In other words a "Comprehensive C++ Graph Library".

Goal of the library

The main goal of the library is to provide a user-friendly interface, and a simple startup ( for this reason I opted for Header-Only ).
On the other hand, the target is to create a comprehensive C++ library, with a wide variety of algorithms ( the aims is to have all the known and new algorithms in the field of graph ).
As said before, the library want to create a collaborative and inclusive group, where the passionate of Graph Theory, Graph Algorithm, and so on can share they knowledge and research.

List of Feature already present

  • BFS
  • DFS
  • Best First Search
  • Dijkstra
  • Dial
  • Prim's Algorithm
  • Cycle Detection
  • Bellman-Ford
  • Floyd Warshall
  • Kruskal Algorithm
  • Borůvka's Algorithm
  • Graph Slicing based on connectivity
  • Ford-Fulkerson Algorithm
  • Kosaraju's Algorithm
  • Kahn's Algorithm

Other than these algorithms the library provides also some partition algorithms:

  • Vertex-Cut
  • Edge Balanced Vertex-Cut
  • Greedy Vertex-Cut
  • HDRF
  • EBV
  • WB-Libra

Future

The following is the expected Roadmap for the library ( obviously it can be changed in the future, and adapted to the request of users of the library )

Completed Description Date of Completition
✔️ First Optimization Apr 4, 2022
✔️ Add Benchmark for all algorithms Oct 5, 2022
✔️ Code Optimization Oct 5, 2022
✔️ Release 0.4.0 Oct 7, 2022
📝 "Const" Code Review #155 TBD
📝 Release 0.5.0 TBD
📝 Official Site Release TBD
📝 Reduction of Code Issue of Static Analysis TBD
📝 First Stable Release 1.0.0 TBD
📝 Markov Chain Algorithm #107 TBD
📝 Release 1.0.1 TBD
📝 FP-GraphMiner algorithm #105 TBD
📝 Release 1.0.2 TBD
📝 Tarjan's algorithm #103 TBD
📝 Release 1.0.3 TBD
✔️ Graph Topological Sort #104 Nov 3, 2022
📝 Release 1.1.0 TBD
📝 Custom export and import #19 TBD
📝 Input & Output file format #172 TBD
📝 Release 1.2.0 TBD
✔️ Multi-Thread implementation of BFS #121 Dec 6, 2022
📝 Release 1.2.1 TBD
Thread Safe implementations of Boruvka, Prim & Kruskal algorithm #128 Oct 5, 2022
📝 Release 1.3.0 TBD
📝 Edge-Cut Partition Algorithm #183 TBD
📝 Release 1.3.1 TBD
✔️ WB-Libra Parttition Algorithm #178 Nov 25, 2022
📝 Release 1.4.0 TBD
📝 Introduce Hypergraph #122 TBD
📝 Stable Release 2.0.0 TBD

Why publish my project?

About 2 years ago I start this project with the idea to develop somenthing new, or to better say something that can help the developer in some cases or simple that does not have a "good" implementation in this language (C++).
In fact the goal of the library is the portability, simplicity of the interface, and the certainty of the correct execution of the algorithms.
Before this project start I search for somenthing like this, but I didn't find anything similar, so I had decided to start this project.

Now i need help to improve the library and to test it, so I need some C++ developers, someone that can create a good site for the library( also in Github Pages is good ) and some users for test the project.
Obviously any other partecipation is welcome!

If you have 5 minutes to get in touch, click on the project or write to me at zigrazor@gmail.com

Thank you so much!

Top comments (0)