#图算法 # #算法

nightly cinnabar

Rust图算法和数据结构库

2个不稳定版本

0.2.0 2021年11月3日
0.1.0 2021年10月28日

#2447数据结构

自定义许可

34KB
673

辰砂

辰砂是一个纯Rust库,包含图算法和数据结构。它旨在快速且易于使用。其定义特性是将众多与图相关的功能分解为几个简单的特性。无需从头开始为特定情况重新发明算法。实现几个特性后,您就能利用图和网络理论的力量。

快速开始

将辰砂添加到项目的依赖项部分。

[dependencies]
cinnabar = "*"

为了简化开发,您可以使用库提供的预制图之一。

use cinnabar::prelude::*;
use cinnabar::graphs::Grid;
use cinnabar::graphs::grid::Coords;
use std::collections::HashMap;

// Associated each vertexl in a grid with Manhattan distance to it.
let mut weights = HashMap::new();
let grid = Grid::with_inspector(2, 3, |id: Counter, row, col| {
    weights.insert(id, row + col);
});

// Traverse vertices by grid rows
for id in grid.traverse_by_rows() {
    let Coords(row, col) = grid.coords_of(id).unwrap();
    let weight = weights.get(&id).unwrap();
    println!("The weight of a vertex at {}, {} is {}", row, col, weight);
}

特性

以下是库提供的特性简要列表。此列表并不完整,请参阅crate文档以获取详细信息。

预制图

  • 网格
  • 基于邻接表的图
  • 基于关联矩阵的图

遍历

  • DFS
  • BFS
  • 基于DFS
  • 基于BFS
  • Dijkstra
  • A*算法

支持的Rust版本

辰砂需要Rust的两种特性,目前这些特性仅存在于nightly构建中

这两个提议进展迅速,即将稳定。可以在不使用它们的情况下实现库,但目前更专注于功能而不是实现。如果社区有足够的兴趣让这个库在稳定Rust中工作,并且上述特性尚未在稳定Rust中,则可能会发生变化。

许可

本项目采用MIT许可

依赖项

~425KB