#graph #ensemble #random-graph #erdos-renyi #small-world

net_ensembles

埃尔德ős-Rényi 和小世界组合。用于简单采样、马尔可夫链等。

6 个版本 (破坏性更改)

0.5.0 2021年9月30日
0.4.0 2020年5月27日
0.3.0 2020年5月13日
0.2.2 2020年4月28日
0.1.0 2020年4月8日

#554 in 数学

MIT/Apache

270KB
5K SLoC

随机图组合的 Rust 库

Crate Rust unit tests - master Docs

最低 Rust 版本:1.55.0

实现简单采样和蒙特卡洛(或更确切地说是马尔可夫)步骤,可用于创建马尔可夫链。

此库旨在用于各种不同的用例。因此,您可以轻松定义应在每个顶点存储的附加数据。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
net_ensembles = "0.5"
# for feature "serde_support" (enabled by default) also use
serde = { version = "1.0", features = ["derive"] }

如果您不需要 serde 支持,则添加以下内容

[dependencies]
net_ensembles = { version = "0.5", default-features = false  }

发行说明

请参阅 变更日志。请注意,v0.4 版本的 savestates(使用 serde 创建)与旧版本和 vice versa 生成的 savestates 不兼容。破坏性更改可能会或可能不会影响 savestates 的加载,您必须自行测试。

当前实现的图组合

  • 埃尔德ős-Rényi (x2)
  • 小世界

进行中

  • Barabási-Albert
  • 配置模型
  • 空间网络

注意

在 64 位系统上,绘制 usize 消耗的随机性比在 32 位系统上更多,因此绘制的组合等受 usize 大小的影响。

  • 您始终可以通过从它创建一个 .dot 文件来可视化当前图。有不同的选项可供选择,选择最适合您的一个。

实现可测量的量

  • 平均度
  • 连接组件
  • 直径
  • is_connected
  • 叶子数
  • q_core
  • 对称性
  • 二连通组件
  • vertex_load(与 betweeness 紧密相关,通常相等)

迭代器

  • 从索引开始深度优先搜索
  • 从索引开始广度优先搜索
  • 遍历附加数据

对于每个顶点

方法和更多

  • 检查与其他节点相邻
  • 访问附加数据

迭代器

  • 遍历存储在邻接表中的索引

文档

注意

没有任何保证,但既然我是在为自己科学模拟编写这个库,我会尽最大努力避免错误。

您可以在我的主页上了解更多关于我和我的研究。

如果您发现任何错误,或想要请求新功能:请毫不犹豫地在仓库中打开一个新的问题

顶点

  • 顶点的数量必须在创建图时确定,以后无法更改 - 至少现在是这样。
  • 如果有人要求或者我自己需要,我可能会添加添加顶点的方法。

由于实现细节,我优先考虑顶点的快速访问,因此不太可能实现删除顶点的选项。如果这样做,它可能是一个相对昂贵的操作,所以请记住这一点。

crates.io

  • 我可能会将 sampling 模块移入不同的crate中。如果这样做,所有内容都可能会以目前相同的位置重新导出。

许可证

根据您的选择,受以下之一的许可协议约束:

任选其一。

贡献

除非您明确声明,否则您提交给作品的所有贡献(根据Apache-2.0许可证定义)都将按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~1.5MB
~25K SLoC