1 算法概述 1
1.1 算法在计算机科学中的地位 1
1.2 算法的概念 1
1.3 算法复杂性分析 2
习题 8
2 递归与分治策略 9
2.1 递归的概念 9
2.2 分治策略的基本思想 12
2.3 求最值 14
2.4 二分查找 16
2.5 大整数乘法 17
2.6 Strassen矩阵乘法 27
2.7 合并排序 30
2.8 棋盘覆盖 32
2.9 循环赛日程表 36
2.10 快速排序 38
习题 40
3 动态规划 41
3.1 概述 41
3.2 矩阵连乘问题 43
3.3 动态规划算法的基本要素 48
3.4 最长公共子序列 51
3.5 最大子段和 56
3.6 凸多边形最优三角剖分 61
3.7 0-1背包问题 63
习题 66
4 贪心算法 70
4.1 概述 70
4.2 TSP问题 72
4.3 图着色问题 75
4.4 最小生成树问题 76
4.5 0-1背包问题 82
4.6 活动安排问题 86
4.7 多机调度问题 88
习题 90
5 回溯法 92
5.1 回溯法的算法框架 92
5.2 装载问题 98
5.3 批处理作业调度 101
5.4 符号三角形问题 103
5.5 n-皇后问题 106
5.6 0-1背包问题 110
5.7 最大团问题 115
5.8 图着色问题 119
5.9 旅行商问题 122
习题 125
6 分支限界法 127
6.1 分支限界法的基本思想 127
6.2 装载问题 129
6.3 布线问题 138
6.4 0-1背包问题 142
6.5 最大团问题 147
习题 151
7 概率算法 153
7.1 概述 153
7.2 数值概率算法 153
7.3 舍伍德概率算法 156
7.4 拉斯维加斯型概率算法 160
7.5 蒙特卡罗型概率算法 164
习题 167
参考文献 169