graphina 0.3.0-alpha.4

A graph data science library for Rust
Documentation
# Parallel Processing Examples

Leverage multi-core CPUs for large graph analysis using Rayon.

!!! important "Parallel Feature"
    Make sure the `parallel` feature is enabled in your `Cargo.toml`.

## Parallel PageRank

Calculates PageRank significantly faster on large graphs.

```rust
use graphina::core::types::Digraph;
use graphina::parallel::pagerank_parallel;

fn main() {
    let mut graph = Digraph::<&str, f64>::new();

    // Imagine adding 100,000 nodes and edges...
    // Create a larger graph
    for i in 0..100 {
        let n = graph.add_node("Node");
        if i > 0 {
            // Connect to previous to form a chain/line
            // In a real scenario, you'd add many edges
        }
    }

    // Arguments: graph, damping, iteration, tolerance, nstart
    match pagerank_parallel(&graph, 0.85, 100, 1e-6, None) {
        Ok(scores) => {
            println!("Computed {} ranks.", scores.len());
        },
        Err(e) => println!("Error: {}", e),
    }
}
```

## Parallel BFS

Run BFS from multiple source nodes simultaneously. Useful for distance estimations or analyzing spread.

```rust
use graphina::core::types::Digraph;
use graphina::parallel::bfs::bfs_parallel;

fn main() {
    let mut graph = Digraph::<&str, f64>::new();
    let n1 = graph.add_node("A");
    let n2 = graph.add_node("B");
    graph.add_edge(n1, n2, 1.0);

    let start_nodes = vec![n1];

    // visited is a HashSet of all nodes reachable from ANY start node
    let visited = bfs_parallel(&graph, start_nodes);
    println!("Total reachable nodes: {}", visited.len());
}
```