#graph #graph-node #network-analysis #pagerank #computing #networking

pagerank_rs

一个针对性能和灵活性优化的计算 PageRank 的 Rust 库

1 个不稳定版本

0.1.0 2023年12月27日

#1277算法

MIT 许可证

15KB
161

pagerank_rs

Coverage Status

pagerank_rs 是一个用于计算 PageRank 的 Rust 库,旨在处理不同大小的图。它是不同环境中的网络分析的合适选择,例如社交网络或学术引用。该库旨在提供一种有效的方法来确定网络中节点的重要性。

PageRank Example

要深入了解 PageRank 算法,请访问其 维基百科页面

安装

pagerank_rs 添加到您的 Cargo.toml

[dependencies]
pagerank_rs = "0.1.0"

用法

以下是使用 pagerank_rs 的简单示例

use pagerank_rs::Pagerank;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut graph = Pagerank::new(3);
    graph.link(0, 1)?;
    graph.link(1, 2)?;

    let probability_of_following_a_link = 0.85;
    let tolerance = 0.0001;

    graph.rank(probability_of_following_a_link, tolerance, |node_id, rank| {
        println!("Node {} rank is {}", node_id, rank);
    });

    Ok(())
}

此代码将输出图中每个节点的 PageRank。节点 ID 可以是任何 usize 整数。排名值通过闭包返回以避免分配大型结果对象。

有关更复杂示例和用法模式,请参阅仓库中的单元测试。

性能

在包含 10 万个节点的图上对 pagerank_rs 库的性能进行了基准测试。每个节点连接到最多 400 个其他节点,除了少数节点具有显著更多的 inward links,模拟更现实的链接分布。

在配备 32 GB RAM 的 Apple M2 Pro 上的测试中,该库使用典型的 PageRank 参数处理图大约需要 1.9 秒。

性能将因不同的图结构、系统硬件和其他环境因素而异。

贡献

我们欢迎对 pagerank_rs 的贡献!以下是开始的方式

  • 在 GitHub 上叉该项目。
  • 为您的功能或错误修复创建一个新分支。
  • 编写代码并为您的更改添加测试。
  • 确保所有测试都通过。
  • 向主分支提交拉取请求。

请遵循 Rust 编码约定并包含适当的文档。

许可证

pagerank_rs 根据 MIT 许可证 提供。有关更多详细信息,请参阅 LICENSE 文件。

作者

Daniel Cadenas

依赖关系

~1.5MB
~31K SLoC