243 个版本 (82 个破坏性)

0.83.0 2024 年 8 月 23 日
0.81.0 2024 年 8 月 17 日
0.75.4 2024 年 7 月 30 日
0.2.3 2024 年 3 月 31 日

#155算法

Download history 2267/week @ 2024-05-03 1478/week @ 2024-05-10 1592/week @ 2024-05-17 1471/week @ 2024-05-24 1876/week @ 2024-05-31 1863/week @ 2024-06-07 1206/week @ 2024-06-14 716/week @ 2024-06-21 1627/week @ 2024-06-28 1258/week @ 2024-07-05 1440/week @ 2024-07-12 1579/week @ 2024-07-19 1131/week @ 2024-07-26 468/week @ 2024-08-02 558/week @ 2024-08-09 678/week @ 2024-08-16

3,171 每月下载

MIT/Apache

780KB
17K SLoC

Graaf   Crates.io 构建状态 API 参考 覆盖率状态

Rust 驱动的有向图。

目录

安装

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

[dependencies]
graaf = "0.83.0"

有向图类型

Graaf 提供有向图的表示。

这些类型积极实现有向图的 操作算法

创建有向图

gen 模块提供有向图生成器。

  • Biclique 生成完全二分图。
  • Circuit 生成电路图。
  • Complete 生成一个完整的有向图。
  • Cycle 生成一个双向电路。
  • Empty 生成一个没有弧的有向图。
  • ErdosRenyi 生成一个随机有向图。
  • Path 生成一个路径有向图。
  • RandomTournament 生成一个随机竞赛。
  • Star 生成一个星形有向图。

每个有向图的表示都可以通过op 模块中的操作来构建。

操作

op 模块提供了有向图操作特质。这些有向图类型实现了这些特质。可以为自定义有向图类型实现这些特质。操作是算法的基础。

算法

模块 algo 提供有向图算法。

Bellman-Ford-Moore

Bellman-Ford-Moore 算法在具有负权重的弧权重有向图中找到最短路径。

广度优先搜索 (BFS)

广度优先搜索按照顶点与源点的距离顺序探索无权有向图中的顶点。

深度优先搜索 (DFS)

深度优先搜索按照从源点出发的深度顺序探索无权有向图中的顶点。

Dijkstra

Dijkstra算法在弧加权有向图中找到最短路径。

Floyd-Warshall

Floyd-Warshall算法在弧加权有向图中找到所有顶点对之间的最短路径。

Tarjan

Tarjan算法在有向图中找到强连通分量。

前驱树

一个 PredecessorTree 是广度优先搜索的结果。

这些函数生成一个前驱树。

距离矩阵

一个 DistanceMatrix 包含了有向图中所有顶点对之间的最短距离。

命名约定

  • s 表示一个源顶点。
  • t 表示一个目标顶点。
  • u 表示一个尾顶点或作用域中的第一个顶点。
  • v 表示一个头顶点或作用域中的第二个顶点。
  • w 表示弧的权重。
  • x 表示一个尾顶点或作用域中的第三个顶点。
  • y 表示一个头顶点或作用域中的第四个顶点。

项目目标

  • 灵活的有向图操作API
  • 一套全面的算法
  • 常见有向图的生成器
  • 具有竞争力的性能
  • 完整的文档
  • 广泛的属性测试
  • 完整的单元测试覆盖

变更日志

查看CHANGELOG.md以获取更改列表。

许可

根据您的选择,许可协议为Apache License, Version 2.0MIT license

联系

随时提出问题或建议。

无运行时依赖