⑤ 离散数学(13 天)

后端系统的抽象工具。图、树、状态机——你每天都在用,但可能没从数学角度理解过。


资源

主资源:

  • LeetCode 图论中等题(少量练习,题解比教材更贴合工程师理解)
  • Rosen《Discrete Mathematics》对应章节例题(不从头看,按需查)

辅助资源:

  • 3B1B 神经网络 Ep3-Ep4(反向传播,和模块②的手推笔记对照收尾)

重点内容

Day 1-4:图论

  • [ ] 图的表示(邻接矩阵 vs 邻接表)— 回顾,你已经会了
  • [ ] BFS/DFS 回顾(重点是抽象建模,不是写代码)
  • [ ] 拓扑排序(DAG 的核心应用)
  • [ ] 最短路径(Dijkstra 直觉)
  • [ ] 做 3-5 道 LeetCode 图论简单/中等题

Day 5-7:逻辑与集合

  • [ ] 命题逻辑、真值表
  • [ ] 集合运算(交、并、补、笛卡尔积)
  • [ ] 关系与等价类

Day 8-9:递归与归纳

  • [ ] 数学归纳法
  • [ ] 递归与分治(用数学方式证明递归正确性)

Day 10-13:输出项目

📦 项目:DAG 任务调度器

用 Python 实现一个简单的任务调度系统:

  1. 定义任务依赖关系(有向无环图)
  2. 拓扑排序确定执行顺序
  3. 支持并行执行(同一层级的任务可以并发)
  4. 检测循环依赖并报错
  5. 加分项: 用模块④学的帕累托思想,加入资源约束(每台机器 CPU 有限),实现简单的负载感知调度

直接对应你工作中 CI/CD 流水线、微服务启动顺序、数据 ETL 管道的调度逻辑。


不需要看

  • ❌ 组合数学竞赛题
  • ❌ 纯证明题海
  • ❌ 密码学相关(需要时再学)
  • ❌ MIT 6.042J 全套(太重,13 天看不完)

核心概念检验

  • [ ] 画出一个微服务依赖图,指出关键路径
  • [ ] 为什么权限继承用树不用图?
  • [ ] 用集合运算描述"有 A 权限但没有 B 权限的用户"
  • [ ] 为什么拓扑排序要求无环?

工作映射

  • CI/CD 流水线 → DAG 拓扑排序
  • 微服务调用链 → 有向图 + 环路检测
  • 权限系统 → 树 + 集合运算
  • 工作流引擎 → 状态机 + 图遍历
  • 数据血缘 → DAG 依赖追踪

学习记录