DEV Community

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

Posted on • Edited 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 Conan Center

Generic badge Generic badge Generic badge

Generic badge Generic badge

Introduction

CXXGraph is a comprehensive C++ library that manages graph algorithms. This header-only library serves as an alternative to the Boost Graph Library (BGL).

CXXGraph Website

We are Looking for

We are looking for:

  • A Web Developer for the development of the CXXGraph website. All documentation is currently hosted on this GitHub page.
  • Developers and Contributors to provide input. If you are new to the open-source world, we will guide you step by step!

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

Table of Contents

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)