《算法导论》中文版(原书第2版)

经典算法教材 Introduction to Algorithms 的中文第二版。CLRS 四位作者经典之作,7大部分35章,全面覆盖算法设计与分析。

基本信息

  • 书名:算法导论(原书第2版)
  • 作者:Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest、Clifford Stein
  • 译者:潘金贵、顾铁成、李成法、叶懋 等
  • 出版社:机械工业出版社
  • 页数:761页
  • 版本特征:第二版(共7大部分、35章),与第三版章节结构有差异
  • 来源说明:扫描版 PDF,带 bbs.theithome.com 论坛水印,前17页为论坛序言文章,非原书内容

第二版 vs 第三版 主要差异

维度第二版(中文版)第三版(英文版)
总章节数35章35章(但内容扩充)
大部分数7大部分8大部分
新增内容(第三版比第二版多)—多线程算法(第27章)、van Emde Boas树(第20章)
章编号差异第27章:排序网络
第28章:矩阵运算
第29章:线性规划
第30章:多项式与FFT
第31章:数论算法
第32章:字符串匹配
第33章:计算几何
第34章:NP完全性
第35章:近似算法
第27章:多线程算法(新增)
后续章节编号相应后移
数据结构部分第18章B树、第19章斐波那契堆、第20章?(待确认,第二版第20章可能是不相交集合)第18章B树、第19章斐波那契堆、第20章van Emde Boas树(新增)、第21章不相交集合
递归式章节第4章:递归式(代换法、递归树、主方法)第4章:分治策略(主方法+主定理更多情形)

注:第三版新增的”多线程算法”和”van Emde Boas树”在第二版中没有。第二版的”排序网络”(第27章)在第三版中移至第27章多线程算法之后的不同位置。

全书结构(7大部分35章)

第一部分 基础知识(第1-5章)

  • 第1章 算法在计算中的作用
    • 1.1 算法
    • 1.2 作为一种技术的算法
  • 第2章 算法入门
    • 2.1 插入排序
    • 2.2 算法分析
    • 2.3 算法设计(分治法)
  • 第3章 函数的增长
    • 3.1 渐近记号(Θ, O, Ω, o, ω)
    • 3.2 标准记号和常用函数
  • 第4章 递归式
    • 4.1 代换法
    • 4.2 递归树方法
    • 4.3 主方法
    • *4.4 主定理的证明
  • 第5章 概率分析和随机算法
    • 5.1 雇用问题
    • 5.2 指示器随机变量
    • 5.3 随机算法
    • *5.4 概率分析的进一步使用(生日悖论、球与盒子、序列、在线雇用问题)

第二部分 排序和顺序统计学(第6-9章)

  • 第6章 堆排序(堆、保持堆性质、建堆、堆排序算法、优先级队列)
  • 第7章 快速排序(描述、性能、随机化版本、分析)
  • 第8章 线性时间排序(下界、计数排序、基数排序、桶排序)
  • 第9章 中位数和顺序统计学(最小最大值、期望线性时间选择、最坏情况线性时间选择)

第三部分 数据结构(第10-14章)

  • 第10章 基本数据结构(栈和队列、链表、指针和对象的实现、有根树的表示)
  • 第11章 散列表(直接寻址、散列表、散列函数、开放寻址法、完全散列)
  • 第12章 二叉搜索树
  • 第13章 红黑树
  • 第14章 数据结构的扩张

第四部分 高级设计和分析技术(第15-17章)

  • 第15章 动态规划
  • 第16章 贪心算法
  • 第17章 摊还分析

第五部分 高级数据结构(第18-21章)

  • 第18章 B树
  • 第19章 斐波那契堆
  • 第20章(待确认具体章名,第二版可能为”二项堆”或结构不同)
  • 第21章 用于不相交集合的数据结构

第六部分 图算法(第22-26章)

  • 第22章 图的基本算法
  • 第23章 最小生成树
  • 第24章 单源最短路径
    • 24.1 Bellman-Ford算法
    • 24.2 有向无回路图中的单源最短路径
    • 24.3 Dijkstra算法
    • 24.4 差分约束与最短路径
    • 24.5 最短路径性质的证明
  • 第25章 每对顶点间的最短路径
    • 25.1 最短路径与矩阵乘法
    • 25.2 Floyd-Warshall算法
    • 25.3 稀疏图上的Johnson算法
  • 第26章 最大流
    • 26.1 流网络
    • 26.2 Ford-Fulkerson方法
    • 26.3 最大二分匹配
    • *26.4 压入与重标记算法
    • *26.5 重标记与前移算法

第七部分 算法研究问题选编(第27-35章)

