nauty-pet

Crates.ionauty-pet
lib.rsnauty-pet
version
sourcesrc
created_at2022-02-11 14:51:10.071935+00
updated_at2025-02-28 09:21:15.474236+00
descriptionCanonical graph labelling using nauty/Traces and petgraph
homepage
repositoryhttps://github.com/a-maier/nauty-pet
max_upload_size
id530779
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
(a-maier)

documentation

README

nauty-pet

Canonical graph labelling.

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

Example

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

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

// The canonical forms are identical
let c1 = g1.clone().into_canon();
let c2 = g2.clone().into_canon();
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.try_into_autom_group().unwrap();
assert!(automorphisms.contains(&vec![2, 1, 0]));

Features

  • serde-1: Enables serialisation of CanonGraph objects using serde.

  • stable: Ensures deterministic behaviour when node or edge weights are distinguishable, but compare equal.

To enable features feature1, feature2 add the following to your Cargo.toml:

[dependencies]
nauty-pet = { version = "0.8", features = ["feature1", "feature2"] }

License: Apache-2.0

Commit count: 111

cargo fmt