11个版本 (破坏性)
0.9.0 | 2021年1月25日 |
---|---|
0.8.1 | 2020年10月2日 |
0.7.0 | 2020年9月25日 |
0.6.1 | 2020年7月8日 |
0.1.1 | 2020年3月13日 |
#975 in 算法
每月28次下载
用于 chemcore
93KB
3K SLoC
Gamma
Rust的图库。
Gamma提供了用于处理图的原语和遍历。它基于在一个最小的图API中提出的想法。
使用方法
将此内容添加到您的Cargo.toml
[dependencies]
gamma = 0.9.0
示例
ArrayGraph
是一个参考的Graph
实现。节点、邻居和边迭代顺序是稳定的,并由try_from
方法设置。
use std::convert::TryFrom;
use gamma::graph::{ Graph, DefaultGraph, Error };
fn main() -> Result<(), Error> {
let p3 = DefaultGraph::try_from(vec![
vec![ 1 ],
vec![ 0, 2 ],
vec![ 1 ]
])?;
assert_eq!(p3.is_empty(), false);
assert_eq!(p3.order(), 3);
assert_eq!(p3.size(), 2);
assert_eq!(p3.ids().collect::<Vec<_>>(), [ 0, 1, 2 ]);
assert_eq!(p3.neighbors(1)?.collect::<Vec<_>>(), [ 0, 2 ]);
assert_eq!(p3.has_id(4), false);
assert_eq!(p3.degree(0)?, 1);
assert_eq!(p3.edges().collect::<Vec<_>>(), [
(0, 1),
(1, 2)
]);
assert_eq!(p3.has_edge(1, 2)?, true);
let result = DefaultGraph::try_from(vec![
vec![ 1 ]
]);
assert_eq!(result, Err(Error::UnknownId(1)));
Ok(())
}
特性包括
- 深度优先和广度优先遍历
- 连接组件
- 使用Edmonds的Blossom算法进行最大匹配
版本
Gamma尚不稳定。修补版本不会引入破坏性更改,但次要/主要版本可能会。
许可协议
Gamma在MIT许可协议下分发。有关详细信息,请参阅LICENSE-MIT和COPYRIGHT。