nauty-pet

Canonical graph labelling.

Leverages nauty and Traces to find canonical labellings and graph automorphisms for petgraph graphs.

Example

```rust use petgraph::graph::UnGraph; use nauty_pet::prelude::*;

// Two different vertex labellings for the tree graph with two edges let g1 = UnGraph::<(), ()>::fromedges([(0, 1), (1, 2)]); let g2 = UnGraph::<(), ()>::fromedges([(0, 1), (0, 2)]);

// The canonical forms are identical let c1 = g1.clone().intocanon(); let c2 = g2.clone().intocanon(); assert!(c1.is_identical(&c2));

// Alternatively, we can use a dedicated struct for canonically // labelled graphs let c1 = CanonGraph::from(g1.clone()); let c2 = CanonGraph::from(g2); assert_eq!(c1, c2);

// g1 is invariant under the permutation 0 -> 2, 1 -> 1, 2 -> 0. // we encode it as the vector [2, 1, 0] let automorphisms = g1.tryintoautom_group().unwrap(); assert!(automorphisms.contains(&vec![2, 1, 0]));

```

Features

To enable features feature1, feature2 add the following to your Cargo.toml: toml [dependencies] nauty-pet = { version = "0.8", features = ["feature1", "feature2"] }

License: Apache-2.0