发表于2024-12-25
算法设计与应用 pdf epub mobi txt 电子书 下载
本书全面系统地介绍算法设计和算法应用的各个领域,内容涵盖经典数据结构、经典算法、算法分析方法、算法设计方法以及算法在各个领域的应用,还包含一些高级主题。本书采用应用驱动的方法引入各章内容,内容编排清晰合理,讲解由浅入深。此外,各章都附有巩固练习、创新练习和应用练习三种类型的题目,为读者理解和掌握算法设计和应用提供了很好的素材。
出版者的话
译者序
前言
第1章算法分析
1.1分析算法
1.1.1伪代码
1.1.2随机存取机模型
1.1.3基本操作数目的计算
1.1.4递归算法的分析
1.1.5渐近表示法
1.1.6渐近表示法的重要性
1.2相关数学知识复习
1.2.1求和
1.2.2对数和幂
1.2.3简单的证明技术
1.2.4概率基础
1.3算法分析案例
1.3.1最大子数组问题的第一个解
1.3.2一种改进的求最大子数组算法
1.3.3线性时间的最大子数组算法
1.4平摊分析
1.4.1平摊技术
1.4.2对一个可扩展数组实现的分析
1.5练习
本章注记
第一部分数据结构
第2章基本数据结构
2.1栈和队列
2.1.1栈
2.1.2队列
2.2列表
2.2.1基于索引的列表
2.2.2链表
2.3树
2.3.1树的定义
2.3.2树的遍历
2.3.3二叉树
2.3.4表示树的数据结构
2.4练习
本章注记
第3章二叉搜索树
3.1搜索和更新
3.1.1二叉搜索树的定义
3.1.2二叉搜索树中的搜索
3.1.3二叉搜索树中的插入
3.1.4二叉搜索树中的删除
3.1.5二叉搜索树的性能
3.2范围查询
3.3基于索引的搜索
3.4随机构造二叉搜索树
3.5练习
本章注记
第4章平衡二叉搜索树
4.1秩和旋转
4.2AVL树
4.3红黑树
4.4弱AVL树
4.5伸展树
4.6练习
本章注记
第5章优先队列和堆
5.1优先队列
5.2PQ排序、选择排序和插入排序
5.2.1选择排序
5.2.2插入排序
5.3堆
5.3.1基于数组结构的二叉树
5.3.2堆中的插入
5.3.3堆中的删除
5.4堆排序
5.5扩展优先队列
5.6练习
本章注记
第6章散列表
6.1映射
6.1.1映射的定义
6.1.2查找表
6.2散列函数
6.2.1分量求和
6.2.2多项式求值函数
6.2.3基于表格的散列
6.2.4取模
6.2.5随机线性和多项式函数
6.3碰撞处理与再散列
6.3.1拉链法
6.3.2开放寻址法
6.3.3线性探测
6.3.4平方探测
6.3.5双重散列
6.3.6再散列
6.4布谷鸟散列
6.5通用散列
6.6练习
本章注记
第7章并查集结构
7.1并查集及其应用
7.1.1连通分支
7.1.2迷宫建筑和渗透理论
7.2基于列表的实现
7.3基于树的实现
7.4练习
本章注记
第二部分排序和选择
第8章归并排序和快速排序
8.1归并排序
8.1.1分而治之
8.1.2归并排序和递推方程
8.2快速排序
8.2.1随机快速排序
8.2.2原地快速排序
8.3基于比较的排序的下界
8.4练习
本章注记
第9章快速排序和选择
9.1桶排序和基数排序
9.1.1桶排序
9.1.2基数排序
9.2选择
9.2.1随机快速选择
9.2.2确定性选择
9.3加权中位数
9.4练习
本章注记
第三部分基本技术
第10章贪心法
10.1分份背包问题
10.2任务调度
10.3文本压缩和哈夫曼编码
10.4练习
本章注记
第11章分治法
11.1递推与主定理
11.2整数乘法
11.3矩阵乘法
11.4极大点集问题
11.5练习
本章注记
第12章动态规划
12.1矩阵连乘
12.2通用技术
12.3望远镜调度
12.4博弈策略
12.4.1硬币行
12.4.2概率博弈策略与逆向归纳法
12.5最长公共子序列问题
12.5.1问题定义
12.5.2应用动态规划解LCS问题
12.60-1背包问题
12.7练习
本章注记
第13章图及遍历
13.1图的术语和表示方法
13.1.1图的一些术语
13.1.2图的操作
13.1.3表示图的数据结构
13.2深度优先搜索
13.3广度优先搜索
13.4有向图
13.4.1遍历有向图
13.4.2传递闭包
13.4.3有向DFS和垃圾回收
13.4.4有向无环图
13.5双连通分量
13.6练习
本章注记
第四部分图算法
第14章最短路径
14.1单源最短路径
14.2Dijkstra算法
14.3Bellman�睩ord 算法
14.4有向无环图中的最短路径
14.5所有顶点对之间的最短路径
14.5.1动态规划最短路径算法
14.5.2通过矩阵乘法计算最短路径
14.6练习
本章注记
第15章最小生成树
15.1最小生成树的性质
15.2Kruskal算法
15.3Prim�睯arník算法
15.4Baru�畍ka算法
15.5练习
本章注记
第16章网络流和匹配
16.1流与割
16.1.1割
16.1.2剩余容量和增流路径
16.2最大流算法
16.2.1Ford�睩ulkerson算法
16.2.2Edmonds�睰arp算法
16.3最大二分图匹配
16.4棒球赛的淘汰
16.5最低成本流
16.6练习
本章注记
第五部分计算困难问题
第17章NP完全性
17.1P和NP
17.1.1定义复杂类P和NP
17.1.2一些有趣的NP问题
17.2NP完全性
17.2.1多项式时间归约和NP难度
17.2.2Cook�睱evin 定理
17.2.3如何证明一个问题是NP完全问题
17.3合取范式可满足问题和3可满足问题
17.4顶点覆盖、团和集合覆盖
17.5子集和与背包问题
17.6哈密顿回路和TSP
17.7练习
本章注记
第18章近似算法
18.1几何旅行商问题
18.1.1Metric�睺SP的一个2近似算法
18.1.2Christofides近似算法
18.2覆盖问题的近似
18.2.1顶点覆盖的2近似算法
18.2.2集合覆盖的对数近似
18.3多项式时间近似方法
18.4回溯和分支定界
18.4.1回溯法
18.4.2分支定界法
18.5练习
本章注记
第六部分高级主题
第19章随机算法
19.1随机排列的生成
19.2稳定婚姻和优惠券收集
19.2.1优惠券收集问题分析
19.2.2稳定婚姻问题
19.3最小割
19.3.1收缩边
19.3.2计算最小割
19.3.3更快的算法
19.4寻找素数
19.5切尔诺夫界
19.5.1马尔可夫不等式
19.5.2示性随机变量之和
......
本书全面地介绍了计算机算法和数据结构的设计和分析。书中各章相对独立,所以教师和读者可以自由选择感兴趣的章节。此外,本书内容广泛,既包含了经典的算法,也包含了新兴的算法,具体如下:
�r 渐近分析数学,包括平摊和随机化。
�r 通用算法设计技术,包括贪心法、分治法和动态规划。
�r 数据结构,包括列表、树、堆、搜索树、B树、哈希表、跳跃表、并查集结构和多维树。
�r 算法框架,包括NP完全性、近似算法和外存算法。
�r 基本算法,包括排序、图算法、计算几何、数值算法、密码、快速傅里叶变换(FFT)和线性规划。
应用驱动方法 计算机科学已经进入一个令人兴奋的时代。计算机已经从早期的计算引擎发展到现在的信息处理器,其应用遍布各个领域。此外,互联网的扩展推动了计算机在社会和商业中的新范式和新模式。例如,计算机可以用来存储和检索大规模数据,并且用于许多其他的应用领域,如运动、视频游戏、生物、制药、社交网络、工程和科学。因此,我们认为算法的讲授既要强调其数学分析,也要突出其实际应用。
为了达到这个目的,每章开篇都有该章主题应用的一个简短讨论。这些应用有的来自于主题的实际应用,有的是设想该章主题在实践中的可能应用。这些讨论的意图是为读者阅读各章时提供一定的背景和实际应用动机。除了这些应用的动机外,我们还给出算法的详细伪代码描述和完整的数学分析。事实上,我们认为数学的严谨性有其实际的意义。
写给教师 本书的结构便于教师自由地选择和讲授内容。各章节之间的依存度已经降至很低,以便教师可以按照自己喜欢的顺序授课。此外,依据内容的深度,每章的讲授时间在1~3节课。
课程样例 本书可作为多个课程的教材。例如,可用于算法核心课程的教材,即经典CS7。另外,本书也可以用于高年级本科生或者研究生的数据结构课程、算法课程,或者两学期连续教授这两个课程的教材。为了突出这些选择,下面为这些可能的课程给出教学大纲样例。
算法核心课程(CS7)大纲样例 第1章算法分析 (跳读、略读或复习第2~4章的基本数据结构) �…� 这些内容以及第5章和第6章是数据结构课程的基本内容,也是本课程的先行课。
第5章优先队列和堆 第6章散列表 第7章并查集结构. 第8章归并排序和快速排序 第9章快速排序和选择(如果时间允许) 第10章贪心法 第11章分治法 第12章动态规划 第13章图及遍历 第14章最短路径 第15章最小生成树 第16章网络流和匹配(如果时间允许) 第17章NP完全性 第18章近似算法 如果时间允许,可从第19~26章中选择内容,包括随机算法、计算几何、字符串算法、密码学、快速傅里叶变换(FFT)和线性规划。
高年级本科生或者研究生的数据结构课程大纲样例 第1章算法分析 第2章基本数据结构 第3章二叉搜索树 第4章平衡二叉搜索树 第5章优先队列和堆 第6章散列表 第7章并查集结构 第8章归并排序和快速排序 第13章图及遍历 第14章最短路径 第15章最小生成树 第20章B树和外部存储器 第21章多维搜索 高年级本科生或者研究生的算法课程大纲样例 (跳读、略读或者复习第1~8章) 第9章快速排序和选择 第10章贪心法 第11章分治法 第12章动态规划 第16章网络流和匹配 第17章NP完全性 第18章近似算法 第19章随机算法 第22章计算几何 第23章字符串算法 第24章密码学 第25章快速傅里叶变换 第26章线性规划 这门课程既可以作为一门独立的课程讲授,也可与上面的高级数据结构课程联合讲授。当然,还有其他的选择,在此不再赘述,将这些内容的创意安排留给教师。
三类练习 本书包含了800多个练习,分为三类:
�r 巩固练习,测试对章节内容的理解。
�r 创新练习,测试能否创造性地利用各章的技术方法。
�r 应用练习,测试能否将各章内容应用于实际问题或者设想的问题。
这些练习的分布大致为巩固练习占35%,创新练习占40%,应用练习占25%。
网络增值学习 本书有一个网站:
�眞iley�眂om/college/goodrich/ 这个网站包含了章节内容的附加学习资源,特别为学生提供了以下内容:
�r 本书大部分内容的PDF演示讲义。
�r 某些练习的提示。
对于一些学生来说,有些创新练习和应用练习可能具有挑战性,因此他们会对这些提示感兴趣。
我们也为使用本书作为教材的教师提供了一个教学支持网站,包括下列辅助资源:��
关于本书教辅资源,只有使用本书作为教材的教师才可以申请,需要的教师可向约翰·威立出版公司北京代表处申请。 �r
本书一些练习的解。
�r 本书大部分内容的可编辑PowerPoint演示文稿。
预备知识
本书假定读者具有一定的预备知识。特别是,假定读者有基本的数据结
算法设计与应用 pdf epub mobi txt 电子书 下载