1个不稳定版本
0.1.3 | 2023年7月7日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
在算法中排名#1134
每月下载量26次
22KB
422行代码(不包括注释)
Robinson
这个Rust crate是MIKHAEL CARMONA、VICTOR CHEPOI、GUYSLAIN NAVES和PASCAL PREA在《ROBINSON SPACES中的MODULES》中提出的算法的直接实现。
给定一个差异空间(~我称之为距离矩阵),此算法可以识别此差异空间是否为Robinson。
作者
- @EthanCoss
- 特别感谢@FrancoisBrucker和Pascal Préa,他们帮助我并提供了必要的资源。
安装/依赖
您可以使用以下方式将robinson_mmodules添加到您的依赖中:
cargo add robinson_mmodules
在您的项目目录中。
或者在您的cargo.toml文件中直接将Robinson添加到依赖中
[dependencies]
robinson_mmodules = "0.X.0"
使用/示例
extern crate robinson_mmodules;
use robinson_mmodules::Robin;
fn main() {
let my_matrice = vec![
vec![0, 1, 2, 4, 3],
vec![0, 0, 1, 3, 1],
vec![0, 0, 0, 2, 1],
vec![0, 0, 0, 0, 2],
vec![0, 0, 0, 0, 0],
];
let mut robin = Robin::new(my_matrice);
println!("{}", robin.resolve_robin()); //true if your matrice admit a compatible order (equivalent to if your dissimilarity space is Robinson), false otherwise. In this case, it's true.
println!("{:?}", robin.solved_permut.clone().unwrap()); //[1, 2, 3, 5, 4] which is a valid permutation
//That means that if we apply this permutation we will get a matrice that respect the Robinson property
let robinson_distance_matrice = robin.dist.permut_matrice(&robin.solved_permut.unwrap());
println!("{}", robinson_distance_matrice.is_robinson()); //True since this DistanceMatrice respect the Robinson property here
robinson_distance_matrice.display_mat(); //As you can visualize here
}
您还可以在GitHub仓库的main.rs和test.rs文件中找到更深入的示例。如果您想亲自尝试,您需要将rand crate添加到您的依赖中 rand = "0.8.5"
文档
许可证
依赖
~120KB