数据结构基础

知识库简介

数据结构研究“怎样组织数据,才能让所需操作清楚、正确且成本可控”。本库不是算法面试题集:它围绕 Agent 工程中的消息历史、工具注册、任务队列、去重、优先级和依赖图,建立从 ADT、不变量与复杂度到结构组合的决策能力。

课程使用 Python 3 标准库演示。Python 语法是前置;本库关注为何选择 list、deque、dict、set、bisect、heapq 和邻接表,以及容量、可变性、确定性和失败边界。

资料与版本

动态 Python 行为于 2026-07-14 按 Python 3.14.6 官方文档核对;课程代码避免依赖 3.14 独有 API,以兼容 Python 3.11+。本机实际验证版本为 Python 3.11.9,不能据此声称所有解释器实现和版本的时间/内存特征相同。

在总路线中的位置

本库位于 AI Agent Engineer 总路线 的“工程与数学基础”知识域。学习前应具备 Python基础 中零基础先修门与函数/容器的局部能力,不要求先完成整门 Python 课程;随后把结构选择用于 API/JSON 数据、RAG、工作流和 Agent 状态代码。

本库只讲结构选择所需的最小 DFS/BFS、二分和拓扑推进,不扩展排序证明、最短路、动态规划、红黑树/B 树实现或竞赛算法。

学习目标

  • 区分 ADT、具体表示与算法,为状态写前置/后置和不变量。
  • 解释时间/空间复杂度、平均/最坏/摊还,并用实测验证趋势。
  • 根据操作选择线性、哈希、优先级和关系结构。
  • 处理可变性、浅拷贝、迭代器耗尽、顺序与确定性。
  • 使用 bisect、deque、Counter、heapq 和邻接表解决小型工程问题。
  • 将 dict + set + graph + heap 组合为可测试的依赖任务调度器。
  • 识别内存容器与生产持久化、并发、幂等、恢复之间的边界。

前置知识

  • 能在 Windows 11 + PowerShell 7 运行 .py 与 unittest。
  • 会变量、if、for、函数、异常、list/dict/set 和基本类型提示。
  • 若无法闭卷写一个“过滤列表并统计频次”的函数,先回到 Python基础。
  • 本库示例离线运行,无网络、第三方包或密钥。

分类与推荐学习顺序

一、基础模型

  1. 数据结构、抽象类型与不变量:先定义操作、所有权和始终成立的规则。
  2. 复杂度、资源成本与实测:比较增长趋势,并用 timeit / tracemalloc 记录证据。

二、线性结构

  1. 顺序、链式与二分查找:理解 list 的操作取舍、链式结构前提和 bisect 边界。
  2. 可变性、复制与迭代:避免共享状态和生成器耗尽误用。
  3. 栈、队列与双端队列:用 LIFO、FIFO 和有界窗口表达顺序策略。

三、索引与优先

  1. 哈希表、字典、集合与计数:掌握映射、成员、频次、顺序和去重/幂等边界。
  2. 堆与稳定优先队列:只在 ready 集合中选优先项,定义平局与防饥饿。

四、关系结构

  1. 树与层级遍历:用 DFS/BFS 处理层级并限制深度与节点数。
  2. 图、依赖与拓扑顺序:明确边方向、入度、DAG、环与 blocked 节点。

五、工程选择

  1. 结构组合、容量边界与性能诊断:建立真相源、派生索引、上限和测量闭环。

六、项目与自测

  1. 项目:依赖任务调度器:用邻接表、入度和堆生成确定性顺序。
  2. 全库自测与掌握检查:闭卷题、现场任务和迁移设计。

动手实践与项目入口

配套代码位于:

数据结构基础/examples/
├── task_scheduler.py
└── test_task_scheduler.py

从 vault 根目录运行:

python -B '.\Knowledge\AI Agent Engineer\docs\数据结构基础\examples\task_scheduler.py'
python -B -m unittest discover `
  -s '.\Knowledge\AI Agent Engineer\docs\数据结构基础\examples' `
  -p 'test_*.py' `
  -v

当前实现有 24 项离线测试,覆盖合法图、平局、脏输入、一次性 iterator 拒绝、环、输入不变与确定性。先自行实现,再对照成品;只运行测试不等于能解释结构选择。

掌握标准

  • 能从主要操作、规模和顺序要求选择结构,而不是只说“字典快”。
  • 能区分最坏、平均和摊还复杂度,并说明空间成本。
  • 能画出别名/浅拷贝引用图,正确处理 iterator 一次性消费。
  • 能解释 insort 为何总体 O(n)、heap 为何不是完整排序。
  • 能区分 dict 插入顺序、排序与 set 无稳定顺序承诺。
  • 能写 DFS/BFS 与 Kahn 拓扑推进,并准确解释环和 blocked。
  • 能为多个结构写单一真相源、派生索引和不变量。
  • 调度器 24 项测试通过,且能手算复杂度与平局规则。
  • 不把内存队列、set 去重或调度顺序误称为生产可靠语义。

与其他知识库的关系

知识库本库交界
Python基础提供语法、函数、类型、异常和测试;本库负责操作成本与结构选择。
JSONJSON 解析后常映射到 list/dict;编码、Schema 和兼容性不在本库。
向量基础、向量数据库向量和专门索引另有数学、召回、持久化与分片语义。
RAG通用容器可承载块和候选,但切分、检索、引用与评测由 RAG 路线负责。
工作流自动化、Agent 核心本库提供队列/图/堆直觉;执行、授权、停止、重试与恢复在后续库。
运行监控本库解释窗口和计数结构,监控系统负责指标、告警和保留策略。

验证记录

  • 目录重组前无公开复刻材料需要冻结;原有有价值内容已按概念拆分保留。
  • Python 3.11.9 下示例与 24 项 unittest 已实际运行通过;另生成 500 组随机 DAG,验证每条依赖均先于后继,且同一任务集合的输入排列不改变输出。
  • 12 篇课程中的 39 个 Python 代码块已完成 AST 语法解析;50 个完整路径 wikilink 均指向现有文件。
  • 未在 Python 3.14、PyPy、生产任务系统或真实并发环境运行;复杂度表是模型,不是跨实现的固定性能承诺。

主要参考资料

获取日期:2026-07-14。