Skip to content

Commit

Permalink
Allow finding hamiltonian circuits
Browse files Browse the repository at this point in the history
  • Loading branch information
andybalaam committed Jun 6, 2022
1 parent 3e1a0c4 commit 98e9ee1
Show file tree
Hide file tree
Showing 5 changed files with 2,728 additions and 4 deletions.
31 changes: 31 additions & 0 deletions benches/hamiltonian.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#![feature(test)]

extern crate petgraph;
extern crate test;

use petgraph::prelude::*;
use std::cmp::{max, min};
use test::Bencher;

use petgraph::algo::hamiltonian_circuits_directed;

#[bench]
fn hamiltonian_circuits_directed_bench(bench: &mut Bencher) {
static NODE_COUNT: usize = 10;
let mut g = Graph::new();
let nodes: Vec<NodeIndex<_>> = (0..NODE_COUNT).into_iter().map(|i| g.add_node(i)).collect();
for i in 0..NODE_COUNT {
let n1 = nodes[i];
let neighbour_count = i % 8 + 3;
let j_from = max(0, i as i32 - neighbour_count as i32 / 2) as usize;
let j_to = min(NODE_COUNT, j_from + neighbour_count);
for j in j_from..j_to {
let n2 = nodes[j];
g.add_edge(n1, n2, ());
}
}

bench.iter(|| {
let _circuit = hamiltonian_circuits_directed(&g).next();
});
}

0 comments on commit 98e9ee1

Please sign in to comment.