LWLeon.
LEON / REFERENCE

算法设计与分析

集中回顾核心概念、公式和适用条件。

LEON / LEARNING MAP

先看学习路线

按箭头顺序学习。点击一个阶段进入第一节;完整知识框架列出了每一个主题。

  1. 01

    明确算法并选择辅助结构

    先理解正确性与成本,再根据搜索、排序和更新需要的操作选择存储方式。

    10 个主题 ↗
  2. 02

    遍历与优化网络

    建立连接模型,再区分可达性、最短路线与总成本最低的连通网络。

    5 个主题 ↗
  3. 03

    证明贪心选择

    找出安全的局部决策,并用下界或交换论证证明整个结果。

    3 个主题 ↗
  4. 04

    分解问题并分析不确定性

    追踪递归子问题,分析枢轴与随机选择,并准确衡量输入规模。

    8 个主题 ↗

01 / 说明保证类型

最坏取同规模最难输入;期望对说明的随机性平均;摊还对操作序列平均。解释界之前先明确输入规模与算术成本模型。

02 / 表示的取舍

数组索引 O(1),中间移动 O(n)。已知位置的双向链编辑 O(1),但定位索引 O(n)。搜索与修改成本都要计入。

03 / BST 与 AVL

BST 搜索更新 O(h),区间报告 O(h+k)。AVL 维持孩子高度差至多一,确保 h=O(log n)。k 为输出规模。

04 / 堆优先级

小顶堆父值不大于孩子。最小值 O(1),插入与删最小 O(log n)。堆数组并未全排序。

05 / 哈希表假设

合适均匀哈希下,链地址查找期望 O(1+α),α=n/m。线性探测删除需墓碑或修复簇。布谷鸟插入可能触发昂贵重建。

06 / 图遍历

邻接表 BFS、DFS 为 O(n+m)。BFS 最小化边数。无向 DFS 树边 (u,v) 在 low[v]>disc[u] 时为桥,必须正确处理父边。

07 / 路线与树

Dijkstra 松弛 d[u]+w(u,v),要求非负权。Prim 用 w(u,v) 接新顶点。MST 最小化网络总权,不是源到各顶点距离。

08 / 贪心证明凭据

可分背包用密度与等重量交换,区间分配达到重叠深度,Huffman 合并最小两频。各证明依赖特定可行选择结构。

09 / 递推

T(n)=T(n/2)+Θ(1) 得 Θ(log n);2T(n/2)+Θ(n) 得 Θ(n log n);3T(n/2)+Θ(n) 得 Θ(n^log₂3)。包括拆分与合并成本。

10 / 排序与选择

随机快排排序两侧,期望 O(n log n);Quickselect 只跟一侧,期望 O(n)。倒霉枢轴序列下,两者都可 Θ(n²)。

11 / 随机结构

Fisher–Yates 在固定位置 i 前均匀选 j∈{0,…,i}。跳表晋升概率一半时,操作期望 O(log n),存储期望 O(n)。

12 / 读取输入长度

q 以 k≈log₂q 位编码时,√q≈2^(k/2)。相对数值的多项式可能对位长为指数,这对密码学复杂度很重要。

Leon