第1章 算法引论11.1 算法与程序1
1.2 表达算法的抽象机制1
1.3 描述算法3
1.4 算法复杂性分析13
小结16
习题17
第2章 递归与分治策略19
2.1 递归的概念19
2.2 分治法的基本思想26
2.3 二分搜索技术27
2.4 大整数的乘法28
2.5 Strassen矩阵乘法30
2.6 棋盘覆盖32
2.7 合并排序34
2.8 快速排序37
2.9 线性时间选择39
2.10 最接近点对问题43
2.11 循环赛日程表53
小结54
习题54
第3章 动态规划61
3.1 矩阵连乘问题62
目 录算法设计与分析(第2版)3.2 动态规划算法的基本要素67
3.3 最长公共子序列71
3.4 凸多边形最优三角剖分75
3.5 多边形游戏79
3.6 图像压缩82
3.7 电路布线85
3.8 流水作业调度88
3.9 0-1背包问题92
3.10 最优二叉搜索树98
小结101
习题102
第4章 贪心算法107
4.1 活动安排问题107
4.2 贪心算法的基本要素110
4.2.1 贪心选择性质111
4.2.2 最优子结构性质111
4.2.3 贪心算法与动态规划算法的差异111
4.3 最优装载114
4.4 哈夫曼编码116
4.4.1 前缀码117
4.4.2 构造哈夫曼编码117
4.4.3 哈夫曼算法的正确性119
4.5 单源最短路径121
4.5.1 算法基本思想121
4.5.2 算法的正确性和计算复杂性123
4.6 最小生成树125
4.6.1 最小生成树性质125
4.6.2 Prim算法126
4.6.3 Kruskal算法128
4.7 多机调度问题130
4.8 贪心算法的理论基础133
4.8.1 拟阵133
4.8.2 带权拟阵的贪心算法134
4.8.3 任务时间表问题137
小结141
习题141
第5章 回溯法146
5.1 回溯法的算法框架146
5.1.1 问题的解空间146
5.1.2 回溯法的基本思想147
5.1.3 递归回溯149
5.1.4 迭代回溯150
5.1.5 子集树与排列树151
5.2 装载问题152
5.3 批处理作业调度160
5.4 符号三角形问题162
5.5 n后问题165
5.6 0\|1背包问题168
5.7 最大团问题171
5.8 图的m着色问题174
5.9 旅行售货员问题177
5.10 圆排列问题179
5.11 电路板排列问题181
5.12 连续邮资问题185
5.13 回溯法的效率分析187
小结190
习题191
第6章 分支限界法195
6.1 分支限界法的基本思想195
6.2 单源最短路径问题198
6.3 装载问题202
6.4 布线问题211
6.5 0\|1背包问题216
6.6 最大团问题222
6.7 旅行售货员问题225
6.8 电路板排列问题229
6.9 批处理作业调度232
小结237
习题238
第7章 概率算法240
7.1 随机数241
7.2 数值概率算法244
7.2.1 用随机投点法计算π值244
7.2.2 计算定积分245
7.2.3 解非线性方程组247
7.3 舍伍德算法250
7.3.1 线性时间选择算法250
7.3.2 跳跃表252
7.4 拉斯维加斯算法259
7.4.1 n后问题260
7.4.2 整数因子分解264
7.5 蒙特卡罗算法266
7.5.1 蒙特卡罗算法的基本思想266
7.5.2 主元素问题268
7.5.3 素数测试270
小结273
习题273
第8章 NP完全性理论278
8.1 计算模型279
8.1.1 随机存取机RAM279
8.1.2 随机存取存储程序机RASP287
8.1.3 RAM模型的变形与简化291
8.1.4 图灵机295
8.1.5 图灵机模型与RAM模型的关系297
8.1.6 问题变换与计算复杂性归约299
8.2 P类与NP类问题301
8.2.1 非确定性图灵机301
8.2.2 P类与NP类语言302
8.2.3 多项式时间验证304
8.3 NP完全问题305
8.3.1 多项式时间变换305
8.3.2 Cook定理307
8.4 一些典型的NP完全问题310
8.4.1 合取范式的可满足性问题311
8.4.2 3元合取范式的可满足性问题312
8.4.3 团问题313
8.4.4 顶点覆盖问题314
8.4.5 子集和问题315
8.4.6 哈密顿回路问题317
8.4.7 旅行售货员问题322
小结323
习题323
第9章 近似算法326
9.1 近似算法的性能327
9.2 顶点覆盖问题的近似算法328
9.3 旅行售货员问题近似算法329
9.3.1 具有三角不等式性质的旅行售货员问题330
9.3.2 一般的旅行售货员问题331
9.4 集合覆盖问题的近似算法333
9.5 子集和问题的近似算法336
9.5.1 子集和问题的指数时间算法336
9.5.2 子集和问题的完全多项式时间近似格式337
小结340
习题340
第10章 算法优化策略345
10.1 算法设计策略的比较与选择345
10.1.1 最大子段和问题的简单算法345
10.1.2 最大子段和问题的分治算法346
10.1.3 最大子段和问题的动态规划算法348
10.1.4 最大子段和问题与动态规划算法的推广349
10.2 动态规划加速原理352
10.2.1 货物储运问题352
10.2.2 算法及其优化353
10.3 问题的算法特征357
10.3.1 贪心策略357
10.3.2 对贪心策略的改进357
10.3.3 算法三部曲359
10.3.4 算法实现360
10.3.5 算法复杂性366
10.4 优化数据结构366
10.4.1 带权区间最短路问题366
10.4.2 算法设计思想367
10.4.3 算法实现方案369
10.4.4 并查集373
10.4.5 可并优先队列376
10.5 优化搜索策略380
小结388
习题388
第11章 在线算法设计391
11.1 在线算法设计的基本概念391
11.2 页调度问题393
11.3 势函数分析395
11.4 k服务问题397
11.4.1 竞争比的下界397
11.4.2 平衡算法399
11.4.3 对称移动算法399
11.5 Steiner树问题403
11.6 在线任务调度405
11.7 负载平衡406
小结407
习题407
词汇索引409
参考文献415