Skip to content

基础教程概述

欢迎来到 mbtgraph 基础教程!本部分将帮助你深入理解图算法库的核心概念和使用方法。

本教程分为三个主要模块:

学习图的基本组成元素:

根据你的应用场景选择最合适的存储结构:

掌握图的创建和管理技巧:

如果你是第一次接触图算法或 MoonBit 语言:

  1. 先阅读 核心概念速查 获得全局概览
  2. 深入学习 节点与边的表示
  3. 重点理解 Trait 系统 - 这是 mbtgraph 的核心设计
  4. 根据 存储选型指南 选择合适的存储结构
  5. 动手实践 第一个图程序 巩固所学

如果你已经熟悉图算法或其他语言的图库:

  1. 快速浏览 Trait 分层体系 了解设计差异
  2. 查看 存储对比表 了解性能特性
  3. 直接进入 算法教程 学习具体实现
  4. 参考 API 文档 查阅详细接口说明

mbtgraph 的设计遵循以下原则:

通过 Trait 机制实现算法与存储的解耦:

// 同一个 BFS 函数可用于所有实现了 GraphReadable 的存储
pub fn[G : @core.GraphReadable] bfs(graph : G, start : NodeId) -> BfsResult { ... }

优势

  • 算法代码只需编写一次
  • 用户可自由选择存储结构
  • 新增存储无需修改算法代码

从简单到复杂的 Trait 层级:

GraphReadable (基础)
├── GraphWritable: GraphReadable (可写)
├── GraphDirected: GraphReadable (有向)
├── GraphBatchReadable: GraphReadable (批量)
└── GraphFull: GraphWritable + GraphDirected (完全)

优势

  • 按需选择,避免过度设计
  • 接口清晰,易于理解和测试
  • 支持不同性能需求的场景

所有写操作就地修改图,不创建新实例:

let g = @storage.new_directed()
let n0 = @core.GraphWritable::add_node(g, 0.0) // g 就地修改,返回 NodeId

优势

  • 性能优秀,无不必要的拷贝
  • 接口简单直观
  • 适合构建大型图
特性mbtgraphNetworkX (Python)Boost Graph (C++)
语言MoonBitPythonC++
函数式语义就地修改,高性能可变对象可变对象
存储抽象Trait 泛型统一接口模板参数化
后端支持native/wasm/js仅 Python仅 C++
学习曲线中等

完成基础教程后,你可以:


💡

提示

在学习过程中遇到问题?可以查看 编码规范 或在 GitHub 提交 Issue。