第1章 算法基础
1.1 算法 ?
1.1.1 冒泡排序 ?
1.1.2 循环不变式和冒泡排序算法的正确性 ?
1.1.3 伪代码使用约定
1.2 算法分析 ?
1.2.1 冒泡排序算法分析 ?
1.2.2 最坏情况和平均情况分析 ?
1.2.3 增长的数量级
1.3 算法的运行时间 ?
1.3.1 函数增长 ?
1.3.2 渐近表示
习题
第2章 分治法
2.1 递归与递归方程 ?
2.1.1 递归的概念 ?
2.1.2 替换方法 ?
2.1.3 递归树方法 ?
2.1.4 主方法
2.2 分治法 ?
2.2.1 分治法的基本思想 ?
2.2.2 二叉查找算法
2.3 分治法应用实例 ?
2.3.1 找最大值与最小值 ?
2.3.2 Strassen矩阵乘法 ?
2.3.3 整数相乘 ?
2.3.4 归并排序 ?
2.3.5 快速排序 ?
2.3.6 线性时间选择 ?
2.3.7 最近点对问题
习题
第3章 动态规划
3.1 用表代替递归
3.2 -1背包问题
3.3 矩阵链乘问题
3.4 动态规划的基本元素
3.5 备忘录方法
3.6 装配线调度问题
3.7 最长公共子序列
3.8 最优二分检索树
3.9 凸多边形最优三角剖分
习题
第4章 贪心法
4.1 背包问题
4.2 活动选择问题
4.3 贪心算法的基本元素
4.4 哈夫曼编码
4.5 最小生成树算法 ?
4.5.1 最小生成树的基本原理 ?
4.5.2 Kruskal算法 ?
4.5.3 Prim算法 ?
4.5.4 Boruvka算法 ?
4.5.5 比较与改进
4.6 贪心算法的理论基础
4.7 作业调度问题
习题
第5章 回溯法
5.1 回溯法的基本原理
5.2 n-皇后问题
5.3 子集和数问题
5.4 -1背包问题
5.5 着色问题
习题
第6章 分枝限界法
6.1 分枝限界法的基本思想
6.2 -1背包问题
6.3 作业调度问题
习题
第7章 图算法
7.1 图的表示
7.2 广度优先搜索
7.3 Dijkstra算法
7.4 Bellman Ford算法
7.5 Floyd Warshall算法
习题
第8章 NP完全性
8.1 P类问题和NP类问题 ?
8.1.1 复杂类P和复杂类NP ?
8.1.2 NP中的有趣问题
8.2 NP完全性 ?
8.2.1 多项式时间归约和NP难度 ?
8.2.2 Cook定理
8.3 典型的NP完全问题 ?
8.3.1 CNF?3SAT问题和3SAT问题 ?
8.3.2 顶点覆盖问题 ?
8.3.3 团问题和集合覆盖问题 ?
8.3.4 子集和数问题与背包问题 ?
8.3.5 哈密尔顿回路问题和TSP问题
习题
附录A 习题选解
附录B 索引
参考文献