第1章 算法概述 1
1.1 算法与程序 1
1.2 算法复杂性分析 1
习题1 5
第2章 递归与分治策略 9
2.1 递归的概念 9
2.2 分治法的基本思想 15
2.3 二分搜索技术 16
2.4 大整数的乘法 16
2.5 Strassen矩阵乘法 17
2.6 棋盘覆盖 19
2.7 合并排序 21
2.8 快速排序 23
2.9 线性时间选择 25
2.10 最接近点对问题 28
2.11 循环赛日程表 34
习题2 35
第3章 动态规划 48
3.1 矩阵连乘问题 49
3.2 动态规划算法的基本要素 53
3.3 最长公共子序列 56
3.4 最大子段和 59
3.5 凸多边形最优三角剖分 64
3.6 多边形游戏 67
3.7 图像压缩 70
3.8 电路布线 72
3.9 流水作业调度 74
3.10 0-1背包问题 77
3.11 最优二叉搜索树 81
3.12 动态规划加速原理 84
习题3 87
第4章 贪心算法 102
4.1 活动安排问题 103
4.2 贪心算法的基本要素 105
4.3 最优装载 107
4.4 哈夫曼编码 109
4.5 单源最短路径 113
4.6 最小生成树 115
4.7 多机调度问题 120
4.8 贪心算法的理论基础 121
习题4 127
第5章 回溯法 138
5.1 回溯法的算法框架 138
5.2 装载问题 143
5.3 批处理作业调度 150
5.4 符号三角形问题 152
5.5 n后问题 154
5.6 0-1背包问题 158
5.7 最大团问题 161
5.8 图的m着色问题 163
5.9 旅行售货员问题 166
5.10 圆排列问题 167
5.11 电路板排列问题 170
5.12 连续邮资问题 173
5.13 回溯法的效率分析 175
习题5 178
第6章 分支限界法 191
6.1 分支限界法的基本思想 191
6.2 单源最短路径问题 194
6.3 装载问题 196
6.4 布线问题 203
6.5 0-1背包问题 206
6.6 最大团问题 211
6.7 旅行售货员问题 213
6.8 电路板排列问题 217
6.9 批处理作业调度 219
习题6 224
第7章 随机化算法 235
7.1 随机数 236
7.2 数值随机化算法 238
7.2.1 用随机投点法计算π值 238
7.2.2 计算定积分 239
7.2.3 解非线性方程组 241
7.3 舍伍德(Sherwood)算法 243
7.3.1 线性时间选择算法 243
7.3.2 搜索有序表 245
7.3.3 跳跃表 248
7.4 拉斯维加斯(Las Vegas)算法 255
7.4.1 n后问题 255
7.4.2 整数因子分解 259
7.5 蒙特卡罗(Monte Carlo)算法 261
7.5.1 蒙特卡罗算法的基本思想 261
7.5.2 主元素问题 263
7.5.3 素数测试 264
习题7 267
第8章 线性规划与网络流 274
8.1 线性规划问题和单纯形算法 274
8.1.1 线性规划问题及其表示 274
8.1.2 线性规划基本定理 275
8.1.3 约束标准型线性规划问题的单纯形算法 275
8.1.4 将一般问题转化为约束标准型 279
8.1.5 一般线性规划问题的2阶段单纯形算法 279
8.1.6 单纯形算法的描述和实现 280
8.1.7 退化情形的处理 286
8.1.8 应用举例 286
8.2 最大网络流问题 288
8.2.1 网络与流 288
8.2.2 增广路算法 293
8.2.3 预流推进算法 297
8.2.4 最大流问题的变换与应用 301
8.3 最小费用流问题 309
8.3.1 最小费用流 309
8.3.2 消圈算法 309
8.3.3 最小费用路算法 312
8.3.4 网络单纯形算法 314
8.3.5 最小费用流问题的变换与应用 321
习题8 329
第9章 NP完全性理论与近似算法 343
9.1 计算模型 343
9.1.1 随机存取机RAM 343
9.1.2 随机存取存储程序机RASP 346
9.1.3 图灵机 347
9.2 P类与NP类问题 348
9.2.1 非确定性图灵机 348
9.2.2 P类与NP类语言 349
9.2.3 多项式时间验证 350
9.3 NP完全问题 351
9.3.1 多项式时间变换 351
9.3.2 一些典型的NP完全问题 352
9.4 NP完全问题的近似算法 353
9.4.1 近似算法的性能 354
9.4.2 顶点覆盖问题的近似算法 355
9.4.3 旅行售货员问题近似算法 356
9.4.4 集合覆盖问题的近似算法 359
9.4.5 子集和问题的近似算法 361
习题9 365
附录A C++概要 372
1.变量、指针和引用 372
2.函数与参数传递 373
3.C++的类 374
4.类的对象 374
5.构造函数与析构函数 375
6.运算符重载 375
7.友元函数 375
8.内联函数 376
9.结构 376
10.联合 376
11.异常 376
12.模板 377
13.动态存储分配 379
参考文献 381