目 录
第1章 算法概述 1
1.1 算法与程序 1
1.2 算法复杂性分析 1
1.3 NP完全性理论 4
算法分析题1 7
算法实现题1 7
第2章 递归与分治策略 11
2.1 递归的概念 11
2.2 分治法的基本思想 16
2.3 二分搜索技术 17
2.4 大整数的乘法 18
2.5 Strassen矩阵乘法 19
2.6 棋盘覆盖 20
2.7 合并排序 22
2.8 快速排序 24
2.9 线性时间选择 26
2.10 *接近点对问题 29
2.11 循环赛日程表 35
算法分析题2 36
算法实现题2 40
第3章 动态规划 46
3.1 矩阵连乘问题 47
3.2 动态规划算法的基本要素 51
3.3 *长公共子序列 54
3.4 *大子段和 57
3.5 凸多边形*优三角剖分 62
3.6 多边形游戏 65
3.7 图像压缩 68
3.8 电路布线 70
3.9 流水作业调度 71
3.10 0-1背包问题 74
3.11 *优二叉搜索树 79
算法分析题3 81
算法实现题3 82
第4章 贪心算法 95
4.1 活动安排问题 95
4.2 贪心算���的基本要素 98
4.3 *优装载 100
4.4 哈夫曼编码 101
4.5 单源*短路径 105
4.6 *小生成树 108
4.7 多机调度问题 111
算法分析题4 113
算法实现题4 113
第5章 回溯法 120
5.1 回溯法的算法框架 120
5.2 装载问题 125
5.3 批处理作业调度 131
5.4 符号三角形问题 133
5.5 n后问题 135
5.6 0-1背包问题 137
5.7 *大团问题 140
5.8 图的m着色问题 142
5.9 旅行售货员问题 144
5.10 圆排列问题 146
5.11 电路板排列问题 148
5.12 连续邮资问题 151
5.13 回溯法的效率分析 153
算法分析题5 155
算法实现题5 156
第6章 分支限界法 167
6.1 分支限界法的基本思想 167
6.2 单源*短路径问题 170
6.3 装载问题 172
6.4 布线问题 178
6.5 0-1背包问题 181
6.6 *大团问题 185
6.7 旅行售货员问题 187
6.8 电路板排列问题 190
6.9 批处理作业调度 193
算法分析题6 197
算法实现题6 198
第7章 随机化算法 207
7.1 随机数 208
7.2 数值随机化算法 209
7.3 舍伍德算法 214
7.4 拉斯维加斯算法 225
7.5 蒙特卡罗算法 231
算法分析题7 236
算法实现题7 239
第8章 线性规划与网络流 243
8.1 线性规划问题和单纯形算法 243
8.2 *大网络流问题 256
8.3 *小费用流问题 274
算法分析题8 292
算法实现题8 293
第9章 串与序列的算法 306
9.1 子串搜索算法 306
9.2 后缀数组与*长公共字串 318
9.3 序列比较算法 328
算法分析题9 336
算法实现题9 338
附录A C++概要 342
参考文献 349