发表于2024-11-13
MIT四大名师联手铸就,影响全球千万程序员的“算法圣经”!国内外千余所高校采用!
相关好书推荐:
更多精彩,点击进入品牌店查阅>>
在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。《算法导论(原书第3版)/计算机科学丛书》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。
《算法导论(原书第3版)/计算机科学丛书》全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,《算法导论(原书第3版)/计算机科学丛书》也是一本案头必备的参考书或工程实践手册。
第3版的主要变化:
·新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。
·修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。
·移除两章很少讲授的内容:二项堆和排序网络。
·修订了动态规划和贪心算法相关内容。
·流网络相关材料现在基于边上的全部流。
·由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。
·修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。
·新增100道练习和28道思考题,还更新并补充了参考文献。
Thomas H. Cormen (托马斯·科尔曼),达特茅斯学院计算机科学系教授、系主任。目前的研究兴趣包括:算法工程、并行计算、具有高延迟的加速计算。他分别于1993年、1986年获得麻省理工学院电子工程和计算机科学博士、硕士学位,师从Charles E. Leiserson教授。由于他在计算机教育领域的突出贡献,Cormen教授荣获2009年ACM杰出教员奖。
Charles E. Leiserson(查尔斯·雷瑟尔森),麻省理工学院计算机科学与电气工程系教授,Margaret MacVicar Faculty Fellow。他目前主持MIT超级计算技术研究组,并是MIT计算机科学和人工智能实验室计算理论研究组的成员。他的研究兴趣集中在并行和分布式计算的理论原理,尤其是与工程现实相关的技术研究。Leiserson教授拥有卡内基·梅隆大学计算机科学博士学位,还是ACM、IEEE和SIAM的会士。
Ronald L. Rivest (罗纳德·李维斯特),现任麻省理工学院电子工程和计算机科学系安德鲁与厄纳·维特尔比(Andrew and Erna Viterbi)教授。他是MIT计算机科学和人工智能实验室的成员,并领导着其中的信息安全和隐私中心。他1977年从斯坦福大学获得计算机博士学位,主要从事密码安全、计算机安全算法的研究。他和Adi Shamir和Len Adleman一起发明了RSA公钥算法,这个算法在信息安全中获得大的突破,这一成果也使他和Shamir、Adleman一起得到2002年ACM图灵奖。他现在担任国家密码学会的负责人。
Clifford Stein(克利福德·斯坦),哥伦比亚大学计算机科学系和工业工程与运筹学系教授,他还是工业工程与运筹学系的系主任。在加入哥伦比亚大学大学之前,他在达特茅斯学院计算机科学系任教9年。Stein教授拥有MIT硕士和博士学位。他的研究兴趣包括:算法的设计与分析,组合优化、运筹学、网络算法、调度、算法工程和生物计算。
★“鉴于数据量的爆炸性增长,和计算应用的多样性,现在比以往更需要有效算法。这本书条理清晰,是一本非常好的算法设计与分析方面的导论性书籍。每章前半部分介绍了讲授和学习算法的有效方法,后半部分为更专业的读者和求知欲强的学生提供了更引人入胜的资料来讨论这个迷人领域的各种可能性和挑战。”
——Shang-Hua Teng(腾尚华),南加州大学维特比工学院计算机系Seeley G. Mudd 教授
★“本书是算法领域的一部经典著作,书中系统、全面地介绍了现代算法:从较快算法和数据结构到用于看似难以解决问题的多项式时间算法;从图论中的经典算法到用于字符匹配、计算集合和数论的特殊算法。本书第3版尤其增加了两章专门讨论van Emde Boas树(有用的数据结构之一)和多线程算法(日益重要的一个主题)。”
——Daniel Spielman,耶鲁大学计算机科学和应用数学Henry Ford II教授
出版者的话
译者序
前言
第一部分 基础知识
第1章 算法在计算中的作用
1.1 算法
1.2 作为一种技术的算法
思考题
本章注记
第2章 算法基础
2.1 插入排序
2.2 分析算法
2.3 设计算法
2.3.1 分治法
2.3.2 分析分治算法
思考题
本章注记
第3章 函数的增长
3.1 渐近记号
3.2 标准记号与常用函数
思考题
本章注记
第4章 分治策略
4.1 最大子数组问题
4.2 矩阵乘法的Strassen算法
4.3 用代入法求解递归式
4.4 用递归树方法求解递归式
4.5 用主方法求解递归式
4.6 证明主定理
4.6.1 对b的幂证明主定理
4.6.2 向下取整和向上取整
思考题
本章注记
第5章 概率分析和随机算法
5.1 雇用问题
5.2 指示器随机变量
5.3 随机算法
5.4 概率分析和指示器随机变量的进一步使用
5.4.1 生日悖论
5.4.2 球与箱子
5.4.3 特征序列
5.4.4 在线雇用问题
思考题
本章注记
第二部分 排序和顺序统计量
第6章 堆排序
6.1 堆
6.2 维护堆的性质
6.3 建堆
6.4 堆排序算法
6.5 优先队列
思考题
本章注记
第7章 快速排序
7.1 快速排序的描述
7.2 快速排序的性能
7.3 快速排序的随机化版本
7.4 快速排序分析
7.4.1 最坏情况分析
7.4.2 期望运行时间
思考题
本章注记
第8章 线性时间排序
8.1 排序算法的下界
8.2 计数排序
8.3 基数排序
8.4 桶排序
思考题
本章注记
第9章 中位数和顺序统计量
9.1 最小值和最大值
9.2 期望为线性时间的选择算法
9.3 最坏情况为线性时间的选择算法
思考题
本章注记
第三部分 数据结构
第10章 基本数据结构
10.1 栈和队列
10.2 链表
10.3 指针和对象的实现
10.4 有根树的表示
思考题
本章注记
第11章 散列表
11.1 直接寻址表
11.2 散列表
11.3 散列函数
11.3.1 除法散列法
11.3.2 乘法散列法
11.3.3 全域散列法
11.4 开放寻址法
11.5 完全散列
思考题
本章注记
第12章 二叉搜索树
12.1 什么是二叉搜索树
12.2 查询二叉搜索树
12.3 插入和删除
12.4 随机构建二叉搜索树
思考题
本章注记
第13章 红黑树
13.1 红黑树的性质
13.2 旋转
13.3 插入
13.4 删除
思考题
本章注记
第14章 数据结构的扩张
14.1 动态顺序统计
14.2 如何扩张数据结构
14.3 区间树
思考题
本章注记
第四部分 高级设计和分析技术
第15章 动态规划
15.1 钢条切割
15.2 矩阵链乘法
15.3 动态规划原理
15.4 最长公共子序列
15.5 最优二叉搜索树
思考题
本章注记
第16章 贪心算法
16.1 活动选择问题
16.2 贪心算法原理
16.3 赫夫曼编码
16.4 拟阵和贪心算法
16.5 用拟阵求解任务调度问题
思考题
本章注记
第17章 摊还分析
17.1 聚合分析
17.2 核算法
17.3 势能法
17.4 动态表
17.4.1 表扩张
17.4.2 表扩张和收缩
思考题
本章注记
第五部分 高级数据结构
第18章 B树
18.1 B树的定义
18.2 B树上的基本操作
18.3 从B树中删除关键字
思考题
本章注记
第19章 斐波那契堆
19.1 斐波那契堆结构
19.2 可合并堆操作
19.3 关键字减值和删除一个结点
19.4 最大度数的界
思考题
本章注记
第20章 van Emde Boas树
20.1 基本方法
20.2 递归结构
20.2.1 原型van Emde Boas结构
20.2.2 原型van Emde Boas结构上的操作
20.3 van Emde Boas树及其操作
20.3.1 van Emde Boas树
20.3.2 van Emde Boas树的操作
思考题
本章注记
第21章 用于不相交集合的数据结构
21.1 不相交集合的操作
21.2 不相交集合的链表表示
21.3 不相交集合森林
*21.4 带路径压缩的按秩合并的分析
思考题
本章注记
第六部分 图算法
第22章 基本的图算法
22.1 图的表示
22.2 广度优先搜索
22.3 深度优先搜索
22.4 拓扑排序
22.5 强连通分量
思考题
本章注记
第23章 最小生成树
23.1 最小生成树的形成
23.2 Kruskal算法和Prim算法
思考题
本章注记
第24章 单源最短路径
24.1 Bellman-Ford算法
24.2 有向无环图中的单源最短路径问题
24.3 Dijkstra算法
24.4 差分约束和最短路径
24.5 最短路径性质的证明
思考题
本章注记
第25章 所有结点对的最短路径问题
25.1 最短路径和矩阵乘法
25.2 Floyd�瞁arshall算法
25.3 用于稀疏图的Johnson算法
思考题
本章注记
第26章 最大流
26.1 流网络
26.2 FordFulkerson方法
26.3 最大二分匹配
26.4 推送重贴标签算法
26.5 前置重贴标签算法
思考题
本章注记
第七部分 算法问题选编
第27章 多线程算法
27.1 动态多线程基础
27.2 多线程矩阵乘法
27.3 多线程归并排序
思考题
本章注记
第28章 矩阵运算
28.1 求解线性方程组
28.2 矩阵求逆
28.3 对称正定矩阵和最小二乘逼近
思考题
本章注记
第29章 线性规划
29.1 标准型和松弛型
29.2 将问题表达为线性规划
29.3 单纯形算法
29.4 对偶性
29.5 初始基本可行解
思考题
本章注记
第30章 多项式与快速傅里叶变换
30.1 多项式的表示
30.2 DFT与FFT
30.3 高效FFT实现
思考题
本章注记
第31章 数论算法
31.1 基础数论概念
31.2 最大公约数
31.3 模运算
31.4 求解模线性方程
31.5 中国余数定理
31.6 元素的幂
31.7 RSA公钥加密系统
31.8 素数的测试
31.9 整数的因子分解
思考题
本章注记
第32章 字符串匹配
32.1 朴素字符串匹配算法
32.2 RabinKarp算法
32.3 利用有限自动机进行字符串匹配
32.4 Knuth-Morris-Pratt算法
思考题
本章注记
第33章 计算几何学
33.1 线段的性质
33.2 确定任意一对线段是否相交
33.3 寻找凸包
33.4 寻找最近点对
思考题
本章注记
第34章 NP完全性
34.1 多项式时间
34.2 多项式时间的验证
34.3 NP完全性与可归约性
34.4 NP完全性的证明
34.5 NP完全问题
34.5.1 团问题
34.5.2 顶点覆盖问题
34.5.3 哈密顿回路问题
34.5.4 旅行商问题
34.5.5 子集和问题
思考题
本章注记
第35章 近似算法
35.1 顶点覆盖问题
35.2 旅行商问题
35.2.1 满足三角不等式的旅行商问题
35.2.2 一般旅行商问题
35.3 集合覆盖问题
35.4 随机化和线性规划
35.5 子集和问题
思考题
本章注记
第八部分 附录:数学基础知识
附录A 求和
A.1 求和公式及其性质
A.2 确定求和时间的界
思考题
附录注记
附录B 集合等离散数学内容
B.1 集合
B.2 关系
B.3 函数
B.4 图
B.5 树
B.5.1 自由树
B.5.2 有根树和有序树
B.5.3 二叉树和位置树
思考题
附录注记
附录C 计数与概率
C.1 计数
C.2 概率
C.3 离散随机变量
C.4 几何分布与二项分布
*C.5 二项分布的尾部
思考题
附录注记
附录D 矩阵
D.1 矩阵与矩阵运算
D.2 矩阵基本性质
思考题
附录注记
参考文献
索引
证明 每个结点的秩从0开始,并且只有执行了LINK操作,它才会增加。因为最多有n—1个UNION操作,所以同样最多有n—1个LINK操作。因为每个LINK操作或者不改变任何的秩,或者将某结点的秩加1,所以所有的秩最大为n—1。
引理21.6提供了一个关于结点秩的较弱的界。事实上,每个结点的秩最大为(lgn)(见练习21.4—2)。然而,引理21.6的这个较松的界已足够满足我们的要求。
时间界的证明 我们将利用摊还分析中的势方法(见17.3节)来证明O(ma(n))的时间界。在进行摊还分析时,为了方便起见,我们假设不调用UNION操作,而是调用LINK操作。也就是说,因为LINK过程的参数是指向两个根的指针,故我们独立使用相应的FIND—SET操作。下面的引理说明即使因调用UNION而导致额外的FIND—SET操作,其渐近运行时间仍然保持不变。
……
在计算机出现之前,就有了算法。现在有了计算机,就需要更多的算法,算法是计算的核心。
本书提供了对当代计算机算法研究的一个全面、综合的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。我们力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。
书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了244幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。
本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,所以,本书也可以供专业技术人员自学之用。
本书是第3版。在这个版本里,我们对全书进行了更新,包括新增了若干章、修订了伪代码等。
致使用本书的教师
本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。
教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;用于研究生的课程中,则可以完整地讲授每一章。
全书包含957道练习和158道思考题。每一节结束时给出练习,每一章结束时给出思考题。练习一般比较短,用于检查学生对书中内容的基本掌握情况。有一些是简单的自查性练习,有一些则要更充实,可以作为家庭作业布置给学生。每一章后的思考题都是一些叙述较为详细的实例研究,它们常常会介绍一些新的知识。一般来说,这些思考题都会包含几个小问题,引导学生逐步得到问题的解。
鉴于本书前几版使用的反馈,我们在本书配套网站上公布了其中一些练习和思考题的答案(但不是全部)。我们会定期更新这些答案,因此需要教师每次授课前都到这个网站上来查看。
在那些不太适合本科生、更适合研究生的章节和练习前面,都加上了星号(�常�。带星号的章节也不一定就比不带星号的更难,但可能要求了解更多的数学知识。类似地,带星号的练习可能要求有更好的数学背景或创造力。
致使用本书的学生
希望本教材能为学生们提供关于算法这一领域的有趣介绍。我们力求使书中给出的每一个算法都易于理解和有趣。为了在同学们遇到不熟悉或比较困难的算法时提供帮助,我们逐个步骤地描述每一个算法。此外,为了便于大家理解书中对算法的分析,对于其中所需的数学知识,我们给出了详细的解释。如果对某一主题已经有所了解,会发现根据书中各章的编排顺序,可以跳过一些介绍性的小节,直接阅读更高级的内容。
本书是一本大部头著作,读者所修的课程可能只讲授其中的一部分。我们试图使它能成为一本现在对读者有用的教材,将来在读者的职业生涯中,也能成为一本案头的数学参考书或工程实践手册。
阅读本书需要哪些预备知识呢·
读者需要有一些程序设计方面的经验,尤其需要理解递归过程和简单的数据结构,如数组和链表。
读者应该能较为熟练地利用数学归纳法进行证
算法导论(原书第3版)/计算机科学丛书 [Introduction to Algorithms, third edition] 下载 mobi epub pdf txt 电子书 格式
算法导论(原书第3版)/计算机科学丛书 [Introduction to Algorithms, third edition] 下载 mobi pdf epub txt 电子书 格式 2024
算法导论(原书第3版)/计算机科学丛书 [Introduction to Algorithms, third edition] 下载 mobi epub pdf 电子书活动期间很划算
评分非常经典的书,值得买来看看。
评分618活动买的,比较便宜,崭新的。好久没看实体书了
评分经典 书籍,对于 搞 软件行业,看多了上层 的 架构 和 设计,时不时的 需要 学习一下 计算机 的 底层知识 . . .
评分我英语捉急,但也能大概从英文中看出大意, 同是也百度和谷歌分别翻译了一下,见截图。
评分618活动买的,比较便宜,崭新的。好久没看实体书了
评分还没看,不过这大部头,应该有料!
评分还可以,看起来比较有深度,还能入门
评分印刷质量很棒,内容也好,有高中知识和C语言基础阅读基本无压力,推荐给cs基础不好的人学习。
算法导论(原书第3版)/计算机科学丛书 [Introduction to Algorithms, third edition] mobi epub pdf txt 电子书 格式下载 2024