10个版本 (3个稳定)
1.0.2 | 2022年8月31日 |
---|---|
0.3.1 | 2022年8月31日 |
0.2.2 | 2022年8月31日 |
0.1.1 | 2022年8月29日 |
#1633 in 算法
每月27次下载
36KB
827 行
graph_csr
这个crate的目的是作为在Rust中构建强大图算法的基准。它通过使用easy_mmap crate进行内存映射,因此可以轻松操作超过可用系统内存的图。
用法
目前,graph_csr
支持直接从二进制和txt文件读取。然而,由于CSR图的性质,这些文件需要按源排序。让我们用一个简单的示例文件graph.txt
来说明。
0 1
0 2
1 5
1 2
4 7
这个图包含8个节点(0 - 7)和5条边。
use graph_csr;
fn main() {
let filename = "./graph.txt";
let output_folder = "./output";
let file = std::fs::File::open(filename).unwrap();
let graph = graph_csr::Graph::<u32>::from_txt_adjacency_list(file, output_folder).unwrap();
for (node, edges) in graph.iter().enumerate() {
println!("{:?} -> {:?}", node, edges);
}
}
我们可以看到以下输出
0 -> [1, 2]
1 -> [5, 2]
2 -> []
3 -> []
4 -> [7]
5 -> []
6 -> []
7 -> []
现在您可以检查output
文件夹
> ls output
edge.csr vertex.csr
图现在已保存供以后使用,无需再次解析(因为这可能耗时)。
有关计算算法的示例,请查看示例文件夹。您可以使用默认的txt解析器解析您的已排序图。如果您正在寻找示例图,请查看LiveJournal数据集(该数据集已排序,但您需要从中删除任何注释行)。
依赖项
~2MB
~38K SLoC