第1章 算法的基本概念
1.1 引言
1.1.1 算法的定义和特征
1.1.2 算法设计的例子,穷举法
1.1.3 算法的复杂性分析
1.2 算法的时间复杂性
1.2.1 算法的输入规模和运行时间的阶
1.2.2 运行时间的上界,O记号
1.2.3 运行时间的下界,Ω记号
1.2.4 运行时间的准确界,Θ记号
1.2.5 复杂性类型和o记号
1.3 算法的时间复杂性分析
1.3.1 循环次数的统计
1.3.2 基本操作频率的统计
1.3.3 计算步的统计
1.3.4 最坏情况和平均情况
1.3.5 最坏情况分析
1.3.6 平均情况分析
1.4 算法的空间复杂性
1.5 最优算法
习题
参考文献
第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 k阶常系数线性齐次递归方程
2.3.2 k阶常系数线性非齐次递归方程
2.4 用递推方法求解递归方程
2.4.1 递推
2.4.2 用递推法求解变系数递归方程
2.4.3 换名
习题
参考文献
第3章 排序问题和离散集合的操作
3.1 合并排序
3.1.1 合并排序算法的实现
3.1.2 合并排序算法的分析
3.2 基于堆的排序
3.2.1 堆
3.2.2 堆的操作
3.2.3 堆的建立
3.2.4 堆的排序
3.3 基数排序
3.3.1 基数排序算法的思想方法
3.3.2 基数排序算法的实现
3.3.3 基数排序算法的分析
3.4 离散集合的操作
3.4.1 离散集合的数据结构
3.4.2 union、find操作及路径压缩
习题
参考文献
第4章 递归和分治
4.1 基于归纳的递归算法
4.1.1 归纳法的思想方法
4.1.2 递归算法的例子
4.1.3 多项式求值的递归算法
4.1.4 排列问题的递归算法
4.1.5 递归算法的讨论
4.2 分治法
4.2.1 分治法引言
4.2.2 分治法的设计原理
4.2.3 快速排序
4.2.4 多项式乘积的分治算法
4.2.5 平面点集最接近点对问题
4.2.6 选择问题
习题
参考文献
第5章 贪婪法
5.1 贪婪法引言
5.1.1 贪婪法的设计思想
5.1.2 贪婪法的例子——货郎担问题
5.2 背包问题
5.2.1 背包问题贪婪算法的实现
5.2.2 背包问题贪婪算法的分析
5.3 单源最短路径问题
5.3.1 解最短路径的狄斯奎诺(Dijkstra)算法
5.3.2 狄斯奎诺算法的实现
5.3.3 狄斯奎诺算法的分析
5.4 最小花费生成树问题
5.4.1 最小花费生成树引言
5.4.2 克鲁斯卡尔(Kruskal)算法
5.4.3 普里姆(Prim)算法
习题
参考文献
第6章 动态规划
……
第7章 回溯 162
第8章 分支与限界 188
第9章 随机算法 218
第10章 图和网络问题 236
第11章 计算几何问题 269
第12章 NP完全问题 287
第13章 计算复杂性 303
第14章 下界 330
第15章 近似算法 340
参考文献