icentral-graph-interface 0.1.0

A Rust crate providing traits for graph manipulation, focusing on minimum union cycles, betweenness centrality, and efficient shortest path calculations.
Documentation
# iCentral Graph Interface

`icentral-graph-interface` is a robust Rust crate structured to empower developers working with graph structures and implementing graph-theoretic algorithms. This crate provides traits that abstract functionalities related to graph traversal, pathfinding, and the management of complex graph-based data structures, and is specifically oriented towards tasks involving Minimum Union Cycles and Betweenness Centrality, among other complex computations.

## Features

- **Graph Validation**: Utilize `IsValid` to ascertain graph correctness.
- **Minimum Cycle Basis Identification**: Employ `McbFind` to find algorithmically relevant cycles.
- **Iterative Debugger**: Use `InitDebugIteration` and `DebugIterationStep` for detailed iteration debugging.
- **Shortest Path Algorithms**: Apply `FindSingleSourceShortestPaths` for efficient shortest path calculations.
- **Distance Mapping**: Leverage `CreateDistanceMaps` to generate comprehensive distance maps.
- **Betweenness Centrality**: Initialize with `InitBetweennessCentrality` for advanced centrality analysis.
- **Graph Connectivity**: Analyze connected components and pruning with `GetConnectedComponentSizes` and `FindPruningCounts`.

## Installation

Add the following line to your `Cargo.toml` under `[dependencies]`:

```toml
icentral-graph-interface = "0.1.0"
```

## Usage

Implement the desired traits in a struct managing your graph data:

```rust
use icentral_graph_interface::{IsValid, McbFind, PrintHeader};

struct MyGraph;

impl IsValid for MyGraph {
    fn is_valid(&self) -> bool {
        // Implement logic to validate graph
        true
    }
}

impl McbFind for MyGraph {
    fn mcb_find(&self) {
        // Implement logic to find minimum cycle basis
    }
}

impl PrintHeader for MyGraph {
    fn print_header(&self) {
        // Logic to print graph header
    }
}
```

## Contributing

We welcome and appreciate contributions. Feel free to explore, report bugs, and contribute.

## License

Licensed under the MIT License.

---

*This README.md was generated by an AI model and may not be 100% accurate, however it should be pretty good.*

This crate is in the process of being translated from c++ to rust. Currently, it still needs exhaustive testing.  It is likely there currently exist many glitches which need to be fixed before proper usage. This crate is based on the original icentral program developed by Fuad Jamor. Please see the following repository for details: https://github.com/fjamour/icentral.

For progress updates, see the workspacer rust project.