1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
pub mod brute_force;
pub mod dp;
#[cfg(test)]
mod tests {
use super::*;
use crate::algo::graph::WeightedAdjacencyMatrix;
#[test]
fn test_tsp() {
let mut dist = vec![vec![100.; 5]; 5];
dist[1][3] = 1.;
dist[3][1] = 1.;
dist[3][0] = 2.;
dist[0][3] = 2.;
dist[0][2] = 3.;
dist[2][0] = 3.;
dist[2][4] = 4.;
dist[4][2] = 4.;
dist[4][1] = 5.;
dist[1][4] = 5.;
let dist: WeightedAdjacencyMatrix = dist.into();
let (best_dist, tour) = dp::TspSolver::solve(&dist, 1);
assert_eq!(best_dist, 15.);
assert_eq!(&tour, &[1, 3, 0, 2, 4]);
let (best_dist, tour) = brute_force::tsp(&dist, 1);
assert_eq!(best_dist, 15.);
assert_eq!(&tour, &[1, 3, 0, 2, 4]);
}
}