内容简介:
作者基于丰富的教学经验,开发了一套对算法进行分类的新方法。这套方法站在通用问题求解策略的高度,能对现有的大多数算法都能进行准确分类,从而使本书的读者能够沿着一条清晰的、一致的、连贯的思路来探索算法设计与分析这一迷人领域。本书作为第2版,相对第1版增加了新的习题,还增加了“迭代改进”一章,使得原来的分类方法更加完善。
本书十分适合作为算法设计和分析的基础教材,也适合任何有兴趣探究算法奥秘的读者使用,只要读者具备数据结构和离散数学的知识。
作者简介:
莱维丁是Villanova大学计算科学系的教授。他的论文 A New Road Map of Algorithm Design Techniques:Picking Up Where the Traditional Classification Leaves Off(《算法设计技术新途径:弥补传统分类法的缺憾》)受到业内人士极高的评价。在SIGCSE会议上,作者做过多次关于算法教学的演讲。
目录:
第1章 绪论
1.1 什么是算法
1.2 算法问题求解基础
1.3 重要的问题类型
1.4 基本数据结构
小结
第2章 算法效率分析基础
2.1 分析框架
2.2 渐进符号和基本效率类型
2.3 非递归算法的数学分析
2.4 递归算法的数学分析
2.5 例题:斐波那契数列
2.6 算法的经验分析
2.7 算法可视法
小结
第3章 蛮力法
3.1 选择排序和冒泡排序
3.2 顺序查找和蛮力字符串匹配
3.3 最近对和凸包问题的蛮力算法
3.4 穷举查找
小结
第4章 分治法
4.1 合并排序
4.2 快速排序
4.3 折半查找
4.4 二叉树遍历及其相关特性
4.5 大整数乘法和Strassen矩阵乘法
4.6 用分治法解最近对问题和凸包问题
小结
第5章 减治法
5.1 插入排序
5.2 深度优先查找和广度优先查找
5.3 拓扑排序
5.4 生成组合对象的算法
5.5 减常因子算法
5.6 减可变规模算法
小结
第6章 变治法
6.1 预排序
6.2 高斯消去法
6.3 平衡查找树
6.4 堆和堆排序
6.5 霍纳法则和二进制幂
6.6 问题化简
小结
第7章 时空权衡
7.1 计数排序
7.2 字符串匹配中的输入增强技术
7.3 散列法
7.4 B树
小结
第8章 动态规划
8.1 计算二项式系数
8.2 Warshall算法和Floyd算法
8.3 最优二叉查找树
8.4 背包问题和记忆功能
小结
第9章 贪婪技术
9.1 Prim算法
9.2 Kruskal算法
9.3 Dijkstra算法
9.4 哈大曼树
小结
第10章 迭代改进
10.1 单纯形法
10.2 最大流量问题
10.3 二分图的最大匹配
10.4 稳定婚姻问题
小结
第11章 算法能力的极限
11.2 决策树
11.3 P、NP和NP完全问题
11.4 数值算法的挑战
小结
第12章 超越算法能力的极限
12.1 回溯法
12.2 分支界限法
12.3 NP困难问题的近似算法
12.4 解非线性方程的算法
小结
跋
附录A 算法分析的实用公式
附录B 递推关系简明指南
习题提示
参考文献