⑤ 离散数学(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 实现一个简单的任务调度系统:
- 定义任务依赖关系(有向无环图)
- 拓扑排序确定执行顺序
- 支持并行执行(同一层级的任务可以并发)
- 检测循环依赖并报错
- 加分项: 用模块④学的帕累托思想,加入资源约束(每台机器 CPU 有限),实现简单的负载感知调度
直接对应你工作中 CI/CD 流水线、微服务启动顺序、数据 ETL 管道的调度逻辑。
不需要看
- ❌ 组合数学竞赛题
- ❌ 纯证明题海
- ❌ 密码学相关(需要时再学)
- ❌ MIT 6.042J 全套(太重,13 天看不完)
核心概念检验
- [ ] 画出一个微服务依赖图,指出关键路径
- [ ] 为什么权限继承用树不用图?
- [ ] 用集合运算描述"有 A 权限但没有 B 权限的用户"
- [ ] 为什么拓扑排序要求无环?
工作映射
- CI/CD 流水线 → DAG 拓扑排序
- 微服务调用链 → 有向图 + 环路检测
- 权限系统 → 树 + 集合运算
- 工作流引擎 → 状态机 + 图遍历
- 数据血缘 → DAG 依赖追踪