#graph #graph-algorithms #graph-node

rs-graphs

Rust中的图算法,图算法库/图数据库

2个版本

0.1.2 2023年11月2日
0.1.1 2023年10月30日

#398 in 科学

MIT许可证

14KB
259

rs-graphs

Rust中的图算法

Rust实现图数据库

[dependencies]
rs-graphs = "*"

初始化一个链表

use rs_graphs::graph::{Node, ArenaList, Graph};

let mut arena_list = ArenaList::new();
let mut graph = Graph::new(&mut arena_list);

基础功能

    • 增加节点 graph.add_node(name: &str, data:T,
    • 增加边 graph.add_node_and_edge(src_name: &str, src_data: T, dst_name: &str, dst_data: T)
    • 获取节点: graph.get_node(idx: usize) -> &Node<T>
    • 根据节点名字获取节点编号 graph.get_idx_by_name(name: &str) -> Option<&usize>
    • 根据节点编号获取节点名字 graph.get_name_by_idx(idx: usize) -> &str
    • 根据各种条件进行查询
    • 删除节点,根据节点编号删除节点 graph.del_node_by_idx(),根据节点名字删除节点 graph.del_node_by_name()
    • 删除边,graph.del_edge_by_idx()graph.del_edge_by_name()
    • 清空所有数据,得到一个空图 graph.clear()
    • 修改节点对应的值:graph.add_node(name: &str, data: T) -> usize 如果不存在,则创建节点。如果存在则修改其值。
  • 持久化。目前只支持 T 为字符串的情况
    • 保存 graph.save(filename)
    • 加载 graph.load(filename)

高级功能

  • 遍历所有下游
  • 寻找最近链路
  • 寻找关键链接

依赖项

~0.7–1.6MB
~36K SLoC