这是第二版的特色命名,第三版改为”第八部分 算法问题选编”且前置了多线程算法

  • 第27章 排序网络(比较网络、0-1原理、双调排序网络、合并网络、排序网络)
  • 第28章 矩阵运算(矩阵性质、Strassen算法、线性方程组、矩阵求逆、对称正定矩阵与最小二乘)
  • 第29章 线性规划(标准型和松弛型、问题表达、单纯形算法、对偶性、初始基本可行解)
  • 第30章 多项式与快速傅里叶变换(多项式表示、DFT与FFT、有效FFT实现)
  • 第31章 有关数论的算法(初等数论、最大公约数、模运算、模线性方程、中国余数定理、元素的幂、RSA公钥加密、*素数测试、*因子分解)
  • 第32章 字符串匹配(朴素算法、Rabin-Karp、有限自动机、*KMP算法)
  • 第33章 计算几何学(线段性质、相交、凸包、最近点对)
  • 第34章 NP完全性(多项式时间、验证、NP完全性与可归约性、证明方法、NP完全问题:团/顶点覆盖/哈密顿回路/旅行商/子集和)
  • 第35章 近似算法(顶点覆盖、旅行商问题、集合覆盖、随机化和线性规划、子集和)

中英文术语对照表(核心概念)

英文中文(本书译法)
Algorithm算法
Asymptotic notation渐近记号
Θ (Theta)Θ(西塔)
O (Big O)O(大O)
Ω (Omega)Ω(欧米伽)
Divide and conquer分治法
Recurrence递归式
Substitution method代换法
Recursion-tree method递归树方法
Master method主方法
Master theorem主定理
Probabilistic analysis概率分析
Randomized algorithm随机算法
Indicator random variable指示器随机变量
Heap sort堆排序
Priority queue优先级队列
Quick sort快速排序
Counting sort计数排序
Radix sort基数排序
Bucket sort桶排序
Order statistic顺序统计学
Hash table散列表(哈希表)
Open addressing开放寻址法
Perfect hashing完全散列
Binary search tree二叉搜索树
Red-black tree红黑树
Augmenting data structures数据结构的扩张
Dynamic programming动态规划
Greedy algorithm贪心算法
Amortized analysis摊还分析
B-treeB树
Fibonacci heap斐波那契堆
Disjoint set不相交集合
Minimum spanning tree最小生成树
Shortest path最短路径
Bellman-Ford algorithmBellman-Ford算法
Dijkstra algorithmDijkstra算法
Floyd-Warshall algorithmFloyd-Warshall算法
Johnson algorithmJohnson算法
Maximum flow最大流
Ford-Fulkerson methodFord-Fulkerson方法
Bipartite matching二分匹配
Push-relabel压入与重标记
Sorting network排序网络
Bitonic sorter双调排序网络
0-1 principle0-1原理
Strassen algorithmStrassen算法
Linear programming线性规划
Simplex algorithm单纯形算法
Duality对偶性
Fast Fourier Transform (FFT)快速傅里叶变换
Number-theoretic algorithm数论算法
Greatest common divisor (GCD)最大公约数
Modular arithmetic模运算
Chinese remainder theorem中国余数定理
RSARSA公钥加密系统
Primality test素数测试
String matching字符串匹配
Rabin-Karp algorithmRabin-Karp算法
KMP algorithmKMP算法(Knuth-Morris-Pratt)
Computational geometry计算几何学
Convex hull凸包
NP-completenessNP完全性
Polynomial time多项式时间
Reducibility可归约性
Clique团
Vertex cover顶点覆盖
Hamiltonian cycle哈密顿回路
Traveling salesman problem旅行商问题
Subset sum子集和
Approximation algorithm近似算法
Set cover集合覆盖

中文版阅读建议

  1. 与英文版对照使用:中文术语翻译总体规范,但部分术语(如”摊还分析”对应 amortized analysis、“散列表”对应 hash table)在不同文献中有不同译法,建议中英文术语对照记忆
  2. 第二版与第三版的选择:
    • 初学者:第三版内容更新更全,推荐优先
    • 论文/代码引用第二版算法的:可参考第二版章节编号
    • 第二版的”排序网络”一章位置更靠前(第27章),第三版移至更后
  3. 学习路径(推荐):
    • 基础:第1-5章(算法基础+数学工具)
    • 核心:第6-9章(排序)+ 第10-14章(数据结构)
    • 进阶:第15-17章(设计技术)+ 第22-26章(图算法)
    • 高级:第18-21章(高级数据结构)+ 第27-35章(专题)
  4. 学习方法:
    • 每章配合练习(exercises)和思考题(problems)
    • 带 * 的章节为选学/进阶内容
    • 伪代码是核心,务必理解每一步

相关笔记

备注

  • 本笔记基于扫描版中文 PDF 整理,通过目录页 OCR 确认全书结构
  • 部分章节的具体小节标题可能与实际有细微出入,以原书为准
  • 第二版与第三版的差异是本笔记重点,详细算法知识请参考第三版笔记