第1章 绪论
1.1 算法的时间复杂性
1.2 算法的空间复杂性
1.3 两个算法的分析实例
1.4 算法设计技术
1.4.1 分治方法
1.4.2 回溯法
1.4.3 贪心法
1.4.4 动态规划法
1.4.5 分支限界法
1.4.6 递归方程解的展开式
习题
第2章 排序算法
2.1 插入算法
2.1.1 直接插入排序
2.1.2 折半插入排序
2.1.3 希尔排序
2.2 选择排序
2.2.1 直接选择排序
2.2.2 堆排序
2.3 交换排序
2.3.1 冒泡排序
2.3.2 快速排序
2.4 归并排序
2.5 基数排序
2.6 外部排序
2.6.1 归并排序
2.6.2 多步归并算法
2.7 各种内部排序方法的比较讨论
习题
第3章 查找树
3.1 二分查找树
3.2 2—3—4树
3.3 红黑树
3.4 8树
习题
第4章 图的算法
4.1 基本概念
4.2 图的表示方法
4.3 图的遍历
4.4 所有点对之间的最短路径
4.5 最小生成树
习题
第5章 串匹配
5.1 简单的字符串匹配算法
5.2 Knuth—Morris—Pratt(KMP)字符串匹配
5.3 BM算法
5.4 RK算法
习题
第6章 分治算法
6.1 二分搜索
6.2 求最大元和最小元
6.3 大整数乘法
6.4 矩阵乘法算法
6.5 矩阵乘积的Winograd算法
习题
第7章 贪心算法
7.1 背包问题
7.2 带时限的作业排序
7.3 单源最短路径问题
7.4 最小生成树问题
7.5 Dijkstra各点之间最短路径的优化算法
习题
第8章 回溯法
8.1 n皇后问题
8.2 图的着色问题
8.3 0—1背包问题
8.4 哈密顿回路
8.5 子集和数
习题
第9章 动态规划法
9.1 最长公共子序列问题
9.2 矩阵连乘问题
9.3 多阶段决策过程最优化问题
9.4 0—1背包问题
9.5 流水线调度问题
习题
第10章 分支限界法
10.1 分支限界的策略
10.2 0-1背包问题
习题
第11章 概率算法
11.l 随机数
11.2 数值概率算法
11.3 蒙特卡罗算法
11.4 拉斯维加斯算法
11.5 舍伍德算法
习题
第12章 几何问题算法
12.1 直线相交问题的算法
12.2 点是否包含在多边形内部
12.3 求凸包问题
习题
第13章 NP完全问题
13.1 不确定算法和不确定图灵机
13.2 NP难度和NP完全问题
13.3 COOK定理
13.4 几个NP完全问题
习题
第14章 密码学算法
14.1 什么是密码
14.2 基本数论
14.3 背包公钥密码
14.4 RSA算法
14.5 数字签名
习题
第15章 近似算法
15.1 任务调度近似算法.
15.2 顶点覆盖问题近似算法
15.3 旅行商问题的近似解
15.4 子集和数问题的近似算法
习题
第16章 并行算法
16.1 并行计算机
16.2 并行算法的基本概念
16.3 并行算法的描述
16.4 SIMD-SM上的非线性方程求根同步并行算法
16.5 SIMD-SM上的同步并行求和算法
16.6 SIMD-CC超立方机器上的同步并行求和算法
16.7 MIMD-SM上的异步并行求和算法
习题
参考文献