1 个不稳定版本
0.1.1 | 2023年10月25日 |
---|---|
0.1.0 |
|
在 算法 中排名第 2419
305KB
6.5K SLoC
concorde-rs
一个 Rust 到 Concorde TSP 求解器的绑定,允许直接调用求解器而不是通过 TSP.lib 文件传递问题。目前,这个包只支持调用 Concorde TSP 求解器的两个例程。
- Held-Karp:基于动态规划的精确求解器
- Lin-Kernighan:启发式求解器
使用方法
use concorde_rs::{solver, Distance, LowerDistanceMatrix};
fn main() {
struct Node(i32, i32);
impl Distance for Node {
fn calc_shortest_dist(&self, other: &Self) -> u32 {
self.0.abs_diff(other.0) + self.1.abs_diff(other.1)
}
}
let nodes: Vec<Node> = vec![Node(0, 0), Node(0, 3), Node(5, 6), Node(9, 1)];
let dist_mat = LowerDistanceMatrix::from(nodes.as_ref());
let solution = solver::tsp_hk(&dist_mat).unwrap();
assert_eq!(solution.length, 30);
}
许可证
Rust 绑定代码遵循 MIT 许可证。对于 Concorde TSP 求解器代码,请查阅 Concorde TSP 求解器。