Lec 7 递归
1. 递推关系
Definition. 递推关系(recurrence)是一个数列的隐式表示:前几项显式给出,后续项定义为前项的函数。
目标: 与求和一样,我们希望找到第
常见例子:
| 递推关系 | 闭合公式 |
|---|---|
2. 汉诺塔 (Towers of Hanoi)
2.1 问题描述
- 每次只能移动一个圆盘;
- 大圆盘不能放在小圆盘上。
2.2 递归算法
归纳构造:已知可以移动
H(n, A, B): // 将盘 1..n 从柱 A 移到柱 B,C 为第三根柱
if n == 1: 直接移动盘 1 从 A 到 B
else:
H(n-1, A, C) // 将上面 n-1 个盘移到中间柱
移动盘 n 从 A 到 B
H(n-1, C, B) // 将 n-1 个盘从中间柱移到目标柱2.3 递推与闭合公式
设
Guess and Check: 猜测
- Base case:
。✓ - Inductive step:
。✓
实际意义: 64 个圆盘需
3. 选择排序 (Selection Sort)
算法: 每轮扫描找最大元素(
递推关系:
展开得:
4. 归并排序 (Merge Sort)
核心思路: 已排好的两个有序列表,可以用至多
算法(
MergeSort(X):
if |X| == 1: return X
L, R = 前半段, 后半段
L' = MergeSort(L)
R' = MergeSort(R)
return Merge(L', R')正确性: 就是归纳法——
比较次数递推:
4.1 展开法 (Plug and Chug)
反复将递推代入自身,寻找规律(
对比:
| Merge Sort | Selection Sort | |
|---|---|---|
| 8 | 17 | 28 |
| 16 | 49 | 120 |
| 32 | 129 | 496 |
5. 主定理 (Master Theorem)
5.1 适用形式
分治算法的递推通常形如:
其中
Theorem (Master Theorem). 令
, 为常数, ,则: Case 1: 若
(某 ),则 。 Case 2: 若
,则 。 Case 3: 若
(某 ),且 (某 ),则 。 (将
换成 结论同样成立。)
5.2 直觉:递归调用树
递归树共
- Case 1(
增长慢): 叶节点数量主导,运行时间 。 - Case 3(
增长快): 根节点代价主导,运行时间 。 - Case 2(二者平衡): 每层贡献相同,运行时间
。
5.3 应用示例
| 算法 | 递推 | Case | 结论 | |||
|---|---|---|---|---|---|---|
| Merge Sort | 2 | 2 | 2 | |||
| Binary Search | 1 | 2 | 2 | |||
| Karatsuba | 3 | 2 | 1 | |||
| Hanoi | — | — | — | 不适用 |
注意: 主定理有盲区。例如
: 比 大,但仅大一个 因子(不是多项式因子),既不属于 Case 2 也不属于 Case 3,需要回归递归树分析或归纳法。
6. 关键术语速查
| 英文 | 中文 |
|---|---|
| Recurrence | 递推关系 |
| Closed form | 闭合公式 |
| Guess and Check | 猜测验证法 |
| Plug and Chug | 展开代入法 |
| Towers of Hanoi | 汉诺塔 |
| Selection Sort | 选择排序 |
| Merge Sort | 归并排序 |
| Merge | 合并 |
| Master Theorem | 主定理 |
| Divide and conquer | 分治法 |
| Recursion tree | 递归调用树 |
| Karatsuba | Karatsuba 整数乘法算法 |