第1章 算法分析 1
1.1 为什么要做算法分析 1
1.2 算法理论 2
1.3 算法分析概述 6
1.4 平均情况分析 7
1.5 实例:快速排序算法的分析 9
1.6 渐近近似 14
1.7 分布 15
1.8 随机算法 17
参考资料 19
第2章 递归关系 21
2.1 基本性质 22
2.2 一阶递归 24
2.3 一阶非线性递归 27
2.4 高阶递归 29
2.5 求解递归的方法 32
2.6 二分分治递归和二进制数 37
2.7 一般的分治递归 44
参考资料 48
第3章 母函数 50
3.1 普通型母函数 50
3.2 指数型母函数 54
3.3 利用母函数求解递归 56
3.4 母函数的展开 62
3.5 利用母函数进行变换 64
3.6 关于母函数的函数方程 66
3.7 利用OGF求解三项中值
Quicksort递归 68
3.8 利用母函数计数 70
3.9 概率母函数 73
3.10 双变量母函数 75
3.11 特殊函数 79
参考资料 84
第4章 渐近逼近 86
4.1 渐近逼近的概念 87
4.2 渐近展开式 91
4.3 处理渐近展开式 96
4.4 有限和的渐近逼近 101
4.5 欧拉-麦克劳林求和 103
4.6 二元渐近 108
4.7 拉普拉斯方法 117
4.8 算法分析中的“正态”举例 120
4.9 算法分析中的“泊松”举例 122
参考资料 125
第5章 分析组合 126
5.1 正式的基础 126
5.2 无标记类的符号方法 127
5.3 有标记类的符号方法 132
5.4 参数的符号方法 139
5.5 母函数系数逼近 142
参考资料 147
第6章 树 148
6.1 二叉树 148
6.2 森林和树 150
6.3 树和二叉树的组合等价 152
6.4 树的性质 157
6.5 树算法的例子 159
6.6 二叉搜索树 162
6.7 随机Catalan树 165
6.8 二叉搜索树中的路径长度 169
6.9 随机树的附加参数 172
6.10 高度 174
6.11 树属性在平均情况下的结果
总结 179
6.12 拉格朗日反演 180
6.13 无序树 182
6.14 标记树 189
6.15 其他类型的树 192
参考资料 197
第7章 排列 199
7.1 排列的基本性质 200
7.2 排列算法 204
7.3 排列的表示法 206
7.4 计数问题 210
7.5 通过CGF分析排列的性质 214
7.6 逆序和插入排序 221
7.7 从左到右最小值和选择排序 226
7.8 环与原地排列 231
7.9 极值参数 233
参考资料 237
第8章 字符串与字典树 238
8.1 字符串搜索 239
8.2 位串的组合性质 241
8.3 正则表达式 248
8.4 有穷状态自动机和KMP
算法 251
8.5 上下文无关的语法 254
8.6 字典树 258
8.7 字典树算法 261
8.8 字典树的组合性质 265
8.9 更大的字符表 269
参考资料 271
第9章 单词与映射 273
9.1 使用分离链接的散列 273
9.2 球与瓮的模型和单词的性质 275
9.3 生日悖论与优惠券收集者
问题 280
9.4 占据限制与极值参数 286
9.5 占据分布 290
9.6 开放寻址散列法 295
9.7 映射 301
9.8 整数因子分解与映射 309
参考资料 312