CXXGraph Library : Header-Only C++ Library for Graph Representation and Algorithms
Published: 2023-03-03 07:16:23

## CXXGraph

{% github ZigRazor/CXXGraph %}

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 |
| :-------: | :---------- | :-------------------: |
| :heavy_check_mark: | First Optimization | Apr 4, 2022 |
| :heavy_check_mark: | Add Benchmark for all algorithms | Oct 5, 2022 |
| :heavy_check_mark: | Code Optimization | Oct 5, 2022 |
| :heavy_check_mark: | Release 0.4.0 | Oct 7, 2022 |
| :memo: | "Const" Code Review [#155](https://github.com/ZigRazor/CXXGraph/issues/155) | TBD |
| :memo: | Release 0.5.0 | TBD |
| :memo: | Official Site Release | TBD |
| :memo: | Reduction of Code Issue of Static Analysis | TBD |
| :memo: | First Stable Release 1.0.0 | TBD |
| :memo: | Markov Chain Algorithm [#107](https://github.com/ZigRazor/CXXGraph/issues/107) | TBD |
| :memo: | Release 1.0.1 | TBD |
| :memo: | FP-GraphMiner algorithm [#105](https://github.com/ZigRazor/CXXGraph/issues/105) | TBD |
| :memo: | Release 1.0.2 | TBD |
| :memo: | Tarjan's algorithm [#103](https://github.com/ZigRazor/CXXGraph/issues/103) | TBD |
| :memo: | Release 1.0.3 | TBD |
| :heavy_check_mark: | Graph Topological Sort [#104](https://github.com/ZigRazor/CXXGraph/issues/107) | Nov 3, 2022 |
| :memo: | Release 1.1.0 | TBD |
| :memo: | Custom export and import [#19](https://github.com/ZigRazor/CXXGraph/issues/19) | TBD |
| :memo: | Input & Output file format [#172](https://github.com/ZigRazor/CXXGraph/issues/172) | TBD |
| :memo: | Release 1.2.0 | TBD |
| :heavy_check_mark: | Multi-Thread implementation of BFS [#121](https://github.com/ZigRazor/CXXGraph/issues/121) | Dec 6, 2022 |
| :memo: | Release 1.2.1 | TBD |
| :grey_exclamation: | Thread Safe implementations of Boruvka, Prim & Kruskal algorithm [#128](https://github.com/ZigRazor/CXXGraph/issues/128) | Oct 5, 2022 |
| :memo: | Release 1.3.0 | TBD |
| :memo: | Edge-Cut Partition Algorithm [#183](https://github.com/ZigRazor/CXXGraph/issues/183) | TBD |
| :memo: | Release 1.3.1 | TBD |
| :heavy_check_mark: | WB-Libra Parttition Algorithm [#178](https://github.com/ZigRazor/CXXGraph/issues/178) | Nov 25, 2022 |
| :memo: | Release 1.4.0 | TBD |
| :memo: | Introduce Hypergraph [#122](https://github.com/ZigRazor/CXXGraph/issues/122) | TBD |
| :memo: | 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](https://github.com/ZigRazor/CXXGraph) or write to me at zigrazor@gmail.com

Thank you so much!