#graph-algorithms #graph #csr #algorithm #parallel #performance #graph-node

graph_csr

一个提供CSR格式图操作实用函数的crate,用作构建强大图算法的基准

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次下载

MIT 许可证

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