ALGORITHMFIELD NOTES2026-10-25

把复杂的问题,写成清晰的路径

这是我的算法学习手稿:按「问题—直觉—推导—实现—验证」的顺序整理每个算法,也保留那些曾经走不通的路径。

「记录问题拆解、推导草稿与代码实现,也保留那些曾经走不通的路径。」

最近更新 2026-10-25 演算手稿:把算法写成可以复查的推导

最短路示意:Dijkstra 在带权图上的结果六个节点 s、a、b、c、d、t;边权 s→a=7、s→b=3、a→c=2、b→c=9、b→d=4、c→t=6、d→t=6。 最短路径 s→b→d→t 用信号蓝加粗标出,总距离 13;每个节点下方标注 Dijkstra 求得的最终距离。7329466sd=0ad=7bd=3cd=9dd=7td=13
图 1Dijkstra 的结果:最短路 s→b→d→t,总距离 3+4+6 = 13;节点下方为确定的最终距离 d。
递归树:T(n) = 2T(n/2) + O(n)递归树草稿:根是 T(n),两个孩子 T(n/2),四个孙子 T(n/4)。 每层合并代价加起来都是 O(n),树高 log₂ n,总计 O(n log n)。每层 O(n)每层 O(n)T(n)T(n/2)T(n/2)T(n/4)T(n/4)T(n/4)T(n/4)⋯ 深度 log₂ nT(n)

T(n) = 2T(n/2) + O(n) = O(n log n)—— 每层 O(n),共 log₂n 层

最近整理

RECENT NOTES · 6 篇

查看全部 →
  1. ···演算手稿:把算法写成可以复查的推导2 分钟2026-10-25
  2. 047二分查找:边界究竟应该停在哪里?02·查找与排序入门已整理

    二分查找的关键在于始终维护同一个区间定义:闭区间 [left, right] 非空才循环,收缩时把 mid 也丢掉。

    7 分钟2026-10-25
  3. 046用不变量理解动态规划04·动态规划中等复习中

    状态定义是动态规划的不变量:dp[i] 的含义一旦写定,转移方程和初始化都必须按它逐字兑现。

    4 分钟2026-10-23
  4. 045Dijkstra 为什么要求非负权边03·图论进阶已整理

    Dijkstra 每弹出一个节点就宣称其距离最终确定,这个承诺只在所有边权非负时守得住。

    5 分钟2026-10-17
  5. 044并查集:把等价关系收进森林01·数据结构入门已整理

    并查集的 find 不承诺具体路径,只承诺「同集同根」——把这个当不变量,合并方向写错也能立刻看出来。

    4 分钟2026-10-14

THIS WEEK · 本周学习主题

图论基础

从图的表示、遍历和连通性出发,建立稳定的图结构直觉。

在地图中查看 →

REVIEWING · 正在复习

动态规划的不变量视角

重写状态定义,确认每一步转移都保住同一组含义。

打开手记 →

MAP · 知识地图

一张可以持续生长的算法地图

从基础结构出发,沿着问题之间的关系继续向前。

进入地图 →

CORRECTED · 最近纠正

曾被误导:「Dijkstra 不能处理负权边只是实现上的限制」

不是实现问题:一旦存在负权边,「已确定距离」的含义会被破坏,贪心选择的前提不再成立。

复盘手记 →