编辑推荐
本书分为七个部分,每部分由几章组成,每章包含具有共同特征或相同主题的那些设计技术。第一部分是为本书的余下部分做准备的,它同时提供了后面章节需要的背景材料。第二部分致力于递归设计技术的研究,它是极其重要的,因为它强调了计算机科学领域中的一个基本工具: 递归。第三部分涉及了两个直观和自然的设计技术:贪心算法和图的遍历。第四部分是有关研究“对于一个给定问题,或者对这个问题提供一个有效算法,或者证明它是难解的”所需要的那些技术。这部分包含了NP完全性、计算复杂性和下界。在第五部分,表述了对付困难问题的技术,这些技术包括回溯、随机化以及在合理的时间内寻找合理的可接受的近似解。在第六部分利用两个受到高度关注的重要问题: 寻找最大网络流和在无向图中寻找最大匹配来介绍迭代改进的概念,以得出越来越有效的算法。最后,第七部分是一个相对较新的领域——计算几何的导论。在第18章中,用这个领域中的重要问题为例子,叙述了广泛使用的几何扫描技术。在第19章中,论述了Voronoi图解这个通用的工具,并且讲述了它的一些应用。
内容简介
书籍 计算机书籍
本书是国际著名算法专家李德财教授主编的系列丛书Lecture Notes Series on Computing中的一本。本书涵盖了绝大多数算法设计中的一般技术,在表达每一种技术时,阐述它的应用背景,注意用与其他技术比较的方法说明它的特征,并提供大量实际问题的例子。本书同时也强调了对每一种算法的详细的复杂性分析。全书分七部分19章,从算法设计和算法分析的基本概念和方法入手,先后介绍了递归技术、分治、动态规划、贪心算法、图的遍历等技术,对NP完全问题进行了基本但清楚的讨论。对概率算法、近似算法和计算几何这些近年来发展迅猛的领域也用一定的篇幅讲述了基本内容。书中每章后都附有大量的练习题,有利于读者对书中内容的理解和应用。[BR>本书结构简明,内容丰富,适合于作为计算机学科及相关学科算法课程的教材和参考书,尤其适宜于学过数据结构和离散数学课程之后的算法课程教材。同时也可作为从事算法研究的一本好的入门书。
作译者
作者:(沙特)阿苏外耶(M.H.Alsuwaiyel)译者:吴伟昶方世昌等注释解说词:朱洪
目录
第一部分 基本概念和算法导引[BR]第1章 算法分析基本概念[BR] 1.1 引言[BR] 1.2 历史背景[BR] 1.3 二分搜索[BR] 1.4 合并两个已排序的表[BR] 1.5 选择排序[BR] 1.6 插入排序[BR] 1.7 自底向上合并排序[BR] 1.8 时间复杂性[BR] 1.9 空间复杂性[BR] 1.10 最优算法[BR] 1.11 如何估计算法运行时间[BR] 1.12 最坏情况和平均情况的分析[BR] 1.13 平摊分析[BR] 1.14 输入大小和问题实例[BR] 1.15 练习[BR] 1.16 参考注释[BR]第2章 数学预备知识[BR] 2.1 集合、关系和函数[BR] 2.2 证明方法[BR] 2.3 对数[BR] 2.4 底函数和顶函数[BR] 2.5 阶乘和二项式系数[BR] 2.6 鸽巢原理[BR] 2.7 和式[BR] 2.8 递推关系[BR] 2.9 练习[BR]第3章 数据结构[BR] 3.1 引言[BR] 3.2 链表[BR] 3.3 图[BR] 3.4 树[BR] 3.5 根树[BR] 3.6 二叉树[BR] 3.7 练习[BR] 3.8 参考注释[BR]第4章 堆和不相交集数据结构[BR] 4.1 引言[BR] 4.2 堆[BR] 4.3 不相交集数据结构[BR] 4.4 练习[BR] 4.5 参考注释[BR]第二部分 基于递归的技术[BR]第5章 归纳法[BR] 5.1 引言[BR] 5.2 两个简单的例子[BR] 5.3 基数排序[BR] 5.4 整数幂[BR] 5.5 多项式求值(Horner规则)[BR] 5.6 生成排列[BR] 5.7 寻找多数元素[BR] 5.8 练习[BR] 5.9 参考注释[BR]第6章 分治[BR] 6.1 引言[BR] 6.2 二分搜索[BR] 6.3 合并排序[BR] 6.4 分治范式[BR] 6.5 寻找中项和第k小元素[BR] 6.6 快速排序[BR] 6.7 大整数乘法[BR] 6.8 矩阵乘法[BR] 6.9 最近点对问题[BR] 6.10 练习[BR] 6.11 参考注释[BR]第7章 动态规划[BR] 7.1 引言[BR] 7.2 最长公共子序列问题[BR] 7.3 矩阵链相乘[BR] 7.4 动态规划范式[BR] 7.5 所有点对的最短路径问题[BR] 7.6 背包问题[BR] 7.7 练习[BR] 7.8 参考注释[BR]第三部分 最先割技术[BR]第8章 贪心算法[BR] 8.1 引言[BR] 8.2 最短路径问题[BR] 8.3 最小耗费生成树(Kruskal算法)[BR] 8.4 最小耗费生成树(Prim算法)[BR] 8.5 文件压缩[BR] 8.6 练习[BR] 8.7 参考注释[BR]第9章 图的遍历[BR] 9.1 引言[BR] 9.2 深度优先搜索[BR] 9.3 深度优先搜索的应用[BR] 9.4 广度优先搜索[BR] 9.5 广度优先搜索的应用[BR] 9.6 练习[BR] 9.7 参考注释第四部分问题的复杂性[BR]第10章 NP完全问题[BR] 10.1 引言[BR] 10.2 P类[BR] 10.3 NP类[BR] 10.4 NP完全问题[BR] 10.5 co-NP类[BR] 10.6 NPI类[BR] 10.7 四种类之间的关系[BR] 10.8 练习[BR] 10.9 参考注释[BR]第11章 计算复杂性引论[BR] 11.1 引言[BR] 11.2 计算模型:图灵机[BR] 11.3 k带图灵机和时间复杂性[BR] 11.4 离线图灵机和空间复杂性[BR] 11.5 带压缩和线性增速[BR] 11.6 复杂性类之间的关系[BR] 11.7 归约[BR] 11.8 完全性[BR] 11.9 多项式时间层次[BR] 11.10 练习[BR] 11.11 参考注释[BR]第12章 下界[BR] 12.1 引言[BR] 12.2 平凡下界[BR] 12.3 决策树模型[BR] 12.4 代数决策树模型[BR] 12.5 线性时间归约[BR] 12.6 练习[BR] 12.7 参考注释第五部分克服困难性[BR]第13章 回溯法[BR] 13.1 引言[BR] 13.2 3着色问题[BR] 13.3 8皇后问题[BR] 13.4 一般回溯方法[BR] 13.5 分支限界法[BR] 13.6 练习[BR] 13.7 参考注释[BR]第14章 随机算法[BR] 14.1 引言[BR] 14.2 Las Vegas和Monte Carlo算法[BR] 14.3 随机化快速排序[BR] 14.4 随机化的选择算法[BR] 14.5 测试串的相等性[BR] 14.6 模式匹配[BR] 14.7 随机取样[BR] 14.8 素数性测试[BR] 14.9 练习[BR] 14.10 参考注释[BR]第15章 近似算法[BR] 15.1 引言[BR] 15.2 基本定义[BR] 15.3 差界[BR] 15.4 相对性能界[BR] 15.5 多项式近似方案[BR] 15.6 完全多项式近似方案[BR] 15.7 练习[BR] 15.8 参考注释第六部分域指定问题的迭代改进[BR]第16章 网络流[BR] 16.1 引言[BR] 16.2 预备知识[BR] 16.3 Ford-Fulkerson方法[BR] 16.4 最大容量增值[BR] 16.5 最短路径增值[BR] 16.6 Dinic算法[BR] 16.7 MPM算法[BR] 16.8 练习[BR] 16.9 参考注释[BR]第17章 匹配[BR] 17.1 引言[BR] 17.2 预备知识[BR] 17.3 网络流方法[BR] 17.4 二分图的匈牙利树方法[BR] 17.5 一般图中的最大匹配[BR] 17.6 二分图的On2.5算法[BR] 17.7 练习[BR] 17.8 参考注释第七部分计算几何技术[BR]第18 章几何扫描[BR] 18.1 引言[BR] 18.2 几何预备知识[BR] 18.3 计算线段的交点[BR] 18.4 凸包问题[BR] 18.5 计算点集的直径[BR] 18.6 练习[BR] 18.7 参考注释[BR]第19章 Voronoi图解[BR] 19.1 引言[BR] 19.2 最近点Voronoi图解[BR] 19.3 Voronoi图解的应用[BR] 19.4 最远点Voronoi图解[BR] 19.5 最远点Voronoi图解的应用[BR] 19.6 练习[BR] 19.7 参考注释参考文献