8 种存储结构
邻接表、矩阵、边集、CSR/CSC 等 8 种实现,覆盖所有使用场景
8 种存储结构
邻接表、矩阵、边集、CSR/CSC 等 8 种实现,覆盖所有使用场景
5 层 Trait 分层
GraphReadable → Writable → Directed → Full → BatchReadable,渐进式复杂度
~95 个算法
遍历、最短路径、MST、连通性、网络流、匹配、着色、社区检测等全覆盖
纯函数语义
深拷贝保证无副作用,便于推理和测试,符合函数式编程最佳实践
三后端支持
原生支持 native / wasm / js 三种编译目标,跨平台运行
双轨测试体系
Blackbox 功能测试 + Whitebox 内部逻辑验证,质量有保障
mbtgraph 采用三层架构设计,通过 Trait 机制实现算法与存储的完全解耦:
┌─────────────────────────────────────────────┐│ 算法层 (algo/) ││ 泛型函数 + 独立类型双轨制 │├─────────────────────────────────────────────┤│ 存储层 (storage/) ││ 8 种实现 × Trait 接口 │├─────────────────────────────────────────────┤│ 核心层 (core/) ││ 类型定义 + 5 层 Trait + 错误处理 │└─────────────────────────────────────────────┘通过 Trait 泛型机制,同一算法可适配不同存储结构:
// 模式 A: Trait 兼容型(大多数算法)pub fn[G : @core.GraphReadable] bfs(graph : G, start : NodeId) -> BfsResult { ... }
// 可用于任何实现了 GraphReadable 的存储:AdjList、Matrix、CSR...let result = bfs(my_adj_list_graph, start_node)从简单只读到完全可写,用户按需选择:
| Trait 层级 | 方法数 | 适用场景 |
|---|---|---|
GraphReadable | 12 | 所有存储,只读操作 |
GraphWritable | +5 | 动态存储,增删节点 |
GraphDirected | +6 | 有向图,入边查询 |
GraphFull | =W+D | 便捷别名 |
GraphBatchReadable | +2 | CSR/CSC 批量操作 |
所有操作返回新实例,保证无副作用:
// 链式赋值,每次返回新的图实例let g = @storage.new_directed()let g = @core.GraphWritable::add_node(g, "A")let g = @core.GraphWritable::add_edge(g, @core.NodeId(0), @core.NodeId(1), 1.0)
// 算法内部自动深拷贝,不会修改原图let result = dijkstra(g, source) // g 保持不变新手推荐路线
如果你是第一次接触图算法或 MoonBit 语言,建议按以下顺序学习:
| 维度 | 数据 | 说明 |
|---|---|---|
| Trait 分层 | 5 层 | GraphReadable → Writable → Directed → Full → BatchReadable |
| 存储实现 | 8 种 | 邻接表/矩阵/边集/CSR/CSC(各有有向/无向变体) |
| 算法覆盖 | ~95 个 | 遍历/最短路径/MST/连通性/流网络/匹配/着色/社区检测等 |
| 测试体系 | 双轨制 | Blackbox(功能测试)+ Whitebox(内部逻辑验证) |
| 后端支持 | 3 种 | native / wasm / js |
准备好开始了吗?
立即开始 →